วันจันทร์ที่ 23 กุมภาพันธ์ พ.ศ. 2552

ความหมายและความแตกต่างของ SOA และ WEB SERVICE

Service-Oriented Architecture (SOA) คืออะไร
คือเป็นสถาปัตยกรรมหนึ่งที่วงการไอทีกล่าวถึงกันมากที่สุดและหลายๆองค์กรต่างก็พยายามพัฒนาระบบไอทีขององค์กรเข้าสู่ระบบ SOA แต่เนื่องจากระบบ SOA ยังเป็นเรื่องใหม่ หลายคนไม่เข้าใจว่าคืออะไร บางครั้งเข้าใจไปว่า SOA กับเว็บเซอร์วิส (Web Service) ก็คือเรื่องเดียวกัน และพยายามที่จะพัฒนาเว็บเซอร์วิสขึ้นมาและเข้าใจว่าได้พัฒนา SOA ในองค์กรแล้ว จริงๆแล้ว SOA คือหลักการและแนวคิดซึ่งในการพัฒนา SOA อาจจำเป็นต้องใช้เครื่องมือ (Software Tool) มิดเดิ้ลแวร์ที่เป็น Enterprise Service Bus (ESB) และใช้ เว็บเซอร์วิส หรืออาจใช้แนวทางอื่นๆก็ได้เช่นการใช้ CORBA หรือ Java RMIระบบสถาปัตยกรรมเชิงบริการหรือ SOA เป็นแนวคิดในการจะออกแบบระบบไอทีในองค์กรให้เป็นระบบเชิงบริการ (Service Oriented) ที่สามารถนำกลับมาใช้ใหม่ได้ ทั้งนี้ระบบไอทีขององค์กรต่างๆในปัจจุบันมักจะมีสถาปัตยกรรมแบบ Silo Oriented Architecture ซึ่งการพัฒนาระบบไอทีในแต่ละระบบต่างเป็นอิสระต่อกัน อาจมีระบบที่ใช้เทคโนโลยีที่แตกต่างกันเช่น Java, .NET, Oracle หรือ SAP เป็นต้น จึงทำให้ยากต่อการเชื่อมต่อ บำรุงรักษายาก มีค่าใช้จ่ายสูง ปรับเปลี่ยนระบบได้ยาก และการพัฒนาระบบใหม่ๆเป็นไปด้วยความล่าช้า

องค์ประกอบที่สำคัญของ SOAองค์ประกอบต่อไปนี้เป็นองค์ประกอบที่จำเป็น เพื่อให้สามารถเรียกใช้บริการอื่นๆ ได้ ดังนี้
1. เซอร์วิส (Service) กลุ่มของอินเตอร์เฟสที่ระบุฟังก์ชันต่างๆ ที่สามารถให้ระบบอื่นสามารถเรียกใช้บริการได้
2. ผู้ให้บริการ (Service Provider) กลุ่มของคอมโพเนนต์ที่สามารถทำฟังก์ชันที่เป็นบริการตามที่กำหนดไว้เป็นเซอร์วิส (Service Specification)
3. ผู้รับบริการ (Service Consumer or Requestor) ระบบอื่นๆ ที่เรียกใช้เซอร์วิสซึ่งระบบอื่นๆ อาจจะเป็นเซอร์วิสที่เรียกใช้เซอร์วิสด้วยกันก็ได้
4. ผู้ให้บริการข้อมูลรายละเอียดของเซอร์วิสและค้นหาสถานที่ตั้งของผู้ให้บริการ (Service Locator) เป็นผู้ให้บริการประเภทหนึ่ง ซึ่งมีหน้าที่ลงทะเบียนรายละเอียดเกี่ยวกับผู้ให้บริการ (Service Registry) และคอยให้บริการข้อมูลรายละเอียดที่จำเป็นสำหรับการเรียกใช้บริการ
5. ตัวแทนติดต่อระหว่างผู้รับบริการและผู้ให้บริการ (Service Broker) ทำหน้าที่ช่วยติดต่อส่งคำร้องขอบริการจากผู้รับบริการไปยังกลุ่มของผู้ให้บริการ เพื่อเพิ่มความสะดวกในการติดต่อเรียกใช้บริการขั้นตอนการทำงานร่วมกันระหว่างผู้รับบริการ ผู้ให้บริการ ตัวแทน และผู้ให้บริการข้อมูลรายละเอียดของเซอร์วิส
เพื่อให้ผู้รับบริการสามารถเรียกใช้เซอร์วิสที่ต้องการได้

