SOA

 SOA (Service-Oriented Architecture)         เป็นหลักการการออกแบบสถาปัตยกรรมซอฟต์แวร์ที่ได้รับการกล่าวถึงอย่างมาก หลายองค์กรพยายามที่จะออกแบบระบบทางด้านไอทีให้เข้าสู่ระบบ SOA คือการออกแบบที่มุ่งเน้นให้แอพพลิเคชันสามารถทำงานร่วมกันได้ โดยไม่ขึ้นกับแพลตฟอร์ม ภาษาคอมพิวเตอร์ และเทคโนโลยีที่ใช้ในการพัฒนา

ความหมายของ SOA         ระบบสถาปัตยกรรมเชิงบริการหรือ SOA เป็นแนวคิดในการจะออกแบบระบบไอทีในองค์กรให้เป็นระบบเชิงบริการ (Service-Oriented) ที่สามารถนำกลับมาใช้ใหม่ได้ ทั้งนี้ระบบไอทีขององค์กรต่างๆ ในปัจจุบันมักจะมีสถาปัตยกรรมแบบ Silo-Oriented Architecture ซึ่งการพัฒนาระบบไอทีในแต่ละระบบต่างเป็นอิสระต่อกัน อาจมีระบบที่ใช้เทคโนโลยีที่แตกต่างกันเช่น Java, .NET, Oracle หรือ SAP เป็นต้น จึงทำให้ยากต่อการเชื่อมต่อ บำรุงรักษายาก มีค่าใช้จ่ายสูง ปรับเปลี่ยนระบบได้ยาก และการพัฒนาระบบใหม่ๆ เป็นไปด้วยความล่าช้า ดังแสดงในรูปที่ 1
                                                      รูปที่ 1 Silo-Oriented Architecture
แนวคิดของระบบ SOA คือการจัดระบบ Silo-Oriented Architecture ใหม่ โดยการสร้างระบบไอทีให้เป็น 4 ชั้น (Layer) ดังแสดงในรูปที่ 2 และ 3
               • Resource Layer ซึ่งจะเป็นชั้นของระบบโครงสร้างไอทีต่างๆ ในปัจจุบัน เช่นระบบฐานข้อมูล Oracleระบบโซลูชัน SAP หรือ PeopleSoft เป็นต้น

               • Service Layer ซึ่งเป็นชั้นของส่วนประกอบเซอร์วิสต่างๆ ที่สามารถนำมาใช้ใหม่ได้ โดยส่วนประกอบเซอร์วิสเหล่านี้จะพัฒนามาจากโมดูล (Module) ต่างๆ ที่ทำงานบน Resource Layer เช่นโมดูลของฐานข้อมูล Oracle โมดูลของระบบโซลูชัน SAP หรือ PeopleSoft และโมดูลของโปรแกรมประยุกต์ที่อาจพัฒนาด้วย Java หรือ .NET เป็นต้น

               • Process Layer ซึ่งเป็นชั้นของกระบวนการทางธุรกิจ (Business Process) ที่พัฒนาขึ้นมาจากการส่วนประกอบเซอร์วิสต่างๆ 

               • Access Layer ซึ่งเป็นชั้นของการเรียกใช้กระบวนการทางธุรกิจที่พัฒนาขึ้น โดยอาจผ่านทางเว็บไซต์ (Web Site) หรือโทรศัพท์เคลื่อนที่ (Mobile Phone)
                                                                      รูปที่ 2 SOA Layers
                                                          รูปที่ 3 SOA Conceptual Diagra
ดังนั้นจะเห็นได้ว่า SOA เป็นการเปลี่ยนระบบ Silo-Oriented Architecture มาสู่ระบบ Service-Oriented ซึ่งออกแบบเป็นชั้นๆ ทำให้สามารถพัฒนาปรับปรุง หรือเพิ่มเติมโปรแกรมใหม่ได้ง่าย ดังแสดงในรูปที่ 4
           เนื่องจาก SOA เป็นหลักการในการออกแบบ จึงทำให้การทำความเข้าใจและนำไปพัฒนาให้ใช้งานได้จริงจึงเป็นเรื่องที่ยาก จนเมื่อเว็บเซอร์วิส (Web Service) ซึ่งเป็นวิธีการหนึ่งในการพัฒนาตามหลักการของ SOA เกิดขึ้นมา จึงทำให้แนวคิด SOA ได้รับความนิยมขึ้นมาอย่างมาก จนบางครั้งอาจทำให้คิดว่า SOA และ เว็บเซอร์วิสเป็นเรื่องเดียวกัน ซึ่งในความจริงนั้น SOA เป็นแนวคิดหรือรูปแบบในการออกแบบการให้บริการ ส่วนเว็บเซอร์วิสเป็นวิธีการหนึ่งในการพัฒนาตามหลักการของ SOA เท่านั้น ทั้งนี้อาจใช้แนวทางอื่นในการพัฒนาระบบ SOA เช่นการใช้ CORBA (Common Object Request Broker Architecture) หรือ Java RMI (Remote Method Invocation)ก็ได้เช่นกัน
                                                      รูป ที่ 4 แนวคิดสถาปัตยกรรม SOA 
ระบบ SOA จะมีคุณลักษณะที่สำคัญหลักๆ ดังนี้
               • การติดต่อสื่อสารระหว่างเซอร์วิส จะใช้เอกสารที่เป็น XML ที่นิยามผ่าน XML Schema (.xsd) ทำให้ไม่จำเป็นต้องทราบรายละเอียดของแฟลตฟอร์มและเทคโนโลยีของเซอร์วิสที่ ใช้อยู่

                เซอร์วิสจะมีตัวเชื่อมต่อ (Interface) ที่อธิบายเซอร์วิส เช่น Service Name, Input Parameter, Output Parameter และข้อมูลอื่นๆ ในรูปแบบของไฟล์ XML ทำให้ไม่ขึ้นกับแฟลตฟอร์มและเทคโนโลยีที่เซอร์วิสนั้นใช้อยู่ โดยมากมักจะใช้มาตรฐาน WSDL (Web Service Description Language) ในการอธิบายเซอร์วิส

               • โปรแกรมประยุกต์ (Application) หรือกระบวนการทางธุรกิจต่างๆ สามารถพัฒนาขึ้นมาจากการใช้เซอร์วิสเดิมที่มีอยู่ ซึ่งมาตรฐานที่นิยมใช้คือ WS-BPEL (Web Service Business Process Execution Language) 

               • SOA จะมี Registry ในการเก็บเซอร์วิสต่างๆ ที่มีอยู่ ซึ่ง Registry จะทำหน้าที่เหมือนไดเร็กทอรี่ของเซอร์วิส โดยโปรแกรมประยุกต์หรือกระบวนการทางธุรกิจต่างๆ จะค้นหาและเรียกใช้เซอร์วิสจาก Registry นี้ มาตรฐานที่ใช้ในการเก็บ Registry ที่นิยมใช้คือ UDDI (Universal Description Definition and Integration)

               • เซอร์วิสแต่ละตัวจะมีส่วนการควบคุมคุณภาพที่เป็น QoS (Quality of Service) อาทิเช่นการควบคุมความปลอดภัยด้าน Authentication, Authorization, Reliable Message และ Policy