วันอาทิตย์ที่ 30 มกราคม พ.ศ. 2554

SOA : Service-Oriented Architecture

 SOA : สถาปัตยกรรมเชิงบริการ

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

การอธิบายแนวคิด SOA สามารถแบ่งได้เป็น 2 คำ คือ Service-Oriented และ Architecture
- Service-Oriented เป็น Software ที่ไม่ใช่ซอฟต์แวร์แพ็คเกจ แต่เป็นซอฟต์แวร์ตัวเล็ก ทำงานเฉพาะด้าน ขึ้นอยู่กับว่าจะแบ่งเป็นบริการอะไรบ้าง
- Architecture คือ การออกแบบ โดยจะมององค์กรโดยรวมว่าต้องการบริการอะไรบ้าง ก็จะแบ่งบริการนั้นๆออกเป็นส่วนย่อยๆ
             
ทั้งนี้ หลายคนมองว่า SOA คือ web service แต่จริงๆแล้วไม่ใช่เพราะ web service เป็นแค่เครื่องมือในการใช้งาน ดังนั้น SOA จึงไม่ใช่สินค้า หาซื้อไม่ได้ แต่มันคือแนวคิดที่ต้องสร้างเองในองค์กร
ปัจจุบัน SOA (Service-Oriented Architecture) เป็นหลักการการออกแบบสถาปัตยกรรมซอฟต์แวร์ที่มีการพูดถึงกันมาก โดยหลายๆ องค์กรพยายามที่จะออกแบบระบบทางด้านไอทีให้เข้าสู่ระบบ SOA แต่เนื่องจาก SOA เป็นหลักการในการออกแบบ ดังนั้นการทำความเข้าใจและนำไปพัฒนาให้ใช้งานได้จริงนั้น ยังเป็นเรื่องที่ยาก จนเมื่อเว็บเซอร์วิส (Web Service) ซึ่งเป็นวิธีการหนึ่งในการพัฒนาตามหลักการของ SOA เกิดขึ้นมา จึงทำให้แนวคิด SOA ได้รับความนิยมขึ้นมาอย่างมาก จนบางครั้งทำให้หลายๆ คนคิดว่า SOA และ web service เป็นเรื่องเดียวกัน แต่จริงๆ แล้ว SOA เป็นแนวคิดหรือรูปแบบในการออกแบบการให้บริการ ส่วนเว็บเซอร์วิสเป็นวิธีการหนึ่งในการพัฒนาตามหลักการของ SOA เท่านั้น ทั้งนี้อาจใช้แนวทางอื่นในการพัฒนาระบบ SOA ก็ได้ เช่นการใช้ CORBA (Common Object Request Broker Architecture) หรือ Java RMI (Remote Method Invocation)

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

แนวคิดของระบบ SOA คือการจัดระบบ Silo-Oriented Architecture ใหม่ โดยการสร้างระบบไอทีให้เป็น 4 ชั้น (Layer) ดังแสดงในรูป
  • 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)

 SOA Layers
  SOA Conceptual Diagram

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

คุณลักษณะที่สำคัญของระบบ 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

เหตุผลของการพัฒนา SOA
การพัฒนาสถาปัตยกรรม SOA จะมีประโยชน์ต่อองค์กรในหลายๆ ด้าน อาทิเช่น การทำให้ข้อมูลต่างๆภายในองค์กรเชื่อมโยงกัน การลดค่าใช้จ่ายในการบำรุงรักษา การทำให้การพัฒนาโปรแกรมใหม่เป็นไปด้วยความรวดเร็วขึ้น และทำให้ระบบไอทีในองค์กรไม่ผูกติดอยู่กับระบบใดระบบหนึ่ง
โครงสร้างของระบบไอทีขององค์กรขนาดใหญ่ (Information Technology Enterprise) จะประกอบไปด้วยระบบที่หลากหลายทั้งในด้านระบบปฏิบัติการ (Operating System) โปรแกรมประยุกต์ และระบบซอฟต์แวร์ ซึ่งโปรแกรมประยุกต์บางโปรแกรม อาจใช้ในการทำงานกับกระบวนการทางธุรกิจบางอย่าง ที่อาจทำงานภายใต้ระบบโครงสร้างไอทีเดิม เช่นพัฒนาโดยใช้เครื่องเมนเฟรม ดังนั้นเมื่อมีความจำเป็นต้องเปลี่ยนแปลงกระบวนการทางธุรกิจ จะทำให้การเปลี่ยนแปลงโดยใช้โครงสร้างไอทีเดิมทำได้ยาก จนอาจมีความต้องการที่จะยกเลิกระบบเดิมและพึ่งพาเทคโนโลยีใหม่ ระบบ SOA จะช่วยคุ้มครองการลงทุนขององค์กร เพื่อให้สามารถนำระบบโครงสร้างไอทีเดิมมาใช้ต่อไปได้ โดยการพัฒนาระบบโปรแกรมเดิมให้เป็น SOA Service และสามารถพัฒนากระบวนการทางธุรกิจจากเซอร์วิสต่างๆ ที่มีอยู่ จึงทำให้องค์กรสามารถเปลี่ยนกระบวนการทางธุรกิจได้อย่างรวดเร็ว โดยใช้โปรแกรมประยุกต์เดิม และโครงสร้างไอทีเดิมที่มีอยู่
เหตุผลหลักขององค์กรในการพัฒนาระบบ SOA จึงมักจะเริ่มจากความต้องการในการเชื่อมโยงระบบโครงสร้างไอทีต่างๆ ในปัจจุบันเข้าด้วยกัน หรือการทำ Enterprise Application Integration (EAI) แต่ระบบ SOA จะแตกต่างกับระบบ EAI เดิมในแง่ที่ของความสามารถในการพัฒนากระบวนการทางธุรกิจใหม่จากเซอร์วิสเดิมที่มีอยู่ และมีการใช้ถึงมาตรฐานต่างๆ จากนั้นก็จะเป็นการนำ SOA มาใช้เพื่อพัฒนากระบวนการทางธุรกิจใหม่ๆ

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

