Management & FoundationsSection 095 min read7 questions

Deployment & IaC

CloudFormation, Beanstalk, CodePipeline & SSM

รวมบริการสำหรับ deploy และจัดการ infrastructure บน AWS — ตั้งแต่ Infrastructure as Code (CloudFormation, CDK), PaaS (Elastic Beanstalk), CI/CD pipeline (CodeCommit, CodeBuild, CodeDeploy, CodePipeline) ไปจนถึงการจัดการ fleet ขนาดใหญ่ด้วย Systems Manager (SSM) และ OpsWorks

ในหน้านี้15 sections
  1. 01Why Infrastructure as Code (IaC)?
  2. 02AWS CloudFormation
  3. 03AWS Cloud Development Kit (CDK)
  4. 04AWS Elastic Beanstalk
  5. 05AWS CodeDeploy
  6. 06AWS CodeCommit
  7. 07AWS CodeBuild
  8. 08AWS CodePipeline
  9. 09AWS CodeArtifact
  10. 10AWS CodeStar
  11. 11AWS Cloud9
  12. 12AWS Systems Manager (SSM)
  13. 13AWS OpsWorks
  14. 14Deployment Services Comparison
  15. 15Developer Services Summary
01

Why Infrastructure as Code (IaC)?

การสร้าง infrastructure แบบ manual (คลิกผ่าน Console) มีปัญหาหลายอย่าง: ผิดพลาดง่าย, ไม่มี version control, ยากต่อการสร้างซ้ำ และ review ไม่ได้ — Infrastructure as Code (IaC) คือการเขียน infrastructure เป็น code ที่ repeatable, version-controlled, reviewable และ automate ได้

ปัญหาของ Manual Setup

ต้องคลิกหลายขั้นตอน, error-prone, ไม่มี history, สร้างซ้ำใน region/account อื่นยาก

ข้อดีของ IaC

Repeatable, version control (Git), ทำ code review ได้, automation, ลบ/สร้างใหม่ได้ง่าย — ลด cost และเพิ่ม reliability

02

AWS CloudFormation

CloudFormation คือบริการ IaC ของ AWS — เขียน template แบบ declarative (บอกว่ายากอะไร ไม่ต้องบอกวิธีทำ) รองรับ resource ระดัป AWS เกือบทั้งหมด

ตัวอย่าง: บอก CloudFormation ว่าต้องการอะไร
"ฉันต้องการใช้ Security Group, EC2 instance 2 ตัวที่ใช้ SG นี้,
S3 bucket 1 ลูก, และ ELB 1 ตัวที่ต่อ EC2"

→ CloudFormation จะสร้าง resource ทั้งหมดตามลำดับ dependency ที่ถูกต้อง

Infrastructure as Code

ไม่ต้องสร้าง resource มืออีกต่อไป — review code, version control, ทำตามขั้นตอน software development

Cost

Tag resource ได้ง่าย — รู้ต้นทุน, สร้าง/ลบ dev environment อัตโนมัติ (ลบตอน 5 โมง, สร้างใหม่ตอน 8 โมง)

Productivity

ลบ + สร้างใหม่ได้ง่าย, สร้าง diagram อัตโนมัติ, เขียนแบบ declarative

Don't Reinvent the Wheel

มี template ฟรีจาก community + AWS — leverage docs ได้

Stack Designer

เครื่องมือ visualize resource และความสัมพันธ์ระหว่าง resource ใน stack

รองรับเกือบทั้งหมด

เกือบทุก AWS service รองรับ CloudFormation — หากขาดไปใช้ custom resource workaround ได้

03

AWS Cloud Development Kit (CDK)

AWS CDK คือการเขียน cloud infrastructure ด้วยภาษา programming ที่คุ้นเคย — JavaScript/TypeScript, Python, Java, .NET — แล้ว "compile" เป็น CloudFormation template (JSON/YAML)

  • เขียน IaC ด้วยภาษาที่รู้อยู่แล้ว (ไม่ต้องเรียน YAML/JSON)
  • มี type checking, IDE auto-complete, loop, condition เหมือน code ทั่วไป
  • Deploy infrastructure + application runtime code พร้อมกันได้
  • เหมาะมากสำหรับ Lambda function และ Docker container บน ECS / EKS
04

AWS Elastic Beanstalk

Elastic Beanstalk คือบริการ deploy application บน AWS แบบ developer-centric view — ภายในจริงใช้ EC2, ASG, ELB, RDS แต่รวมไว้ในมุมมอง all-in-one จัดการง่าย — เป็น Platform as a Service (PaaS)

AWS จัดการให้ (Managed)

การ config instance/OS, deployment strategy, capacity provisioning, load balancer, ASG, application health monitoring

Developer รับผิดชอบแค่

Application code เท่านั้น — ไม่ต้องยุ่งกับ infrastructure

3 Architecture Models:

Single Instance

EC2 ตัวเดียว — เหมาะ dev environment

LB + ASG

Load Balancer + Auto Scaling Group — เหมาะ production web app

ASG only

Auto Scaling Group อย่างเดียว — เหมาะ worker / non-web production

Supported Platforms: Go, Java SE, Java with Tomcat, .NET on Windows Server with IIS, Node.js, PHP, Python, Ruby, Single/Multi-Container Docker, และ Custom Platform (advanced)

05

AWS CodeDeploy

CodeDeploy คือบริการ deploy application แบบอัตโนมัติ — รองรับ EC2 และ on-premises servers (hybrid) — เพียงติดตั้ง CodeDeploy Agent บน server ตัวเป้าหมาย

  • รองรับ EC2 + on-premises servers — hybrid service
  • Server ต้องติด CodeDeploy Agent จึงจะสิ่ง deploy ได้
  • ไม่ได้ provision server — แค่ deploy code ลง server ที่มีอยู่แล้วเท่านั้น
