Cloud Considerations (ข้อพิจารณาด้านคลาวด์)

แม้ microservices จะสามารถ deploy บนระบบ on-prem ได้อย่างแน่นอน โดยเฉพาะกับความนิยมของแพลตฟอร์ม service orchestration อย่าง Kubernetes และ Cloud Foundry แต่สถาปัตยกรรมสไตล์นี้เหมาะกับการ deploy บนคลาวด์เป็นอย่างมาก จนบางครั้ง microservices ถูกเรียกว่าสถาปัตยกรรมแบบ "cloud-native" การจัดสรร virtual machine, container และฐานข้อมูลแบบ on-demand ผสมกับแนวทางที่เน้น service ซึ่งพบได้ในสภาพแวดล้อมคลาวด์ (เช่น AWS) เข้ากันได้ดีกับสถาปัตยกรรมสไตล์ microservices

ผู้อ่านที่ช่างสังเกตอาจสงสัยว่าทำไมเราไม่รวม serverless ไว้เป็นสถาปัตยกรรมสไตล์หนึ่ง Serverless หมายถึงโมเดล cloud-computing ที่ function ถูกเรียกทำงานเมื่อมี request เข้ามา และจัดสรรทรัพยากรเครื่องที่จำเป็นแบบ on-demand serverless function มีตัวอย่างเช่น AWS Lambda , Google cloud functions และ Azure cloud functions เราเชื่อว่า serverless ไม่ใช่สถาปัตยกรรมสไตล์ แต่เป็น โมเดลการ deploy ของสถาปัตยกรรมสไตล์ microservices ต่างหาก

จำได้ไหมว่าก่อนหน้านี้ในบทนี้เราให้นิยามว่า microservice คือหน่วยซอฟต์แวร์ที่ deploy แยกกัน มีจุดประสงค์เดียว และทำ สิ่งเดียว ได้ดีมาก (จึงมีคำนำหน้าว่า micro ) ด้วยเหตุนี้ microservices จึงมักมี granularity ละเอียดกว่า service ในสถาปัตยกรรมสไตล์อื่น ซึ่งก็เป็นคำนิยามของ serverless function เช่นกัน นี่จึงเป็นเหตุผลที่เรามอง serverless เป็นส่วนหนึ่งของ microservices

กระนั้นก็ตาม microservices บนคลาวด์ไม่จำเป็น ต้อง deploy เป็น serverless function เสมอไป มันสามารถ deploy เป็น containerized service ได้ง่ายพอ ๆ กัน ผู้ให้บริการคลาวด์ ส่วนใหญ่หันมาใช้ Kubernetes (หรือแพลตฟอร์มแบบ Kubernetes บางรูปแบบ) ทำให้นักพัฒนา deploy containerized microservice ได้ง่ายพอ ๆ กับ serverless