Summary (สรุป)

โอเค เราครอบคลุมเนื้อหาไปมากมายในบทนี้ มาสรุปสั้น ๆ กันก่อนที่เราจะไปต่อ อย่างแรก มาทบทวนหลักการสำหรับการ deploy ที่ผมได้ระบุไว้ก่อนหน้านี้กัน:

Isolated execution

รัน microservice instance ในลักษณะที่แยกจากกัน โดยแต่ละตัวมี computing resource เป็นของตัวเอง และการทำงานของมันไม่สามารถกระทบ microservice instance อื่นที่รันอยู่ใกล้เคียงได้

Focus on automation

เลือกเทคโนโลยีที่รองรับ automation ในระดับสูง และรับเอา automation มาเป็นส่วนหลักของวัฒนธรรมของคุณ

Infrastructure as code

แสดง configuration ของ infrastructure ของคุณเพื่อให้ automation ง่ายขึ้นและส่งเสริมการแบ่งปันข้อมูล เก็บโค้ดนี้ไว้ใน source control เพื่อให้สามารถสร้าง environment ขึ้นใหม่ได้

Aim for zero-downtime deployment

ขยายแนวคิด independent deployability ไปอีกขั้น และให้แน่ใจว่าการ deploy microservice เวอร์ชันใหม่สามารถทำได้โดยไม่มี downtime ต่อผู้ใช้ service ของคุณ (ไม่ว่าจะเป็นมนุษย์หรือ microservice อื่น)

Desired state management

ใช้แพลตฟอร์มที่รักษา microservice ของคุณไว้ในสถานะที่กำหนดไว้ โดยเปิด instance ใหม่หากจำเป็นเมื่อเกิด outage หรือ traffic เพิ่มขึ้น

นอกจากนี้ ผมยังได้แชร์แนวทางของผมเองในการเลือก deployment platform ที่เหมาะสม:

  1. ถ้ามันไม่พัง ก็อย่าไปซ่อมมัน 9

  2. ยอมสละการควบคุมเท่าที่คุณรู้สึกสบายใจ แล้วสละไปอีกนิดหน่อย ถ้าคุณสามารถ offload งานทั้งหมดของคุณไปยัง PaaS ที่ดีอย่าง Heroku (หรือ FaaS platform) ได้ ก็ทำเลยและมีความสุขไปกับมัน คุณจำเป็นต้องปรับแต่งการ ตั้งค่า ทุกอย่างจริง ๆ หรือ?

  3. การ containerize microservices ของคุณไม่ใช่เรื่องที่ปราศจากความเจ็บปวด แต่เป็นการประนีประนอมที่ดีมากในเรื่องต้นทุนของ isolation และมีประโยชน์อันยอดเยี่ยมสำหรับการพัฒนาในเครื่อง ในขณะที่ยังคงให้คุณควบคุมได้ในระดับหนึ่งว่าเกิดอะไรขึ้น คาดหวัง Kubernetes ในอนาคตของคุณได้เลย

มันยังสำคัญที่จะเข้าใจข้อกำหนดของ คุณ เอง Kubernetes อาจเหมาะกับคุณมาก แต่บางทีอะไรที่ง่ายกว่าอาจใช้ได้ดีพอ ๆ กัน อย่ารู้สึกอายที่จะเลือก solution ที่ง่ายกว่า และอย่ากังวลมากเกินไปเกี่ยวกับการ offload งานไปให้คนอื่น—ถ้าผมสามารถผลักงานไปยัง public cloud ได้ ผมก็จะทำ เพราะมันทำให้ผมมุ่งเน้นที่งานของตัวเองได้

เหนือสิ่งอื่นใด พื้นที่นี้กำลังผ่านการเปลี่ยนแปลงอย่างมาก ผมหวังว่าผมได้ให้ข้อมูลเชิงลึกกับคุณเกี่ยวกับเทคโนโลยีหลักในพื้นที่นี้ แต่ก็ได้แชร์หลักการบางอย่างที่มีแนวโน้มจะอยู่ยั่งยืนกว่าเทคโนโลยียอดนิยมชุดปัจจุบัน ไม่ว่าอะไรจะเกิดขึ้นต่อไป หวังว่าคุณจะพร้อมรับมือกับมันได้มากขึ้น

ในบทถัดไป เราจะเจาะลึกเข้าไปในหัวข้อที่เราแตะไปเล็กน้อยตรงนี้: การทดสอบ microservices ของเราเพื่อให้แน่ใจว่ามันทำงานได้จริง

1 Kief Morris, Infrastructure as Code , 2nd edition (Sebastopol: O'Reilly, 2020).

2 Senthil Padmanabhan and Pranav Jha, "WebAssembly at eBay: A Real-World Use Case," eBay, May 22, 2019, https://oreil.ly/SfvHT .

3 Johnathan Ishmael, "Optimising Serverless for BBC Online," Technology and Creativity at the BBC (blog), BBC, January 26, 2021, https://oreil.ly/gkSdp .

4 ผมอาจไม่ใช่คนที่คิดกฎนี้ขึ้นมา

5 Daniel Bryant, "Apple Rebuilds Siri Backend Services Using Apache Mesos," InfoQ, May 3, 2015, https://oreil.ly/NLUMX .

6 Nicole Forsgren, Jez Humble, and Gene Kim, Accelerate: The Science of Building and Scaling High Performing Technology Organizations (Portland, OR: IT Revolution, 2018).

7 คำพูดนี้มักถูกอ้างถึงว่าเป็นของนักชีววิทยา Paul Ehrlich แต่ต้นตอที่แท้จริงของมัน ยังไม่ชัดเจน .

8 Sam Newman, Monolith to Microservices (Sebastopol: O'Reilly, 2019).

9 ผมอาจไม่ใช่คนที่คิดกฎนี้ขึ้นมา