AWS SAM และ CDK สำหรับ Serverless และ IaC

การทำ Deployment อัตโนมัติบน AWS

Dunieski Otano

Amazon Web Services Solutions Architect

ไฟล์ YAML ยาว 2,000 บรรทัด

yaml

  • Lambda + API Gateway ตัวเดียว กลายเป็น YAML ยาว 2,000 บรรทัด
  • ทุก IAM role, log group และ permission ถูกเขียนไว้ครบทุกรายละเอียด
  • พิมพ์ผิดตรงกลาง permission policy
  • SAM และ CDK ย่อทั้งหมดนี้ให้เหลือไม่กี่บรรทัด
การทำ Deployment อัตโนมัติบน AWS

ภาพรวม AWS SAM

sam

  • SAM คือส่วนขยายของ CloudFormation สำหรับ serverless
  • resource type แบบกระชับ: AWS::Serverless::Function, ::Api
  • SAM CLI ทำหน้าที่ build, package และ deploy
  • เทมเพลตแปลงเป็น plain CloudFormation
การทำ Deployment อัตโนมัติบน AWS

ขั้นตอนการทำงานของ SAM

workflow

  • sam init: สร้างโครงโปรเจกต์จากเทมเพลต
  • sam validate: ตรวจสอบเทมเพลตก่อน build
  • sam build: คอมไพล์และแพ็กเกจโค้ด
  • sam deploy: ส่งขึ้น CloudFormation stack
การทำ Deployment อัตโนมัติบน AWS

ภาพรวม AWS CDK

  • เขียน infrastructure ด้วย TypeScript, JavaScript, Python, Java, C#, Go
  • คอมไพล์เป็น CloudFormation ด้วย cdk synth
  • deploy ด้วย cdk deploy; สร้างใหม่ทุกครั้งที่โค้ดเปลี่ยน
  • ใช้แนวคิด stack และ resource เดียวกับ CloudFormation

cdk

การทำ Deployment อัตโนมัติบน AWS

ระดับของ CDK construct

  • L1: ห่อ resource ของ CloudFormation แบบหนึ่งต่อหนึ่ง
  • L2: construct ที่คัดสรรมาพร้อมค่าเริ่มต้นที่เหมาะสม
  • L3: pattern ที่รวมหลาย resource เข้าด้วยกัน
  • ระดับยิ่งสูง = บรรทัดยิ่งน้อย ควบคุมยิ่งน้อย

construct

การทำ Deployment อัตโนมัติบน AWS

เลือกใช้แบบไหนเมื่อไร

  • Raw CloudFormation: ควบคุมได้เต็มที่ เหมาะกับทีม ops
  • SAM: สำหรับแอป serverless ล้วน เร็วที่สุด
  • CDK: infrastructure ซับซ้อน เหมาะกับทีมสายโปรแกรมมิ่ง
  • ทั้งสามแบบ deploy ด้วยวิธี เดียวกัน เบื้องหลัง

each

การทำ Deployment อัตโนมัติบน AWS

ทั้งสามแบบ deploy เป็น CloudFormation

funnel

  • SAM แปลง เป็น CloudFormation
  • CDK synth เป็น CloudFormation
  • stack ที่ได้ใช้ events, drift, change sets ชุดเดียวกัน
  • Rollback ทำงานเหมือนกันไม่ว่าจะใช้ toolkit ใด
การทำ Deployment อัตโนมัติบน AWS

มาฝึกกันเถอะ!

การทำ Deployment อัตโนมัติบน AWS

Preparing Video For Download...