Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สรุปข้อแตกต่างระหว่าง SOA และ Microservice ไว้นิดหน่อย

$
0
0

Microservices-vs-SOA

Microservices-vs-SOA ในปัจจุบันไปงานไหน ๆ ก็มีแต่คนพูดถึง Microservice ว่ามันดีอย่างนั้นอย่างนี้ แต่สำหรับใครก็ตามที่มีประสบการณ์กับ SOA (Service Oriented Architecture) หรือบางคนอาจจะเรียกว่า Service Oriented Ambiguity ก็ตาม
อาจจะเกิดคำถามขึ้นมาว่า ทั้ง SOA และ Microservice มันเหมือนหรือแตกต่างกันอย่างไรบ้าง ?

SOA ย่อมาจาก Service Oriented Architecture

เป็นรูปแบบหนึ่งของการออกแบบสถาปัตยกรรม Software โดยทำการแยกส่วนการทำงานออกเป็น component ในแต่ละ component ประกอบไปด้วย service ต่าง ๆ ซึ่งทำงานอย่างใดอย่างหนึ่งไปเลย เช่น
  • Shopping cart service
  • Account activation service
  • Order validation service
  • Order status service
รวมทั้งยังได้กำหนด protocol ในการสื่อสารอย่างง่ายระหว่าง component ไว้อีกด้วย โดยใน SOA ประกอบไปด้วย 2 ส่วนหลักคือ
  1. Consumer คือ ผู้ใช้งานทั้งจากผู้ใช้งาน จาก service อื่น และ ระบบอื่น
  2. Provider คือ ผู้ใช้บริการ service ต่าง ๆ
แสดงดังรูป soa-01 จากรูปจะเห็นว่ามีส่วนที่เรียกว่า Enterprise Service Bus (ESB) เป็นสถาปัตยกรรมหนึ่งที่รวมเอาส่วนการทำงานต่าง ๆ มาทำงานร่วมกัน ทั้ง Consumer และ Provider นั่นคือช่องทางนการติดต่อสื่อสารนั่นเอง ทำให้ส่วนการทำงานต่าง ๆ สามารถแบ่งปันและแลกเปลี่ยนข้อมูลกันได้ง่าย แต่บ่อยครั้งที่พบว่า ESB กลับกลายเป็นปัญหา !!

มาดู Microservice Architecture กันบ้าง

เป็นรูปแบบหนึ่งของการออกแบบสถาปัตยกรรมของ Software ซึ่งแยกส่วนการทำงานใหญ่ ๆ ออกเป็นส่วนเล็ก ๆ โดยแต่ละส่วนเรียกว่า service แต่ละ service มีขนาดเล็ก แต่ไม่ใช่เล็กแบบ function หรือ method นะ แต่ละ service แยกกันทำงานอย่างชัดเจน แต่ละ service แยกส่วนจัดเก็บข้อมูลออกจากกัน แต่อาจจะ share กันได้บางกรณี แต่ละ service สามารถพัฒนาด้วยภาษาโปรแกรมที่ต่างกัน แต่ละ service ติดต่อสื่อสารกันผ่าน protocol ที่กำหนดร่วมกัน แต่ละ service เป็นอิสระต่อกัน ทำให้สามารถ deploy โดยไม่กระทบ (แต่ต้องทดสอบดี ๆ นะ) แต่ละ service สามารถปิด หรือ ล่มได้ โดยไม่ส่งผลกระทบต่อ service อื่น !! (Design for failure) แต่การออกแบบและพัฒนาไม่ง่ายเลย !! แสดงดังรูป soa-02

แล้ว SOA กับ Microservice มันแตกต่างกันอย่างไร ?

ในมุมมองนักพัฒนาของผมชอบภาพนี้ มันอธิบายได้ชัดเจนมาก ๆ soa-04 โดยแต่ละ service ของ SOA และ Microservice สามารถแบ่งไปให้แต่ละทีม หรือ หลาย ๆ ทีมพัฒนาได้ สามารถใช้เทคโนโลยีในการพัฒนาที่แตกต่างกันได้
แต่สิ่งที่แต่ละทีมต้องตกลงร่วมกันก่อนคือ รูปแบบของการติดต่อสื่อสารระหว่าง service ว่าเป็นอย่างไร
แต่ว่า service ใน SOA มักจะไม่เป็นอิสระต่อกัน  !! ซึ่งต่างจาก Microservice ส่งผลให้ Microservice นั้น deploy ได้ง่ายกว่า scale ระบบได้ง่ายกว่า
ส่วนใน SOA นั้น ESB กลับกลายเป็นปัญหาใหญ่ของทั้งระบบ หรือเป็น Single Point of Failure (SPoF) เนื่องจากแต่ละ service ต้องทำการติดต่อสื่อสารผ่าน ESB
ส่วนเรื่องของการ share ข้อมูลระหว่าง service นั้น มีทั้งข้อดีและข้อเสีย ซึ่งต้องพิจารณาให้ดี ๆ ข้อดีคือแต่ละ service สามารถใช้ข้อมูลร่วมกันได้ง่าย ข้อเสียคือแต่ละ service จะผูกมัดกันอย่างมาก (Tight coupling)

โดยสรุปแล้ว SOA และ Microservice นั้นต่างกันที่

ขนาดและขอบเขตการทำงาน โดยที่ Microservice จะมีขนาดเล็กกว่า SOA และแต่ละ service เป็นอิสระต่อกันมากกว่า SOA ส่วน SOA นั้นสามารถประกอบมีระบบแบบ Monolith และ Microservice อยู่รวมกันได้ เนื่องจาก SOA นั้นถูกออกแบบและสร้างขึ้นมา เพื่อทำให้ระบบที่แตกต่างกันสามารถทำงานร่วมกันได้ผ่านระบบ ESB จึงไม่แปลกใจเลยว่า เมื่อพูดถึง SOA เมื่อใด จะมี ESB ตามมาติด ๆ เสมอ แสดงดังรูป soa-03 Reference Websites http://martinfowler.com/articles/microservices.html http://microservices.io/patterns/microservices.html http://stackoverflow.com/questions/25501098/difference-between-microservices-architecture-and-soa https://dzone.com/articles/microservices-vs-soa-2

Viewing all articles
Browse latest Browse all 1997

Trending Articles