จากรูปเริ่มต้นที่การประกาศแจ้งการให้บริการ (Publish) เมื่อผู้ให้บริการต้องการประกาศแจ้งให้ผู้อื่นทราบและสามารถเรียกใช้บริการได้ ผู้ให้บริการจะต้องนำรายละเอียดการให้บริการ (Service Description) มาลงทะเบียนเก็บไว้ ที่ผู้ให้บริการข้อมูลรายละเอียดของเซอร์วิส (Service Registry) เพื่อให้ผู้ต้องการรับบริการได้มาค้นหาและเรียกใช้เมื่อผู้รับบริการต้องการเรียกใช้บริการจะต้องเริ่มจากการค้นหาบริการที่ต้องการ (Find) ว่ามีผู้ให้บริการใดบ้างที่ให้บริการตามที่ตนต้องการ ซึ่งผู้ให้บริการข้อมูลรายละเอียดของเซอร์วิส จะเป็นผู้ค้นคืน รายละเอียดของผู้ให้บริการที่จำเป็นสำหรับติดต่อขอรับบริการเชื่อมต่อไปยังผู้ให้บริการและเรียกใช้ (Bind and Invoke) หลังจากผู้รับบริการได้รายละเอียดของผู้ให้บริการจะทำการเชื่อมต่อไปยังผู้ให้บริการ ตามที่อยู่ด้วยวิธีการติดต่อสื่อสาร (Transport Protocol) เพื่อส่งคำร้องขอบริการ ตามรายละเอียดวิธีการเรียกใช้บริการและผลของการให้บริการจะถูกส่งกลับมายังผู้ร้องขอบริการด้วยวิธีการและมีรายละเอียดตามที่กำหนดเช่นกัน

ประโยชน์ของ SOA
1. ช่วยให้ระบบเดิมยังสามารถทำงานได้ เนื่องจากการติดต่อเรียกใช้บริการในสถาปัตยกรรม SOA จะเรียกใช้ผ่านอินเตอร์เฟสคอมโพเนนต์ที่ให้บริการจะพัฒนาด้วยเทคโนโลยีใดก็ได้
2. ทำให้การบูรณาการงานต่าง ๆ ในระดับธุรกิจทำได้ง่ายขึ้นและลดความซับซ้อน เนื่องจากสถาปัตยกรรมของ SOA เชื่อมโยงบริการต่าง ๆ เข้าด้วยกันผ่านอินเตอร์เฟส
3. ใช้เวลาน้อย ลดต้นทุนในการพัฒนาระบบสารสนเทศ และเพิ่มทรัพยากรที่มีอยู่
------------------------------------------------------------------------------------------------

Web Services คืออะไร
Web Services คือ application หรือ program ที่ทำงานอย่างใดอย่างหนึ่ง ในลักษณะให้บริการ โดยจะถูกเรียกใช้งานจาก application อื่นๆ ในรูปแบบ RPC(Remote Procedure Call) ซึ่งการให้บริการจะมีเอกสารที่อธิบายคุณสมบัติของบริการกำกับไว้ โดยภาษาที่ถูกใช้เป็นสื่อในการแลกเปลี่ยนคือ XML ทำให้เราสามารถเรียกใช้ component ใด ๆ ก็ได้ ใน ระบบ หรือ platform ใด ๆ ก็ได้ บน protocol HTTP ซึ่งเป็น protocol สำหรับ World Wide Web หรืออินเทอร์เน็ต อันเป็นช่องทางที่ได้รับการยอมรับทั่วโลกในการติดต่อสื่อสารกันระหว่าง application กับ application ในปัจจุบัน
การทำงานของ Web Services ประกอบไปด้วย มาตรฐานหลัก 4 อย่าง ซึ่งสามารถอธิบายอย่างง่ายๆ ได้ดังนี้

1. XML (Extensible Markup Language) เป็นภาษามาตรฐานที่ทุกระบบสนับสนุน ทำให้ข้อมูลที่มีโครงสร้างของภาษา XML จะถูกนำไปประมวลผลต่ออย่างอัตโนมัติได้อย่างง่ายดาย ภาษา XML จึงถูกนำมาใช้เป็นภาษามาตรฐานในการแลกเปลี่ยนข้อมูลของ Web Services
2. SOAP (Simple Object Access Protocol) หรือโซพ เป็นมาตรฐานของเทคโนโลยี Distributed Objects แบบหนึ่ง โดยทำหน้าที่ส่งข้อมูลผ่านอินเทอร์เน็ต ในรูปแบบของ XML ทำให้เรียกใช้งานโปรแกรมข้ามระบบผ่านทางอินเทอร์เน็ตได้
3. WSDL (Web Services Description Language) เป็นภาษามาตรฐานที่ใช้สำหรับอธิบายการใช้งานโปรแกรมที่เปิดให้บริการ ซึ่งเขียนขึ้นตามแบบมาตรฐาน XML ดังนั้น WSDL จึงเป็นเสมือนคู่มือให้กับระบบ เพื่อเรียนรู้วิธีการเรียกใช้งาน Web Services
4. UDDI (Universal Description, Discovery, and Integration) เป็นระบบมาตรฐานในการอธิบายและค้นหา Web Services โดยเป็นตัวกลางให้ Provider มาลงทะเบียนไว้ โดยใช้ไฟล์WSDL บอกรายละเอียดของบริษัทและบริการที่มีให้ ทำให้ Requestor สามารถค้นหาและทราบว่าบริษัทมีผลิตภัณฑ์และบริการอะไรบ้าง สามารถติดต่อขอดำเนินธุรกิจการค้ากับบริษัทได้โดยอัตโนมัติผ่านทาง Web Services

