หลัก 6 ประการของ Microservice

Sakul Montha
Jun 23 · 3 min read

สวัสดีนักอ่านทุกท่านนะครับ เชื่อว่าหลาย ๆ คนที่หลงเข้ามาอ่าน คงจะเคยได้ยินกับคำว่า Microservice หรืออาจจะใช้กันมานานแล้ว หรือบางคนอาจจะยังไม่เคยรู้จัก หรือไม่เคยใช้กันมาก่อน วันนี้ผมจะพาทัวร์ ให้ทุกท่านรู้จักกับ “หลัก 6 ประการ ของ Microservice” หรือ “The 6 pillar of microservice” จาก The Microservice Manifesto กัน ก่อนจะเข้าสู่ หลัก 6 ประการ เรามาทำความรู้จัก Microservice แบบคร่าว ๆ กันก่อน

Microservice

Microservice ถือเป็นเทคนิคหนึ่ง ในการทำ Software development ซึ่งก็จัดอยู่ใน Service-Oriented Architecture (SOA) ที่จะสร้าง Application ของคุณแบบไม่ผูกมัดกันจนเกินไป โดยที่ให้การทำงานของ Application มีขนาดไม่ใหญ่โตมากนัก (lightweight)

ประโยชน์ของการแยก Application ให้มาอยู่ในรูปแบบของ Service ต่าง ๆ ทำให้ Application มีขนาดเล็กลง มีความเข้าใจในตัว Service มากขึ้น Development หรือ Testing ง่ายขึ้น และมีความยืดหยุ่นมากขึ้นด้วย

  • Highly maintainable and testable
  • Loosely coupled
  • Independently deployable
  • Organized around business capabilities

ให้ง่าย ๆ ก็คือ สมมติ ตอนนี้เรามี Application X โดยที่ Application X นี่ทำทุกสิ่งเลย ไม่ว่าจะเป็น การเก็บข้อมูล Customer, มีการทำ Payment มีการคำนวณต่าง ๆ, มีระบบ Inventory, มีระบบ Shipping, บลา ๆ ๆ เวลาจะแก้ทีนึงก็กังวลจะกระทบอะไรบ้าง ขนาดไหน จะ Deploy ก็ต้องไปทั้งดุ้น จะขยายระบบ ก็ต้องขยายทั้งดุ้น ตัว Microservice จะช่วยเราในการ แยก Service ต่าง ๆ ที่กล่าวมา ออกมาเป็น Service ย่อย ๆ หรือ Composite แล้วก็ช่วยแก้ไข Pain point ที่กล่าวไปข้างต้นด้วยนั่นเอง

Monolith and Microservice // iamgique

TL;DR

ยาวไปไม่อ่าน

  • Ownership เป็นรากฐานที่สำคัญของการพัฒนาซอฟแวร์
  • Testing เป็นเรื่องของทุกคน ไม่ใช่แค่ของ QA เท่านั้น
  • Automation จะเข้ามาช่วยให้ทีมสามารถส่งมอบงานได้รวดเร็วยิ่งขึ้น
  • Discoverability จะเข้ามาช่วยให้ทั้ง Business และ Technical ค้นหา และจัดการฟังก์ชันต่าง ๆ ได้อย่างมีประสิทธิภาพ (re-useable)
  • Accessibility จะทำให้เราเชื่อมต่อเข้าถึงกันผ่าน Protocol ต่าง ๆ โดยไม่สนใจว่าภายใน Service นั้น ๆ จะใช้อะไร Implement
  • Responsibility ขอเพียงแค่ทุกคน ให้ความสำคัญกับสิ่งที่ตัวเองดูแล และใส่ใจคนอื่นรอบข้างด้วย ก็จะทำให้การทำงานลื่นไหล

หลัก 6 ประการ

กล่าวข้างต้นกันไปเยอะแล้ว เรามาดูหลัก 6 ประการของ Microservice กันเถอะ

Ownership

Ownership ถือเป็นรากฐานสำคัญของ Microservice เลย ในบริษัทต่าง ๆ มักจะผลิตซอฟแวร์ โดยแบ่งกลุ่มของคนทำ Software ออกเป็น muiti-tier system อาจจะแบ่งออกไปประมาณนี้ Business team, UX UI team, Dev team หรือ DBA team ซึ่งแต่ละ Tier ก็จะมีความเป็น Ownership ของตนเองที่ต่างกันออกไป

ปัญหาของการแบ่ง Segment team ตามประเภทที่เป็น multi-tier มักจะมีข้อกังวลร่วมกันในการทำงานระหว่างแต่ละส่วน เช่น DBAs จะมองในมุมของระบบฐานข้อมูล ไม่ได้เข้ามามีส่วนร่วมกับการสร้าง Product ก็จะทำให้ห่วงแต่ในส่วนที่ตนเองดูแล ซึ่งที่กล่าวไปมันค่อนข้างจะขัดแย้งกับธรรมชาติของ Microservices

ถ้าหากสร้างทีมที่มีการเข้ามาอยู่ด้วยกันในหลาย ๆ สายงาน หรือทำ Cross-functional teams นั่นจะทำให้การส่งมอบโซลูชั่นเร็วขึ้น และช่วยให้ เราสามารถเจออุปสรรค์ และแก้ไขปัญหาได้เร็วขึ้น เมื่อเทียบกันในระยะยาว เนื่องจากทุกคนได้มาอยู่รวมกันแต่มีความรู้สึกที่รู้สึกว่า เราเป็น Owner ของสิ่ง สิ่งเดียวกัน

Automation

