</>Học Dev
Bài học

Tuần 8 - Ngày 4: CI/CD và DevOps trên AWS

Tuần 8 – Ngày 3

Tuần 8 - Ngày 4: CI/CD và DevOps trên AWS

Tổng quan CI/CD

CI/CDPIPELINESOURCEBUILDTESTDEPLOYMONITORCodeCommitCodeBuildCodeBuildCodeDeployCloudWatchGitHub+Tests+Scans+PipelinesX-RayBitbucketCodePipelineorchestrates

AWS Developer Tools

1. AWS CodeCommit

ManagedGitRepository:FullymanagedsourcecontrolSecure,encryptedIntegrateswithIAMPullrequests,branchesTriggersforautomationBestPractices:-Branchprotectionrules-CodereviewviaPRs-IntegratewithCodeGuruReviewer

2. AWS CodeBuild

CODEBUILDManagedbuildservice:CompilessourcecodeRunstestsProducesartifactsScalesautomaticallyBuildEnvironments:Managedimages(AmazonLinux,Ubuntu,Windows)CustomDockerimagesGPU-enabledbuildsbuildspec.yml:phases:install,pre_build,build,post_buildartifacts:outputfilescache:speedupbuilds

buildspec.yml Example:

version: 0.2
phases:
  install:
    runtime-versions:
      nodejs: 18
  pre_build:
    commands:
      - npm install
  build:
    commands:
      - npm run build
      - npm test
  post_build:
    commands:
      - echo "Build completed"
artifacts:
  files:
    - '**/*'
  base-directory: dist
cache:
  paths:
    - node_modules/**/*

3. AWS CodeDeploy

CODEDEPLOYDeploymentTargets:EC2/On-premisesECS(Blue/Green)Lambda(Trafficshifting)DeploymentStrategies:In-place(EC2)Blue/Green(EC2,ECS)Canary(Lambda:10%,wait,100%)Linear(Lambda:10%everyXminutes)All-at-onceDeploymentConfiguration:-Minimumhealthyhosts-Rollbacksettings-Lifecyclehooks

appspec.yml (EC2):

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html
hooks:
  BeforeInstall:
    - location: scripts/before_install.sh
  AfterInstall:
    - location: scripts/after_install.sh
  ApplicationStart:
    - location: scripts/start.sh
  ValidateService:
    - location: scripts/validate.sh

4. AWS CodePipeline

CODEPIPELINEOrchestrationservice:VisualworkflowdesignerStage-basedexecutionParallelactionsManualapprovalgatesPipelineStructure:SourceBuildTestDeployIntegrations:-GitHub,GitLab,Bitbucket-Jenkins-CloudFormation,CDK-ECS,EKS,Lambda,S3

Deployment Strategies Deep Dive

1. Rolling Deployment

ROLLINGDEPLOYMENTStep1:[v1][v1][v1][v1]Allrunningv1Step2:[v2][v1][v1][v1]FirstbatchupdatedStep3:[v2][v2][v1][v1]SecondbatchupdatedStep4:[v2][v2][v2][v2]Allrunningv2Pros:NoextrainfrastructureCons:Mixedversionsduringdeployment

2. Blue/Green Deployment

BLUE/GREENDEPLOYMENTBLUE(Current)GREEN(New)v1v1v2v2[LoadBalancer]SwitchtrafficStep1:DeploytoGreenStep2:TestGreenStep3:SwitchtrafficBlueGreenStep4:KeepBlueforrollbackPros:Instantrollback,nodowntimeCons:Doubleinfrastructurecostduringdeploy

3. Canary Deployment

CANARYDEPLOYMENTStep1:10%traffictov2,90%tov1[v1][v1][v1][v1][v1][v1][v1][v1][v1]90%[v2]10%Step2:Monitormetrics,errorsStep3:IfOK,graduallyincreaseto100%Step4:Ifissues,rollbackimmediatelyPros:EarlydetectionofissuesCons:Complexrouting,monitoringrequired

Infrastructure as Code

AWS CloudFormation

CLOUDFORMATIONTemplateStackResourcesKeyConcepts:Templates(YAML/JSON)Stacks(resourcecollection)StackSets(multi-account/region)ChangeSets(previewchanges)DriftDetectionBestPractices:UsenestedstacksformodularityParameterizetemplatesUseMappingsforregion-specificvaluesEnableterminationprotection

AWS CDK (Cloud Development Kit)

Defineinfrastructureusingprogramminglanguages:TypeScriptPythonJavaC#GoCDKCloudFormationtemplateResourcesBenefits:-Typesafety-IDEsupport-Reusableconstructs-Testingcapabilities

Terraform on AWS

Multi-cloudIaCtool:HCL(HashiCorpConfigurationLanguage)Statemanagement(local,S3,TerraformCloud)ProviderecosystemModulesforreusabilityAWSProviderfeatures:-AllAWSservicessupported-Importexistingresources-Driftdetection

CodeGuru

CodeGuru Reviewer

AI-poweredcodereview:SecurityvulnerabilitiesPerformanceissuesBestpracticesAWSSDKusageIntegrateswithPRs

CodeGuru Profiler

Applicationperformance:CPUutilizationanalysisMemoryprofilingHeapusageLatencyidentificationCostrecommendations

Exam Scenarios

Scenario 1: Zero-Downtime Deployment

Requirement:DeployupdateswithoutdowntimeSolution:ECSwithBlue/GreenviaCodeDeployALBfortrafficshiftingHealthchecksbeforeswitchAutomaticrollbackonfailure

Scenario 2: Multi-Account Pipeline

Requirement:DeploytoDev,Staging,ProdaccountsSolution:CodePipelineincentralaccountCross-accountIAMrolesManualapprovalbeforeProdCloudFormationStackSets

Scenario 3: Container CI/CD

Requirement:BuildanddeploycontainersSolution:CodeCommitCodeBuild(buildimage)PushtoECRCodeDeploytoECSBlue/GreendeploymentAutomatedrollback

Quick Reference

CI/CDTOOLSELECTIONNeedServiceSourcecontrolCodeCommit,GitHubBuild/TestCodeBuildDeployEC2CodeDeployDeployECSCodeDeploy(Blue/Green)DeployLambdaCodeDeploy(Canary/Linear)DeployK8sArgoCD,FluxOrchestratepipelineCodePipelineIaCCloudFormation,CDK,TerraformMulti-accountdeployStackSets,CodePipelineCodereviewCodeGuruReviewerPerformanceanalysisCodeGuruProfiler

Tài liệu tham khảo chính thức


Tiếp theo: Quiz Tuần 8