จากมาตรฐานทั้ง 4 อย่างที่กล่าวข้างต้นสามารถสรุปลำดับขั้นของการทำงานของ Web Services ได้ดังนี้
1. Provider จัดทำระบบหรือบริการที่เป็น Web Services ขึ้นมา
2. ทำการลงทะเบียน Web Services กับหน่วยงานที่ให้บริการระบบ UDDI (หรือ Registry)
3. นำ WSDL ไฟล์ไปไว้ในระบบ UDDI ที่ได้ลงทะเบียนไว้
4. Requestor ทำการค้นหาระบบหรือบริการที่ต้องการจากระบบ UDDI
5. เมื่อ Requestor ได้พบระบบหรือบริการที่ต้องการจะนำไฟล์ WSDL ไปเรียนรู้วิธีการเรียกใช้ผ่านระบบของตน
6. Requestor ทำการติดต่อและเรียกใช้ระบบหรือบริการจาก Provider ได้โดยตรงผ่าน SOAP ในระบบของตน

ถ้าพิจารณาลักษณะการทำงานและความสามารถของ Web Services แล้ว เราสามารถสรุปได้ว่า Web Services ก็คือ วิวัฒนาการอีกก้าวหนึ่งของ Web Application นั่นเอง

ประโยชน์ของ web service

1. การเกิดพันธมิตรทางการค้าโดยการค้นหาของ UDDI
2. การทำธุรกิจการค้าและบริการเป็นไปโดยอัตโนมัติในระดับ (A2A) โดยการแลกเปลี่ยนข้อมูลผ่านทาง Web Services
3. ลดต้นทุนในด้านพัฒนาระบบโดยไม่จำเป็น สามารถขอบริการจาก Web Services
4. ขีดความสามารถในการตอบสนองความต้องการของลูกค้ามีความคล่องตัว สามารถใช้ประโยชน์จากแอพพลิเคชั่นต่าง ๆภายใต้ระบบงานที่แตกต่างกันอย่างรวดเร็ว และคุ้มค่า
5. การพัฒนาช่องทางการเข้าถึงข้อมูลทางธุรกิจสอดคล้องกับผู้ใช้แบบร่วมกันและแบ่งตามส่วนของแต่ละกลุ่มโดยไม่มีข้อจำกัดเรื่องสถานที่
6. ง่ายต่อการนำไปใช้งานเนื่องจากในปัจจุบันมีเครื่องมือมากมายที่ใช้ช่วยเหลือในการพัฒนาWeb Services
7. สามารถเชื่อมโยงสารสนเทศภายในองค์กรได้อย่างมีประสิทธิภาพ
-------------------------------------------------------------------------------------------------

SOA กับ Web Services เหมือนหรือแตกต่างกันอย่างไร

SOA เป็นรูปแบบของการพัฒนาซอฟต์แวร์ที่เน้นให้ซอฟต์แวร์สามารถให้บริการได้โดยไม่ มีเงื่อนไขหรือข้อกำหนดของแพลตฟอร์มที่ใช้ของผู้ร้องขอบริการ ส่วน Web service เป็นซอฟต์แวร์ที่ให้บริการผ่านทางอินเทอร์เน็ตซึ่งข้อมูลระหว่างผู้ให้บริการและผู้ขอบริการอยู่ในรูปแบบของภาษาเอกซ์เอ็มแอล ฉะนั้นจริง ๆ แล้ว Web service คือซอฟต์แวร์ที่สามารถพัฒนาในอยู่ในรูปแบบของ SOA การที่ผู้ให้บริการ Web service และ ผู้ร้องขอ Web service สื่อสารกันด้วยภาษาเอกซ์เอ็มแอลซึ่งเป็นภาษามาตรฐานที่ใช้ในการนำเสนอและแลกเปลี่ยนข้อมูลผ่านทางอินเทอร์เน็ต จึงทำให้การเรียกใช้ Web service ไม่ขึ้นอยู่กับแพลตฟอร์มของผู้เรียกใช้ โดยสรุปแล้ว SOA เป็นสไตล์หรือเป็นรูปแบบ ส่วน Web service Technology เป็นวิธีการพัฒนา ความสัมพันธ์ระหว่าง SOA และ Web Services ก็คือ Web service เป็นซอฟต์แวร์ที่ทำให้ SOA เกิดขึ้นจริงและใช้ได้จริง