Team Topology Considerations (ข้อพิจารณาด้านโทโพโลยีทีม)

เนื่องจากสถาปัตยกรรม microservices แบ่งตามโดเมน (domain partitioned) จึงทำงานได้ดีที่สุดเมื่อทีมต่าง ๆ ก็จัดตัวตามโดเมนเช่นกัน (เช่น cross-functional team ที่มีความเชี่ยวชาญเฉพาะทาง) เมื่อมี requirement ที่อิงตามโดเมน เข้ามา ทีม cross-functional ที่โฟกัสโดเมนนั้นสามารถทำงานร่วมกันบน feature นั้นภายใน domain service เฉพาะ โดยไม่รบกวน ทีมหรือ service อื่น ในทางกลับกัน ทีมที่แบ่งตามเทคนิค (เช่น ทีม UI, ทีม backend, ทีมฐานข้อมูล และอื่น ๆ) จะทำงานร่วมกับสถาปัตยกรรมสไตล์นี้ได้ไม่ดี เพราะมันแบ่งตามโดเมน การมอบหมาย requirement ที่อิงตามโดเมนให้ทีมที่จัดตัว ตามเทคนิคต้องอาศัยการสื่อสารและร่วมมือระหว่างทีมในระดับที่หลายองค์กรทำได้ยาก

ต่อไปนี้คือข้อพิจารณาสำหรับสถาปนิกที่ต้องการจัดสถาปัตยกรรม microservices ให้สอดคล้องกับ team topology เฉพาะที่ กล่าวถึงใน "Team Topologies and Architecture" :

Stream-aligned teams (ทีมที่จัดตาม Stream)

หากขอบเขตโดเมนถูกจัดวางอย่างเหมาะสม stream-aligned team จะทำงานร่วมกับสถาปัตยกรรมสไตล์นี้ได้ดี โดยเฉพาะถ้า stream ของพวกเขาโฟกัสที่โดเมน เฉพาะ หนึ่งอย่าง อย่างไรก็ตาม สถาปัตยกรรม microservices จะยากขึ้นสำหรับทีมที่ stream ของพวกเขาข้าม bounded context และ service หลายตัว นอกเหนือจากซับโดเมนหรือโดเมนใดโดเมนหนึ่งโดยเฉพาะ ในกรณีนี้ เราแนะนำให้วิเคราะห์ bounded context และ granularity ของ microservices แล้วจัดวางใหม่ให้สอดคล้องกับ stream หรือไม่ก็เลือกสถาปัตยกรรมสไตล์อื่น

Enabling teams (ทีมสนับสนุน)

Enabling team จะมีประสิทธิภาพสูงสุดในสถาปัตยกรรม microservices เมื่อสามารถใช้ shared service สำหรับเรื่อง เฉพาะทางหรือ cross-cutting concern ได้ ด้วยระดับ modularity ที่สูงใน microservices enabling team จึงสามารถ ทำงานอย่างอิสระจาก stream-aligned team เพื่อมอบฟังก์ชันเฉพาะทางและฟังก์ชันร่วมเพิ่มเติมได้โดยไม่ขวางทาง เมื่อทำงานร่วมกับ platform team พวกเขายังช่วยสร้าง sidecar component ที่ประกอบกันเป็น service mesh ได้ด้วย (ดู "Operational Reuse" )

Complicated-subsystem teams (ทีมดูแลระบบย่อยที่ซับซ้อน)

Complicated-subsystem team สามารถใช้ประโยชน์จาก modularity ระดับ service ของสถาปัตยกรรมสไตล์นี้เพื่อโฟกัส การประมวลผลโดเมนหรือซับโดเมนที่ซับซ้อน โดยยังคงเป็นอิสระจากสมาชิกทีมอื่น (และ service อื่น)

Platform teams (ทีมแพลตฟอร์ม)

ระดับ modularity ที่สูงใน microservices ช่วยให้ stream-aligned team ใช้ประโยชน์จาก platform-teams topology ได้ด้วยการใช้เครื่องมือ, service, API และงานร่วมกัน ในหลายกรณี platform team (บางครั้งทำงานร่วมกับ enabling team) โฟกัสที่การสร้างและดูแลฟังก์ชันปฏิบัติการแบบ cross-cutting ที่พบใน sidecar (ดู "Operational Reuse" ) และ service mesh ปลดปล่อยให้ stream-aligned team ไม่ต้องกังวลเรื่องปฏิบัติการเหล่านี้