06

AWS CodeCommit

CodeCommit คือ source control แบบ Git บน AWS — ทางเลือกแทน GitHub / GitLab / Bitbucket สำหรับองค์กรที่ต้องการเก็บ code ภายใน AWS

  • Source-control hosting — รองรับ Git protocol
  • ร่วมงานได้ง่าย — versioning อัตโนมัติ
  • Fully managed, scalable, HA
  • Private + secure — integrate กับ IAM จำกัด access ได้
  • AWS integration — ต่อไป CodeBuild / CodePipeline ได้ทันที
07

AWS CodeBuild

CodeBuild คือบริการ build code บน cloud — compile → รัน test → สร้าง package (artifact) — พร้อมส่งไป deploy ต่อได้

  • Fully managed — ไม่ต้องดูแล build server เอง
  • Serverless — ไม่มี server provision
  • Scalable + HA + secure
  • Pay-as-you-go — จ่ายเฉพาะเวลาที่ build จริง
08

AWS CodePipeline

CodePipeline คือตัว orchestrate CI/CD pipeline — เชื่อมต่อขั้นตอน: Code → Build → Test → Provision → Deploy

ตัวอย่าง pipeline ทั่วไป
[Source]      → [Build]    → [Test]     → [Deploy]
CodeCommit       CodeBuild      CodeBuild     CodeDeploy
GitHub                                         Beanstalk
                                              CloudFormation
  • Compatible กับ CodeCommit, CodeBuild, CodeDeploy, Elastic Beanstalk, CloudFormation
  • รองรับ 3rd-party เช่น GitHub
  • สามารถใส่ manual approval step ระหว่างขั้นตอนได้
09

AWS CodeArtifact

CodeArtifact คือบริการเก็บ + จัดการ software package + dependency artifact — ใช้แทนการ host artifact server เอง (เช่น Nexus, Artifactory)

  • รองรับ Maven, Gradle (Java)
  • รองรับ npm, yarn (JavaScript)
  • รองรับ twine, pip (Python)
  • รองรับ NuGet (.NET)
10

AWS CodeStar

CodeStar คือ unified UI สำหรับงาน software development — รวม CodeCommit + CodePipeline + CodeBuild + CodeDeploy + Beanstalk + EC2 ไว้ที่เดียว

  • Quick start — setup project CI/CD ได้รวดเร็ว
  • แก้ code บน cloud ได้ผ่าน Cloud9
  • รวม dashboard issue tracking, team collaboration
11

AWS Cloud9

Cloud9 คือ cloud IDE บน browser — เขียน / run / debug code ได้จาก browser โดยไม่ต้องติดตั้งเครื่องมือบน local

  • Browser-based IDE
  • รองรับ real-time collaboration (pair programming)
  • Integrate กับ CodeStar / CodeCommit ได้
12

AWS Systems Manager (SSM)

Systems Manager (SSM) คือชุดเครื่องมือจัดการ EC2 + on-premises servers ขนาด fleet — hybrid service — มีผลิตภัณฑ์ย่อยมากกว่า 10 ตัว

Patch Manager

Automate การ patch OS บน fleet — ตรวจสอบ compliance

Run Command

รัน command ข้าม server หลายตัวพร้อมกัน ไม่ต้อง SSH

Parameter Store

เก็บ config / secret — plain text หรือ encrypted (ผ่าน KMS)

Session Manager

เข้า EC2 ผ่าน browser หรือ CLI โดย ไม่ต้องใช้ SSH และไม่ต้องเปิด port 22

State Manager

บังคับ state ของ instance ให้อยู่ตามที่กำหนด

Inventory

เก็บข้อมูล software / OS / patch ของ fleet

13

AWS OpsWorks

OpsWorks คือ managed Chef + Puppet — เครื่องมือ configuration management automation ยอดอยู่ใน enterprise — ทางเลือกของ SSM

  • Provision AWS resource ได้เฉพาะ (EC2, Database, Load Balancer, EBS)
  • ไม่ได้จัดการ service อื่นๆ นอกเหนือจาก 4 ตัวนี้
  • Hybrid: จัดการ on-premises ได้ด้วย
14

Deployment Services Comparison

ตารางเปรียบเทียบบริการ deployment / management พิจารณาตามสถานการณ์:

CloudFormation

AWS only — IaC สำหรับรีสอร์สทั้งหมด — repeat ข้าม region/account ได้

Elastic Beanstalk

AWS only — PaaS รองรับภาษา / framework จำกัด + Docker — รูปแบบ architecture รู้จักล่วงหน้า

CodeDeploy

Hybrid (AWS + on-prem) — deploy application code ลง server ที่มีอยู่

Systems Manager

Hybrid — จัดการ fleet (patch, run command, parameter, session)

OpsWorks

Hybrid — managed Chef / Puppet — configuration management

15

Developer Services Summary

สรุปบริการสำหรับ developer บน AWS:

CodeCommit

Git source control — เก็บ code repository

CodeBuild

Build + test code — สร้าง artifact

CodeDeploy

Deploy application ลง EC2 / on-prem

CodePipeline

Orchestrate CI/CD — ร้อยขั้นตอนทั้งหมด

CodeArtifact

เก็บ software package / dependency

CodeStar

Unified UI รวมทุกอย่างไว้ที่เดียว

Cloud9

Cloud IDE บน browser

CDK

IaC ด้วย programming language → CloudFormation

ทดสอบ

คำถามทบทวน

7 ข้อ — เลือกคำตอบเพื่อดูเฉลยและคำอธิบาย

ข้อ 1 / 7คะแนน 0

AWS CloudFormation คือบริการลักษณะใด?