AWS Developer Theory
บทความนี้จะสรุปรวมเจ้าเครื่องมือ 4 ตัวที่เป็นตัวช่วยของ Developer ก็คือจะได้ง่ายต่อการอ่านและเห็นภาพรวมในทีเดียว ไม่ต้องอ่านแยกกัน
โดยหลักการณ์แล้วมันก็คือเครื่องมือที่เราใช้ทุกวันเพียงแต่ไปอยู่บน Cloud เช่น
- CodeCommit
code repository เพื่อทํา version control - CodeDeploy
คือ Automate deployment services ของ AWS
การ deploy code โดยแบ่งเป็น In-Place (หยุด application บน instance ถ้าเกิด rollback ต้อง redeploy version เก่าเอง) และ Blue/Green (deploy บน เครื่องใหม่ก่อนแล้วค่อย switch ไปตัวใหม่)
ทีนี้เวลา deploy การที่จะจัดการ deployment เราจะมีสิ่งที่เรียกว่า AppSpec file เพื่อใช้ config และเป็น parameter ที่ใช้ในการ deploy นั้นเอง
- CodePipeline
คือ Fully Managed CI/CD service ของ AWS นั้นเอง ซึ่งมันช่วยให้เราจะทําการ Build/Test/ Deployment แบบอัตโนมัติได้นั้นเอง เหมือน Conductor คุมวง Orchestra นั้นเอง

- CodeBuild
คือ managed CI ที่ช่วยในการ compiles source code, run tests และ ก็ทํา packages เพื่อให้พร้อมใช้ในการ deploy
ซึ่งการที่จะควบคุมการจะ build เราต้องใช้ Buildspec file ที่อยู่ในรูปแบบของ YAML เพื่อ build ออกมาให้ได้แบบที่เราต้องการ (prefix file ด้วย buildspec_xxx.yml)
CodeDeploy — AppSpec File
เจ้า AppSpec จะประกอบด้วย
- version (version ของ file)
- OS (ระบุ OS ที่ใช้)
- files (location ของไฟล์ที่จะใช้ในการ deploy เช่นจะ copy file ไหนมาใช้งาน source-destination)
- hooks
มันคือการทํา Life Cycle hook ในช่วงจังหวะของการ deploy โดยแบ่งออกเป็น BeforeInstall, AfterInstall, ApplicationStart, ValidateService เป็นต้น
โดยปกติแล้วเราจะเอา AppSpec ไว้ใน root folder เหมือนไฟล์ของ EBS เช่นกัน

CodeDeploy — Life Cycle hook diagram
ซึ่งจริงๆแล้ว Life Cycle hook มันขึ้นกับ platform ที่เรา deploy ลงไปด้วย ไม่สามารถเหมารวมได้ เช่น ECS ก็จะมี Life Cycle Hook แบบนึง และ Lambda ก็จะอีกแบบนึง
ทั้งนี้เป็นเพราะ Platform มี Life Cycle ที่ไม่เหมือนกัน เช่น ECS เป็น Container หรือ Lambda เป็น serverless นั้นเอง (ไม่ต้อง Install อะไร)
ตัวอย่างของ ECS Life Cycle Hook ข้างล่างนี้


ตัวอย่างของ Lambda Life Cycle Hook ข้างล่างนี้

