เตรียมพร้อมก่อนลุยโปรเจกต์ AWS CI/CD: รู้จัก Docker และ CodeBuild
สรุปเครื่องมือและขั้นตอนสำคัญ ทั้ง Docker และ AWS CodeBuild ก่อนเริ่มลงมือทำโปรเจกต์ AWS CI/CD จริงในบทความถัดไป

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- เตรียมบัญชี Docker Hub และทำความเข้าใจวิธีการทำงานของ Docker image
- ทำความรู้จัก AWS CodeBuild บริการสร้างและทดสอบแอปพลิเคชันแบบ Fully managed
- ทำความเข้าใจขั้นตอนการทำงานเบื้องหลังของ CodeBuild ตั้งแต่ดาวน์โหลดซอร์สโค้ดจนถึงการสร้าง Docker image
- ความสำคัญของไฟล์ buildspec.yml ในฐานะคู่มือคำสั่งสำหรับ AWS CodeBuild
หลังจากที่เราได้เรียนรู้ว่า AWS CodePipeline เข้ามาช่วยอัตโนมัติกระบวนการส่งมอบซอฟต์แวร์ได้อย่างไรในบทความก่อนหน้า ก่อนที่เราจะเริ่มลงมือสร้าง AWS CI/CD pipeline จริง เรายังจำเป็นต้องทำความรู้จักกับเครื่องมือสำคัญอีกหนึ่งตัวนั่นคือ Docker
ในยุคปัจจุบัน แอปพลิเคชันสมัยใหม่แทบจะไม่ถูก deploy โดยตรงจากซอร์สโค้ดแบบดิบๆ แต่จะถูกแพ็กเกจรวมกันให้อยู่ในรูปของ Docker image ซึ่งช่วยให้ตัวแอปพลิเคชันมีความสามารถในการพกพา (portable) และทำงานได้อย่างสอดคล้องกันไม่ว่าจะรันอยู่บนสภาพแวดล้อมใดก็ตาม
ลองจินตนาการภาพตามว่าคุณกำลังพัฒนาแอปพลิเคชันอยู่บนแล็ปท็อปของตัวเอง แต่พอมีนักพัฒนาคนอื่นดึงโค้ดไปรันบนเครื่องของเขา แอปพลิเคชันนั้นกลับพังไม่เป็นท่า ปัญหานี้มักเกิดจากความแตกต่างของเวอร์ชันไลบรารี สภาพแวดล้อมระบบปฏิบัติการ หรือไฟล์ตั้งค่าที่ไม่ตรงกัน ซึ่ง Docker เข้ามาแก้ปัญหานี้ด้วยการรวมทุกอย่างที่แอปพลิเคชันต้องการไว้ในหน่วยเดียวที่เรียกว่า Docker image ทำให้คุณสามารถแชร์ image นี้ไปให้คนอื่น และมันจะทำงานเหมือนกันทุกประการไม่ว่าจะรันที่ไหนก็ตาม
การใช้ Docker และเครื่องมือประเภท Containerization ถือเป็นหัวใจสำคัญของระบบ DevOps สมยุค ช่วยขจัดปัญหาคลาสสิกที่ว่า 'เครื่องผมรันได้ทำไมเครื่องคุณรันไม่ได้' พร้อมทั้งช่วยให้การจำลองสภาพแวดล้อมระหว่างการพัฒนา การทดสอบ และการใช้งานจริง (Production) เป็นไปในทิศทางเดียวกันอย่างแม่นยำ
นอกจากนี้เรายังจำเป็นต้องสร้างบัญชี Docker Hub ซึ่งทำหน้าที่คล้ายคลึงกับ GitHub แต่เปลี่ยนจากการเก็บซอร์สโค้ดมาเป็นการเก็บ Docker images แทน เมื่อสร้างบัญชีเรียบร้อยแล้ว ก็ถือว่าเราพร้อมสำหรับขั้นตอนต่อไป

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
เมื่อพูดถึงกระบวนการทำงานเบื้องหลัง คำถามสำคัญที่มักตามมาคือใครเป็นคนสร้างแอปพลิเคชัน คำตอบคือ AWS CodeBuild ซึ่งเป็นบริการสร้างและทดสอบแอปพลิเคชันแบบ Fully managed ที่จะทำหน้าที่คอมไพล์และรันเทสต์ให้เราโดยอัตโนมัติทุกครั้งที่มีการพุชโค้ดใหม่ขึ้นไป แทนที่คุณจะต้องมานั่งรันคำสั่ง build บนแล็ปท็อปของตัวเอง CodeBuild จะสร้างสภาพแวดล้อมการสร้างชั่วคราวขึ้นมาบน AWS เพื่อจัดการงานทั้งหมดให้ทันทีโดยที่คุณไม่ต้องคอยดูแลเซิร์ฟเวอร์ด้วยตนเอง
ลำดับการทำงานของระบบจะเริ่มต้นจาก Developer ทำการ Push Code ไปยัง GitHub ส่งต่อให้ AWS CodePipeline สั่งงานไปยัง AWS CodeBuild จากนั้นจะนำผลลัพธ์ไปเก็บไว้ที่ Docker Hub หรือ Amazon ECR ก่อนจะส่งต่อไปยัง AWS CodeDeploy เพื่อนำไปรันบน EC2, ECS หรือ EKS ต่อไป โดยขั้นตอนที่ CodeBuild ทำงานอัตโนมัติจะมีตั้งแต่การดาวน์โหลดซอร์สโค้ด, ติดตั้งดีพอนเดนซี, คอมไพล์แอปพลิเคชัน, รันยูนิตเทสต์, ตรวจสอบคุณภาพโค้ด, สร้าง Docker image และพุช Docker image ขึ้นรีจิสทรี
หัวใจสำคัญชิ้นหนึ่งของ CodeBuild คือไฟล์ buildspec.yml ซึ่งเปรียบเสมือนคู่มือคำสั่งที่บอกให้ AWS รู้ว่าต้องรันคำสั่งอะไรบ้างในช่วงเวลาการสร้าง หากไม่มีไฟล์นี้ CodeBuild ก็จะไม่รู้ว่าต้องทำอะไรต่อ ซึ่งเราจะได้สร้างและเรียนรู้ไฟล์นี้กันในบทความภาคปฏิบัติถัดไป
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น