Automation จัดว่าเป็นส่วนสำคัญที่จะทำให้ Microservice สำเร็จได้
การทำ Automation เป็นสิ่งที่ทำให้ “ทีม” สามารถส่งมอบงานที่ได้รับมอบหมายได้อย่างรวดเร็ว และมีข้อผิดพลาดน้อยลง จุดนี้จะเข้ามาช่วยทำให้เราสามารถ Delivery งานได้ภายในไม่กี่นาที หรือชั่วโมง แทนที่มันจะต้องใช้เวลาเป็นวัน หรือเป็นเดือน

Testing

Testing เป็นเรื่องของ “ทุกคน” ไม่ใช่แค่ของ QA เท่านั้น
การทำการทดสอบเป็นสิ่งสำคัญมากคุณอาจจะมองได้ว่าเป็นสิ่งสำคัญลำดับที่สองได้เลย แต่การจะทดสอบระบบเราก็ควรที่จะทำ Automate test ให้มากที่สุดเท่าที่จะเป็นไปได้ การที่เรามี Automate test ทำให้เรามั่นใจได้ว่าการที่เราจะส่งมอบงานในแต่ละครั้งนั้นเราจะส่งของที่ “มีคุณภาพ” ไม่ต้องกังวลว่าถ้าใช้มือเทสสิ่งที่เคยเทสไปแล้วนั้นจะมีการลืมเทสหรือไม่ สามารถลดเวลาในการทดสอบระบบได้อย่างมาก

Discoverability

ความสามารถที่จะถูกค้นพบได้ง่าย Discoverability นั้นเป็นมากกว่าการแค่บอกว่า Service ของคุณอยู่ที่ไหนแต่… Discoverability จะเข้ามาช่วยทีมของเรา ไม่ว่าจะเป็นเรื่อง Business หรือ Technical ค้นหา จัดการ และใช้งานได้ง่าย (re-useable) ได้ ตัวอย่างการทำเช่น การทำ Data governance ที่ทำให้เรามั่นใจว่า Data ได้รับการจัดเก็บถูกต้อง และมีการบริหารดูแลว่า Data ตอบโจทย์ตามความต้องการของ Business หรือไม่

การไม่มี Ownership ของ Service ที่ “สร้างขึ้นมาใหม่” จะทำให้ขาดการจัดการดูแล (Data governance) และสุดท้ายมีการสร้าง Service ใหม่มาซ้ำๆ ทำให้จัดการได้ยาก

Accessibility

เราอยู่ในโลกที่มีการใช้ภาษาที่หลากหลาย ในโลกของ Microservice ก็เช่นกัน การเข้าถึง Microservice เราไม่บังคับว่าคุณจะ Implement มาจากภาษาอะไร Service A อาจจะพัฒนามาจาก Python, Service B พัฒนาจาก JAVA ขอแค่ให้ Service ต่าง ๆ ก็เชื่อมต่อเข้าหากันได้ เช่นการใช้บริการ Service ต่าง ๆ ผ่าน HTTP(s) และใช้รูปแบบการคุยกันที่เป็นมาตรฐาน เช่น JSON เป็นต้น

หาก Service ของคุณเป็นแบบ Internal service แบบข้างในคุยกันเอง ไม่ไปกระทบกับบุคคลภายนอกที่จะเข้ามาเชื่อมต่อ คุณก็อาจจะเลือกวิธีการที่เหมาะสมได้มากกว่า เช่น Queue, Pipe, TCP หรืออื่น ๆ

Responsibility

ทุก Service จะต้องมีหน้าที่รับผิดชอบต่อตนเอง แต่… ถึงอย่างนั้นเราก็ต้องมาดูด้วยว่า Service ของเราไปต่อเข้ากับใคร หรือมีใครมาต่อบ้าง การจะแก้ไขอะไรก็ควรที่จะคำนึงถึงผลกระทบที่อาจจะเกิดขึ้นกับ Service อื่น ๆ อาจจะกล่าวได้ถึงเรื่องของ Service ของเรามัน Backward complatible รึเปล่าด้วย


Conclusion

ก็จบกันไปแล้วนะครับสำหรับ หลัก 6 ประการของ Microservice อันที่จริงถ้าแปลตรง ตัว ผมอ่านแล้วรู้สึกว่าหลาย ๆ ส่วนมีความ Abstract มาก ก็เลยใส่ที่เป็น ประสบการณ์ของตัวเองลงไปค่อนข้างเยอะนิดนึง

ส่วนตัวผมคิดว่า Microservice เป็นสิ่งที่ดี ที่จะเข้ามาแก้ปัญหาในการทำซอฟแวร์ แต่ก็ไม่ได้หมายความว่ามันดีที่สุด ถ้าคุณทำ Monolith แล้วไม่เจอ Pain point ทำแล้วดี ไม่มีปัญหา ก็ไม่จำเป็นต้องเปลี่ยนมาใช้ก็ได้ เพราะว่าตัว Microservice เองก็ไม่ใช่ว่าจะไม่มี Pain point อาจจะเหมือนกับที่ในยุคนี้หลายคนถกเถียงกันเรื่อง Waterfall กับ Agile เอาที่เหมาะสมกับเราครับ ไม่ต้องไปยึดติดมาก เอาไว้มีโอกาสจะมาเขียนเรื่อง ความเจ็บปวดที่เจอของ Microservice ให้ได้อ่านกันนะครับ

API Gateway on microservice architecture

คุณสามารถไปอ่านต่อเรื่อง บทบาทของ API Gateway บน สถาปัตยกรรม Microservices และการ Testing ได้ที่ Test Pyramid

ปล. ผิดพลาดประการใดรบกวนชี้แนะได้เลยนะครับ


Sakul Montha

Written by

Software Engineer Team Lead, A man who doesn’t believe in TDD, but trust in Unit test.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade