Deployment (การ Deploy)
ไมโครเซอร์วิส โดยปกติจะถูก deploy เป็น process หนึ่ง process นี้สามารถถูก deploy ลงบนเครื่องจริง virtual machine, container หรือแพลตฟอร์ม FaaS ในอุดมคติ เราต้องการให้ไมโครเซอร์วิสแยกตัวจากกันให้มากที่สุดเท่าที่จะเป็นไปได้ในสภาพแวดล้อมที่ deploy จริง เราไม่ต้องการสถานการณ์ที่ไมโครเซอร์วิสหนึ่งใช้ทรัพยากรคอมพิวเตอร์มากจนกระทบไมโครเซอร์วิสตัวอื่น โดยทั่วไปนี่หมายความว่าเราต้องการให้ไมโครเซอร์วิสแต่ละตัวใช้ระบบปฏิบัติการและชุดทรัพยากรคอมพิวเตอร์ของตัวเองที่แยกออกมาต่างหาก Container มีประสิทธิภาพเป็นพิเศษในการให้แต่ละ instance ของไมโครเซอร์วิสมีชุดทรัพยากรของตัวเองที่แยกออกมา ทำให้มันเป็นตัวเลือกที่ดีเยี่ยมสำหรับการ deploy ไมโครเซอร์วิส
Kubernetes มีประโยชน์มากถ้าคุณกำลังมองหาการรัน container workload ข้ามหลายเครื่อง มันไม่ใช่สิ่งที่ผมแนะนำสำหรับไมโครเซอร์วิสไม่กี่ตัว เพราะมันมาพร้อมกับความซับซ้อนของตัวมันเอง ในกรณีที่เป็นไปได้ ให้ใช้ managed Kubernetes cluster เพราะจะช่วยให้คุณหลีกเลี่ยงความซับซ้อนบางส่วนนี้ได้
FaaS เป็นแพตเทิร์นที่กำลังเกิดขึ้นใหม่ซึ่งน่าสนใจในการ deploy โค้ด แทนที่จะต้องระบุว่าคุณต้องการกี่ copy ของอะไรสักอย่าง คุณแค่ส่งโค้ดของคุณไปให้แพลตฟอร์ม FaaS แล้วบอกว่า "เมื่อสิ่งนี้เกิดขึ้น ให้รันโค้ดนี้" สิ่งนี้ ดีจริงๆ จากมุมมองของนักพัฒนา และผมคิดว่าการ abstraction แบบนี้น่าจะเป็นอนาคตของการพัฒนาฝั่งเซิร์ฟเวอร์จำนวนมาก การนำไปใช้ในปัจจุบันก็ยังมีปัญหาอยู่บ้าง ในแง่ของไมโครเซอร์วิส การ deploy ไมโครเซอร์วิสทั้งตัวเป็น "function" เดียวบนแพลตฟอร์ม FaaS ก็เป็นวิธีเริ่มต้นที่ใช้ได้ดีทีเดียว
ข้อสังเกตสุดท้าย ให้แยกแนวคิดของ deployment กับ release ออกจากกันในหัวของคุณ แค่คุณ deploy อะไรบางอย่างขึ้น production ไม่ได้แปลว่ามันต้องถูก release ให้ผู้ใช้ของคุณเห็น ด้วยการแยกแนวคิดเหล่านี้ออกจากกัน คุณเปิดโอกาสให้ roll out ซอฟต์แวร์ของคุณในหลายรูปแบบ เช่น การใช้ canary release หรือ parallel run ทั้งหมดนี้และอื่นๆ อีกมากมายถูกครอบคลุมอย่างละเอียดใน Chapter 8