โซลูชันสำหรับการพัฒนา SOA
แม้ว่า SOA จะเป็นแนวคิดในการพัฒนาสถาปัตยกรรมไอที แต่การจะพัฒนา SOA ได้ก็จำเป็นจะต้องมีผลิตภัณฑ์ (Product) ต่างๆ ดังนี้
1. Enterprise Service Bus เป็นโครงข่ายสำคัญในการขับเคลื่อน SOA ทั้งหมด เป็นการเชื่อมต่อระหว่างแอพพลิเคชัน
            2. Design-Time Governance เป็น database กลางช่วยรวบรวมว่าองค์กรมีบริการอะไรบ้าง และช่วยนำบริการออกไปยังหน่วยงานและควบคุมบริการให้เหมาะสมกับองค์กรด้วย
3. Run-Time management เป็นตัวจัดการ ทำอย่างไรให้บริการทำงานสอดคล้องกับ SOA ที่ตั้งไว้
            4. Security Gateway ในที่นี้ไม่ได้หมายถึง Firewall ที่เป็นเน็ตเวิร์ก แต่เป็น Application Firewall ที่เข้าใจคำสั่ง XML นอกจากนี้ต้องมี Application Delivery Control ช่วยเร่งความเร็วในการทำงานของ SOA ด้วย

องค์กรที่นำระบบ SOA มาประยุกต์ใช้
แม้ว่า SOA จะมีประโยชน์และผลตอบแทนการลงทุนในระยะยาว (ROI: Return of Investment) จะคุ้มค่า แต่การลงทุนเริ่มต้นค่อนข้างสูง เพราะต้องการซอฟต์แวร์ ESB และฮาร์ดแวร์ขนาดใหญ่ที่มีหลาย CPU ประกอบกับค่าพัฒนาระบบค่อนข้างสูงเนื่องจากต้องการทีมงานที่เข้าใจกระบวนการธุรกิจด้านนั้น ในปัจจุบันองค์กรในประเทศไทยหลายๆ องค์กรเริ่มมีโครงการ SOA เข้ามาทั้งในภาคธุรกิจการเงิน โทรคมนาคม และภาครัฐ ซึ่งจะเห็นได้ว่าโครงการเหล่านี้มีมูลค่าหลายสิบล้านบาท และผู้พัฒนาไม่ใช่แค่นักพัฒนาโปรแกรม (Developer) แต่ต้องเป็นผู้เชี่ยวชาญด้านธุรกิจนั้นๆ ด้วย เพราะการนิยามเซอร์วิสและการพัฒนากระบวนการทางธุรกิจต้องมีความเข้าใจธุรกิจนั้นเป็นอย่างดี
ในต่างประเทศมีการนำ SOA มาประยุกต์ใช้ในองค์กรต่างๆ จำนวนมากทั้งในภาคการเงิน โทรคมนาคม ค้าปลีก ภาครัฐ และระบบสาธารณสุข ตัวอย่างเช่น Australia Department of Defense, Us Army, Center Point of Energy, Blue Cross, General Motors, ABN-AMRO และSmart เป็นต้น
ตัวอย่างของระบบสาธารณสุขใน UK (National Healthcare System) เป็นตัวอย่างหนึ่งที่น่าสนใจ เพราะเป็นการพัฒนาระบบ SOA ที่ใหญ่ที่สุดในโลกแห่งหนึ่ง โดยการเชื่อมโยงระบบไอทีของโรงพยาบาลกว่า 250 แห่ง คลีนิกและสถานพยาบาลกว่า 600,000 แห่งทั่วประเทศ เพื่อเชื่อมโยงระบบไอทีกว่า 10,000 ระบบ โครงการนี้ให้บริการประชาชนกว่า 50 ล้านคน และมีจำนวนธุรกรรม (Transaction) ต่อปีกว่าหกพันล้าน โดยโครงการนี้มีมูลค่าการลงทุนสูงถึง 2.3 พันล้านเหรียญสหรัฐ

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

