SOA คืออะไร? มุ่งเน้นการบริการ Archiหลักการสอน
⚡ สรุปอย่างชาญฉลาด
มุ่งเน้นการบริการ Archiหลักการด้านสถาปัตยกรรมกำหนดวิธีการสื่อสารของบริการซอฟต์แวร์อิสระผ่านการสื่อสารที่เป็นมาตรฐานtracSOA (Service-Oriented Architecture) คือสถาปัตยกรรมที่ใช้ในการสร้างแอปพลิเคชันแบบโมดูลาร์ นำกลับมาใช้ใหม่ได้ และทำงานร่วมกันได้ บทช่วยสอนนี้จะอธิบายพื้นฐานของ SOA หลักการออกแบบหลักเก้าประการ ส่วนประกอบสำคัญ ประโยชน์ และความแตกต่างระหว่าง SOA กับสถาปัตยกรรมไมโครเซอร์วิสสมัยใหม่
SOA (Service Oriented.) คืออะไร Archiเทคเจอร์)?
การบริการที่มุ่งเน้น Archiเทคเจอร์ (SOA) Service-Orientation คือรูปแบบสถาปัตยกรรมในงานออกแบบซอฟต์แวร์คอมพิวเตอร์ ที่ซึ่งส่วนประกอบของแอปพลิเคชันให้บริการแก่ส่วนประกอบอื่นๆ ผ่านโปรโตคอลการสื่อสาร โดยทั่วไปผ่านทางเครือข่าย หลักการของ Service-Orientation นั้นเป็นอิสระจากผลิตภัณฑ์ ผู้จำหน่าย หรือเทคโนโลยีใดๆ
SOA ช่วยให้ส่วนประกอบซอฟต์แวร์ที่ทำงานอยู่บนเครือข่ายที่แตกต่างกันสามารถทำงานร่วมกันได้อย่างราบรื่น ส่งเสริมการนำตรรกะทางธุรกิจกลับมาใช้ใหม่ และสนับสนุนการสื่อสารที่เป็นมาตรฐานระหว่างระบบแบบกระจาย
เว็บเซอร์วิสที่สร้างขึ้นตามสถาปัตยกรรม SOA มักมีความเป็นอิสระมากกว่า เว็บเซอร์วิสเหล่านี้สามารถแลกเปลี่ยนข้อมูลระหว่างกันได้ และเนื่องจากหลักการพื้นฐานที่ใช้ในการสร้าง จึงไม่จำเป็นต้องมีการโต้ตอบจากมนุษย์หรือการแก้ไขโค้ดใดๆ สิ่งนี้ช่วยให้เว็บเซอร์วิสบนเครือข่ายสามารถทำงานร่วมกันได้อย่างราบรื่น แม้ว่าจะพัฒนาด้วยเทคโนโลยีที่แตกต่างกันหรือโดยทีมงานที่แตกต่างกันก็ตาม
องค์กรสมัยใหม่นำ SOA มาใช้เพื่อรวมระบบเดิม ระบบแอปพลิเคชันบนคลาวด์ และ API ของบุคคลที่สามเข้าไว้ในระบบนิเวศดิจิทัลที่สอดคล้องกัน แนวทางที่มีโครงสร้างนี้ช่วยลดความซับซ้อนในการบูรณาการและสนับสนุนการพัฒนาซอฟต์แวร์ในระยะยาว
มุ่งเน้นการบริการ Archiหลักการเทคเจอร์ (SOA)
มีหลักการออกแบบ SOA หลัก 9 ข้อ ซึ่งอธิบายไว้ด้านล่าง หลักการเหล่านี้เป็นแนวทางให้นักพัฒนาออกแบบบริการที่มีความน่าเชื่อถือ นำกลับมาใช้ใหม่ได้ และทำงานร่วมกันได้ภายในแอปพลิเคชันใดๆ ที่ใช้ SOA
1. การให้บริการที่เป็นมาตรฐานtract
บริการต่างๆ ต้องมีคำอธิบายบริการ โดยบริการทุกอย่างจะต้องมีคำอธิบายที่ชัดเจนว่าบริการนั้นทำอะไร เพื่อให้แอปพลิเคชันไคลเอ็นต์เข้าใจได้ง่ายขึ้นว่าบริการนั้นนำเสนออะไรและจะโต้ตอบกับบริการนั้นได้อย่างไร
2. คลัปหลวม
Less การพึ่งพาซึ่งกันและกัน นี่คือหนึ่งในลักษณะสำคัญของเว็บเซอร์วิส ซึ่งระบุว่าควรมีการพึ่งพาให้น้อยที่สุดเท่าที่จะเป็นไปได้ระหว่างเว็บเซอร์วิสและไคลเอ็นต์ที่เรียกใช้ ดังนั้น หากฟังก์ชันการทำงานของเซอร์วิสเปลี่ยนแปลงไป ณ จุดใดจุดหนึ่ง ก็ไม่ควรทำให้แอปพลิเคชันไคลเอ็นต์เสียหายหรือหยุดทำงาน
3. บริการ Abstracการ
บริการต่างๆ จะซ่อนตรรกะที่อยู่ภายในจากโลกภายนอก บริการไม่ควรเปิดเผยวิธีการทำงานของมัน แต่ควรบอกเพียงว่าแอปพลิเคชันไคลเอ็นต์ทำอะไร ไม่ใช่ว่าทำอย่างไร
4. การนำบริการกลับมาใช้ใหม่ได้
ตรรกะถูกแบ่งออกเป็นบริการต่างๆ โดยมีจุดประสงค์เพื่อเพิ่มการนำกลับมาใช้ซ้ำให้มากที่สุด ในบริษัทพัฒนาซอฟต์แวร์ใดๆ การนำกลับมาใช้ซ้ำเป็นหัวข้อสำคัญ เพราะองค์กรต่างๆ ไม่ต้องการเสียเวลาและแรงงานในการสร้างโค้ดเดียวกันซ้ำแล้วซ้ำเล่าในแอปพลิเคชันหลายๆ ตัว ดังนั้น เมื่อเขียนโค้ดสำหรับเว็บเซอร์วิสเสร็จแล้ว โค้ดนั้นควรมีความสามารถในการทำงานร่วมกับแอปพลิเคชันประเภทต่างๆ ได้
5. บริการเอกราช
บริการควรมีอำนาจควบคุมตรรกะที่อยู่ภายใน บริการนั้นรู้ทุกอย่างเกี่ยวกับฟังก์ชันการทำงานที่ตนเองนำเสนอ ดังนั้นจึงควรมีอำนาจควบคุมโค้ดที่บรรจุอยู่ภายในอย่างสมบูรณ์
6. การบริการไร้สัญชาติ
โดยหลักการแล้ว บริการควรไม่มีสถานะ (stateless) ซึ่งหมายความว่าบริการไม่ควรเก็บข้อมูลไว้ระหว่างสถานะต่างๆ นี่เป็นความรับผิดชอบของแอปพลิเคชันฝั่งไคลเอ็นต์ ตัวอย่างเช่น ลองพิจารณาคำสั่งซื้อสินค้าจากร้านค้าออนไลน์ping เว็บไซต์ บริการเว็บอาจส่งคืนราคาของสินค้าชิ้นใดชิ้นหนึ่ง แต่หากมีการเพิ่มสินค้าลงในร้านค้าping เมื่อเพิ่มสินค้าลงในตะกร้าและหน้าเว็บนำไปยังหน้าจอชำระเงิน ความรับผิดชอบในการส่งต่อราคาไปยังหน้าชำระเงินไม่ควรตกอยู่กับบริการเว็บ แต่ควรเป็นหน้าที่ของเว็บแอปพลิเคชัน
7. การค้นพบบริการ
สามารถค้นหาบริการต่างๆ ได้ โดยปกติผ่านทางทะเบียนบริการ เราได้เห็นตัวอย่างนี้แล้วในแนวคิดของ UDDI ซึ่งทำหน้าที่เป็นทะเบียนที่จัดเก็บข้อมูลเกี่ยวกับบริการเว็บ ทำให้ผู้บริโภคสามารถค้นหาและใช้งานได้ง่าย
8. ความสามารถในการประกอบบริการ
บริการจะแบ่งปัญหาใหญ่ให้เป็นปัญหาเล็ก ๆ ไม่ควรฝังฟังก์ชันการทำงานทั้งหมดของแอปพลิเคชันไว้ในบริการเดียว แต่ควรแบ่งบริการออกเป็นโมดูล โดยแต่ละโมดูลมีฟังก์ชันการทำงานทางธุรกิจที่แตกต่างกัน
9. การทำงานร่วมกันของบริการ
บริการควรใช้มาตรฐานที่ช่วยให้ผู้ใช้ที่หลากหลายสามารถใช้บริการได้ ในบริการบนเว็บ มาตรฐานต่างๆ เช่น XML และการสื่อสารผ่าน HTTP ถูกนำมาใช้เพื่อให้มั่นใจว่าบริการต่างๆ เป็นไปตามหลักการนี้ในแพลตฟอร์มและภาษาต่างๆ
องค์ประกอบสำคัญของการบริการที่มุ่งเน้นลูกค้า Archiเทคเจอร์
ระบบนิเวศ SOA ทำงานผ่านบทบาทหลักหลายประการที่ทำงานร่วมกันเพื่อให้การโต้ตอบระหว่างบริการเป็นไปอย่างราบรื่น การทำความเข้าใจส่วนประกอบเหล่านี้จะช่วยให้ผู้เริ่มต้นเห็นภาพว่าบริการต่างๆ สื่อสารกันอย่างไรในระบบแบบกระจาย
- ผู้ให้บริการ: สร้างเว็บเซอร์วิสและเผยแพร่คำอธิบายไปยังทะเบียนเซอร์วิส เพื่อให้ผู้ใช้สามารถค้นหาได้ในภายหลัง
- ผู้ใช้บริการ (ผู้ร้องขอ): ค้นหาบริการที่ต้องการผ่านทางรีจิสทรีและเรียกใช้บริการนั้นเพื่อใช้ฟังก์ชันการทำงานที่มีให้
- ทะเบียนบริการ (นายหน้า): ทำหน้าที่เป็นสารบบที่จัดเก็บข้อมูลเกี่ยวกับบริการที่มีอยู่ ช่วยให้ผู้บริโภคสามารถค้นหาและติดต่อกับผู้ให้บริการได้
- บริการคอนtract: กำหนดกฎการสื่อสาร รูปแบบข้อความ และพฤติกรรมที่คาดหวังระหว่างผู้ให้บริการและผู้บริโภค
- Enterprise Service Bus (ESB): ทำหน้าที่จัดการการกำหนดเส้นทาง การแปลง และการบูรณาการข้อความระหว่างบริการต่างๆ ในระบบองค์กรขนาดใหญ่
ส่วนประกอบเหล่านี้เมื่อรวมกันแล้วจะสร้างกรอบการทำงานแบบโมดูลาร์ที่สนับสนุนการนำบริการกลับมาใช้ซ้ำได้อย่างยืดหยุ่นในแผนก แอปพลิเคชัน และสภาพแวดล้อมคลาวด์ต่างๆ
ประโยชน์ของการมุ่งเน้นการบริการ Archiเทคเจอร์
มุ่งเน้นการบริการ ArchiTecture มอบข้อได้เปรียบเชิงกลยุทธ์สำหรับองค์กรในการสร้างระบบดิจิทัลที่ปรับขนาดได้และปรับเปลี่ยนได้ โดยเปลี่ยนจากการเขียนโค้ดซ้ำซากไปเป็นการสร้างบริการแบบโมดูลาร์ที่ช่วยแก้ปัญหาทางธุรกิจได้อย่างมีประสิทธิภาพ
ประโยชน์ต่อไปนี้จะอธิบายว่าเหตุใด SOA จึงยังคงมีความสำคัญต่อการออกแบบแอปพลิเคชันสมัยใหม่ การบูรณาการระบบคลาวด์ และโครงการปรับปรุงระบบเดิมให้ทันสมัย
- การพัฒนาที่เร็วขึ้น: การนำบริการที่มีอยู่แล้วมาใช้ซ้ำช่วยลดความพยายามในการเขียนโค้ดและเร่งระยะเวลาในการส่งมอบงาน
- ปรับปรุงความสามารถในการบำรุงรักษา: บริการขนาดเล็กที่เน้นเฉพาะด้านนั้นง่ายต่อการอัปเดต แก้ไขข้อผิดพลาด และปรับปรุงมากกว่าบล็อกโค้ดขนาดใหญ่ที่ซับซ้อน
- ความเป็นอิสระของแพลตฟอร์ม: บริการต่างๆ สื่อสารกันผ่านมาตรฐานแบบเปิด ทำให้ SOA สามารถใช้งานร่วมกับเทคโนโลยีใดๆ ก็ได้
- ความคล่องตัวทางธุรกิจ: ทีมสามารถปรับตัวให้เข้ากับความต้องการที่เปลี่ยนแปลงไปได้อย่างรวดเร็ว โดยการเพิ่มหรือเปลี่ยนบริการโดยไม่ทำให้ระบบทั้งหมดหยุดชะงัก
- ประสิทธิภาพต้นทุน: การนำบริการที่ได้รับการพิสูจน์แล้วมาใช้ซ้ำจะช่วยลดต้นทุนการพัฒนาและการบูรณาการในระยะยาว
- scalability: บริการแต่ละอย่างสามารถปรับขนาดได้อย่างอิสระเพื่อให้ตรงกับความต้องการใช้งาน
ข้อดีเหล่านี้ทำให้ SOA เหมาะอย่างยิ่งสำหรับระบบธนาคาร แพลตฟอร์มอีคอมเมิร์ซ แอปพลิเคชันด้านการดูแลสุขภาพ และสภาพแวดล้อมใดๆ ก็ตามที่ตรรกะทางธุรกิจที่นำกลับมาใช้ซ้ำได้เป็นสิ่งสำคัญ
SOA กับ ไมโครเซอร์วิส: ความแตกต่างที่สำคัญ
สถาปัตยกรรมไมโครเซอร์วิสมักถูกมองว่าเป็นวิวัฒนาการของ SOA (Service-Oriented Architecture) แม้ว่าทั้งสองแนวทางจะส่งเสริมความเป็นโมดูลาร์ แต่ก็มีความแตกต่างกันอย่างมากในขอบเขต รูปแบบการสื่อสาร และรูปแบบการกำกับดูแล
| แง่มุม | SOA | Microservices |
|---|---|---|
| ขนาดบริการ | บริการขนาดใหญ่ระดับธุรกิจ | บริการขนาดเล็กที่มีวัตถุประสงค์เดียว |
| การสื่อสาร | SOAP, XML, ESB | REST, JSON, API ขนาดเล็ก |
| การกำกับดูแลกิจการ | ส่วนกลาง | ซึ่งกระจายอำนาจ |
| การใช้งาน | รันไทม์ที่ใช้ร่วมกันบ่อยครั้ง | สามารถติดตั้งใช้งานได้โดยอิสระ |
| การจัดเก็บข้อมูล | ฐานข้อมูลที่ใช้ร่วมกัน | จัดสรรตามบริการ |
| ฟิตที่สุด | การรวมองค์กร | แอปพลิเคชันเนทีฟบนคลาวด์ |
การเลือกใช้ SOA หรือไมโครเซอร์วิสขึ้นอยู่กับขนาดขององค์กร ความพร้อมของเทคโนโลยี และความซับซ้อนของการบูรณาการ หลายองค์กรใช้ทั้งสองอย่างร่วมกัน โดยใช้ SOA สำหรับการบูรณาการระบบเดิม และใช้ไมโครเซอร์วิสสำหรับฟีเจอร์ใหม่บนคลาวด์

