การผสานรวม IaC เข้ากับ CI/CD pipeline

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

Dunieski Otano

Amazon Web Services Solutions Architect

เขียนโค้ดก่อน โครงสร้างพื้นฐานทีหลัง

โค้ดมาก่อน

  • โค้ดดีพลอยผ่าน CodePipeline ส่วนโครงสร้างพื้นฐานอัปเดตด้วยมือ
  • นักพัฒนาปรับสเกล Lambda ทีมปฏิบัติการปรับขนาดคิว SQS
  • ความคลาดเคลื่อนระหว่างโค้ดกับโครงสร้างพื้นฐานทำให้ระบบล่ม
  • เชื่อม CloudFormation เข้ากับไปป์ไลน์เดียวกัน
การทำ Deployment อัตโนมัติบน AWS

CloudFormation ในบทบาทแอ็กชันของไปป์ไลน์

ขั้นตอนในไปป์ไลน์

  • CodePipeline รองรับ CloudFormation deploy action
  • ไปป์ไลน์ส่ง template artifact ไปยังแอ็กชันนี้
  • โหมด: CREATE_UPDATE, DELETE_ONLY, REPLACE_ON_FAILURE, CHANGE_SET_REPLACE / EXECUTE
  • ทำงานควบคู่กับแอ็กชัน source, build และ app-deploy
การทำ Deployment อัตโนมัติบน AWS

ไปป์ไลน์แบบ end-to-end ทั่วไป

ตัวอย่างทั่วไป

  • Source: การ push Git จะทริกเกอร์ไปป์ไลน์
  • Build: สร้าง template และ app artifact
  • Deploy infra: CloudFormation สร้างหรืออัปเดตสแตก
  • Deploy app: CodeDeploy ปล่อยเวอร์ชันใหม่
การทำ Deployment อัตโนมัติบน AWS

การ rollback อัตโนมัติเมื่อสแตกล้มเหลว

  • การอัปเดตที่ล้มเหลวจะ roll back อัตโนมัติ ไปยังสถานะล่าสุดที่ใช้งานได้
  • สเตจของไปป์ไลน์ fail ทำให้สเตจถัดไปหยุดทำงาน
  • การเชื่อมต่อแจ้งเตือนความล้มเหลวจากบทที่ 1 จะทำงานโดยอัตโนมัติ

อัตโนมัติ

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

Nested stack สำหรับ template แบบโมดูล

  • nested stack ประกาศเป็นชนิด AWS::CloudFormation::Stack
  • แยก template ที่มี 2,000 บรรทัดออกเป็น โมดูลที่นำมาใช้ซ้ำได้
  • สแตกหลักส่งพารามิเตอร์และอ่านค่า output
  • แต่ละโมดูลดีพลอยแยกกันภายในสแตกหลัก

การซ้อนสแตก

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

StackSet สำหรับหลายแอคเคาต์หลายภูมิภาค

  • StackSet ดีพลอย template เดียวไปยัง หลายแอคเคาต์และหลายภูมิภาค
  • เหมาะสำหรับ security baseline, guardrail, โครงสร้างพื้นฐานที่ใช้ร่วมกัน
  • เพิ่มหรือลบ stack instance ได้โดยไม่ต้องเขียน template ใหม่
  • จัดการแบบรวมศูนย์ ดีพลอยแบบกระจาย

StackSet

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

เลือกรูปแบบที่เหมาะสม

รูปแบบที่เหมาะสม

  • Single stack: แอปขนาดเล็ก สภาพแวดล้อมเดียว
  • Nested stacks: template ขนาดใหญ่ ส่วนประกอบแบบโมดูล
  • StackSets: template เดียวกัน หลายแอคเคาต์หลายภูมิภาค
  • ทั้งสามแบบทำงานร่วมกับ CodePipeline ได้ดี
การทำ Deployment อัตโนมัติบน AWS

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

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

Preparing Video For Download...