ข้อเสียของ SOA
  • SOA มีปัญหาด้านการออกแบบให้เกิดความปลอดภัยและปัญหาเรื่องเสถียรภาพของระบบเครือข่าย ซึ่งถือเป็น "Infrastructure" หลักของ SOA เพราะถ้าหากระบบเครือข่ายเกิดปัญหา ย่อมส่งผลกระทบกับ SOA ทั้งระบบได้ การติดต่อรับส่งข้อมูลแบบ Plain Text ก็เป็นปัญหาใหญ่เหมือนกับเทคโนโลยี Web Service เช่นกัน
  • มีช่องว่างด้านความปลอดภัย ถูกโจมตีได้ง่าย

ช่องโหว่ SOA ที่ไม่ควรมองข้าม
            ทว่าแนวคิด SOA ก็ต้องได้รับความปลอดภัยสูงเช่นกัน  ในมุมมองของผู้ผลิตอุปกรณ์เครือข่าย อย่างบริษัท ทรีคอม (ประเทศไทย) จำกัด โดยนายสุรชัย ไชยรังกิจรัตน์ กล่าวว่า แนวคิด SOA คือการออกแบบอยู่บนซอฟต์แวร์ที่แยกกันเป็นส่วนๆ ถ้ามีซอฟต์แวร์ 10 ตัว ระบบก็ต้องรายงาน 10 ตัว ไม่เหมือนซอฟต์แวร์แบบดั้งเดิมที่รายงานรวมกันทั้งหมดเพียงครั้งเดียว
            นอกจากนี้ เนื่องจาก SOA ใช้ web service เป็นเครื่องมือ ที่วิ่งอยู่บน Protocol XML ดังนั้นจึงเป็นมิตรกับมนุษย์ นั่นหมายถึงคนสามารถเข้าไปอ่านข้อมูลได้เพียงรู้ชื่อผู้ใช้งาน ไม่เหมือนภาษาคอมพิวเตอร์แบบสมัยก่อน  ดังนั้นแต่ละช่องของซอฟต์แวร์ที่คุยกันจึงมีช่องว่างด้านความปลอดภัย ถูกโจมตีง่าย
            เน็ตเวิร์กจึงต้องมีความปลอดภัยสูง มีความเสถียรในการใช้งาน และสามารถมอนิเตอร์ได้ ต้องแน่ใจว่าไม่มีใครมาเปลี่ยนแปลงข้อมูลในการส่งระหว่างทางไปถึงผู้รับ
            เมื่อ SOA คือคำตอบของการวางโครงสร้างพื้นฐานด้านไอทีแล้ว เพราะการใช้งานด้านไอที ไม่ได้จำกัดอยู่แต่เพียงการใช้ซอฟต์แวร์สำเร็จรูปเพื่อบันทึกข้อมูลของบุคลากรอีกต่อไป แต่ยังจำเป็นต้องวิเคราะห์และบริการจัดการข้อมูล และสร้างบริการในเชิงลึกอีกมาก สิ่งที่องค์กรต้องคำนึงถึงในการเลือกเวนเดอร์เพื่อเข้ามาสนับสนุนการวางระบบให้ สามารถเลือกได้ 2 แบบ คือ แบบแรก ใช้เวนเดอร์เจ้าเดียวเพื่อหาโซลูชันที่ต้องการให้ ซึ่งวิธีการนี้จะไม่มีปัญหาในการนำโซลูชันหลายๆอย่างมาอินทริเกรทกัน เพราะเวนเดอร์จะรู้ระบบและสามารถกระทำได้จากโซลูชันที่ได้เลือกมา วิธีที่สอง คือ  ใช้เวนเดอร์หลายเจ้าโดยเลือกจากเวนเดอร์ที่มีจุดแข็งในแต่ละโซลูชัน แต่อาจมีปัญหาเรื่องการอินทริเกรทโซลูชัน เพราะเป็นโซลูชันจากคนละเวนเดอร์มาอยู่ด้วยกัน ดังนั้น ควรเลือกโซลูชันที่เป็นโอเพ่นซอร์ส จะไม่มีปัญหาในการอินทริเกรท เนื่องจากเป็นซอฟต์แวร์เปิด

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

Reference
http://liblog.dpu.ac.th/sukanda/?p=10
http://www.narisa.com/forums/index.php?showtopic=31187
http://www.thaijavadev.com/soa/articles/SOAIntro/SOAIntro.html
http://me.youngcyber.com/?p=66
http://guru.google.co.th/guru/thread?tid=5efb121cd95cc583

Download ppt : http://www.4shared.com/file/x_pDoeE8/SOA_Presentation.html


น.ส.อรกานต์       ผดุงสัจจกุล         5302110100
น.ส.ปทมา          วรรณะ               5302110167


ไม่มีความคิดเห็น:

แสดงความคิดเห็น