ข้ามไปที่เนื้อหาหลัก

SOA (Service-Oriented Architecture)



SOA (Service-Oriented Architecture)

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
พัฒนาการของ ระบบ Distributed Computing
               ระบบสถาปัตยกรรมเชิงบริการหรือ SOA มีพัฒนาการมาจากระบบ Distributed Computing ซึ่งเริ่มตั้งแต่ยุคแรกที่เป็น Single Tier ไปสู่ Web Tier ดังแสดงในรูปที่ 5 ในปัจจุบันหลายๆ องค์กรได้พัฒนา Web Applications ซึ่งส่วนมากจะพัฒนาโดยใช้ Java EE (Servlet/JSP), .NET (ASP) หรือ PHP ทั้งส่วนแสดงผล (Presentation Logic) และส่วนประมวลผล (Business Logic) ภายใน Web Server และผู้พัฒนาจะต้องพัฒนาส่วนที่เป็นเซอร์วิสระบบ (System Service) เช่น Concurrency, Load Balancing, Transaction และ Security เอง ทำให้การพัฒนา Web Application แบบ Web Tier สำหรับระบบขนาดใหญ่ทำได้ยาก

รูปที่ 5 Web Application Architecture

               แนวทางการพัฒนาระบบ Distributed Computing ในยุคถัดมา คือการพัฒนาระบบแบบ N-Tier ดังแสดงในรูปที่ 6 ซึ่งจะมีการนำเอา Application Server มาเป็นมิดเดิ้ลแวร์ (Middleware) เพื่อจัดการส่วนที่เป็นเซอร์วิสระบบและเรื่องที่เกี่ยวข้องกับทรัพยากรต่างๆ ของระบบ ทำให้นักพัฒนาสามารถที่จะเน้นการพัฒนาเฉพาะส่วนประมวลผล โดยการสร้างส่วนประกอบซอฟต์แวร์ (Software Component) หรือเซอร์วิส (Service) เพื่อให้ส่วนแสดงผลใน Web Server เรียกใช้งานได้
               ซึ่งวิธีการพัฒนาส่วนประกอบ ซอฟต์แวร์หรือเซอร์วิส อาจใช้ Java EE (EJB), .NET (NET Managed Component) หรือระบบ Legacy (IDL/CORBA) โดยใช้โพรโทคอลเฉพาะที่เป็น Binary Protocol ดังนี้
               RMI/IIOP สำหรับ Java EE
               COM สำหรับ Microsoft
               CORBA สำหรับระบบมาตรฐานทั่วไป

รูปที่ 6 N-Tier Architecture

              ระบบ Distributed Computing ในยุดถัดมาก็คือยุคที่มีการนำเว็บเซอร์วิสเข้ามาใช้ โดยการเปลี่ยนโพรโทคอลเฉพาะเหล่านั้นให้เป็นโพรโทคอลกลางที่มีมาตรฐาน เช่นการนำโพรโทคอล SOAP/REST มาใช้ในการเรียกเซอร์วิสแทนที่การใช้โพรโทคอล RMI/IIOP หรือการนำ WSDL มาใช้ในการประกาศเซอร์วิส ดังตัวอย่างในรูปที่ 7 ซึ่งเป็นการแสดงการเปลี่ยนส่วนประกอบซอฟต์แวร์ที่ใช้ Java EE ให้เป็นส่วนประกอบเซอร์วิส (Service Component) โดยการเพิ่ม Web Service Layer (ในทางปฏิบัติ Java Application Server จะสนับสนุนการเพิ่ม Web Service Layer อยู่แล้ว จึงไม่จำเป็นต้องเพิ่มเครื่อง Server)



 รูปที่ 7 N -Tier Architecture Using Web Service
รูป ที่ 8 .NET and Java EE Interoperability

เหตุผลของการพัฒนา 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 ได้ก็จำเป็นจะต้องมีผลิตภัณฑ์ (Product) และเครื่องมือต่างๆ ดังนี้
1. ESB
               จะทำหน้าที่เป็นมิดเดิ้ลแวร์ที่ใช้ในการเชื่อมต่อระบบไอทีต่างๆ ในชั้น Resource Layer เข้าด้วยกัน ESB เปรียบเสมือนถนนเพื่อให้ Service ต่างๆ ติดต่อกันได้ โดยทั่วไป ESB จะประกอบด้วย Server ต่างๆ เพื่อทำหน้าที่ดังนี้
               Integration Server เป็นมิดเดิ้ลแวร์เพื่อเชื่อมต่อกับระบบไอทีต่าง โดยเชื่อมต่อผ่าน Adapter ที่ต่างกัน อาทิเช่น เว็บเซอร์วิส HTTP, FTP, SMTP และ JDBC Adapters เป็นต้น รวมถึง Application Adapter ต่างๆ เช่น Oracle Finance, SAP และ PeopleSoft Adapters เป็นต้น ดังนั้นจะเห็นได้ว่า การเชื่อมต่อกับ ESB ไม่มีความจำเป็นจะต้องเปลี่ยนโปรแกรมประยุกต์เดิมที่มีอยู่ให้เป็นเว็บ เซอร์วิส แต่บางกรณีสามารถทำได้โดยเรียกผ่าน Adapter โดยตรง
               Registry & Repository Server เป็น middle ware เพื่อที่จะเก็บ SOA Service ต่างๆ ที่มีอยู่ รวมไปถึงการเก็บโปรแกรมประยุกต์หรือกระบวนการทางธุรกิจต่างๆ ที่พัฒนาขึ้นมา
               Messaging Server เป็นมิดเดิ้ลแวร์เพื่อที่จะเป็นตัวกลางในการส่งผ่านข่าวสาร (message) ระหว่างเซอร์วิสต่างๆ ทั้งนี้เพื่อประกันได้ว่าข่าวสารสามารถส่งถึงเซอร์วิสปลายทางได้อย่างถูก ต้อง (Guarantee Message Delivery) โดยสามารถส่งข่าวสารได้ทั้งในรูปแบบ Queue และ Topic
รูปที่ 9 แสดงตัวอย่างฟังก์ชันการทำงานของ ESB ที่ใช้เชื่อมต่อ Resource Layer ที่ประกอบด้วยเทคโนโลยีต่างๆ อาทิเช่น Oracle Database, Custom Application, SAP, .NET, E-mail หรือ Java โดยจะเห็นว่า ESB จะมีฟังก์ชันในการทำงานต่างๆ ดังนี้
               Adapters ที่ใช้ในการเชื่อมต่อ
               Data Validator, Data Transformer หรือ XML Wrapper เช่น ebXML, EDI และ SWIFT
               Messaging System สำหรับ Guarantee Message Delivery
                QoS ของ Service เช่น Authentication และ Authorization


รูป ที่ 9 ฟังก์ชันการทำงานของ ESB ในการเชื่อมโยงระบบเดิมที่มีอยู่กับเซอร์วิส

 2. Business Process Management (BPM) System
               BPM คือการทำงานใน Process Layer โดยมีการพัฒนากระบวนการทางธุรกิจซึ่งเป็นการเขียนภาษา BPEL ที่อยู่ในรูปของ XML ดังนั้นจึงจำเป็นจะต้องมีเครื่องมือในการพัฒนาโปรแกรม BPEL หรือ BPEL Designer โดยมากจะเป็นเครื่องมือที่สามารถเขียนกระบวนการทางธุรกิจในรูปของกราฟฟิกโดยใช้มาตรฐาน BPMN และสามารถที่จะแปลเป็น BPEL ได้ นอกจากนี้ยังจะต้องมี BPEL Engine เพื่อทำหน้าที่ในการรันโปรแกรม BPEL ที่พัฒนาขึ้นโดยการเรียกให้เซอร์วิส ตามคำสั่งของโปรแกรม BPEL

               ฟังก์ชันอีกส่วนหนึ่งที่สำคัญในการจัดการกระบวนการทางธุรกิจ คือ Business Process Monitoring เพื่อตรวจสอบการทำงานของกระบวนการทางธุรกิจที่รันอยู่ในมิดเดิ้ลแวร์

3. เครื่องมือพัฒนาโปรแกรมและมิดเดิ้ลแวร์สำหรับการเรียกใช้กระบวนการธุรกิจ
               กระบวนการทางธุรกิจสามารถที่จะกำหนดเป็นเซอร์วิสใหม่และเรียกใช้ผ่าน Access Layer ที่อาจเป็นโปรแกรม Desktop หรือ Web Programming ได้ ดังนั้นจึงจะต้องมีเครื่องมือในการพัฒนาโปรแกรมที่จะเรียกใช้กระบวนการทางธุรกิจเหล่านี้ ซึ่งอาจเป็นเครื่องมือในการสร้างเว็บ Workflow หรือรายงานต่างๆเช่น BAM (Business Activity Monitoring) นอกจากนี้บางองค์กรอาจต้องการพัฒนาเว็บท่า (Portal) ดังนั้นจึงอาจต้องมีมิดเดิ้ลแวร์ที่เป็น Portal Server เพื่อให้ผู้ใช้เข้าถึงจากจุดเดียว (Single Point of Entry) ได้

4. ระบบ Secure SOA
               การพัฒนา SOA ที่ดีต้องมีการทำ QoS ในด้าน Authentication ของเซอร์วิสาต่างๆ ดังนั้น ระบบ SOA ส่วนใหญ่จึงมีระบบ Identity Management ในการกำหนดสิทธิ์ผู้ใช้ และมีระบบ SSO  (Single Sign On) เพื่อให้ผู้ใช้ล็อกอินเพียงครั้งเดียว ระบบ SOA จะประกอบด้วยเครื่อง Server จำนวนมาก โดยอาจมีสถาปัตยกรรมฮาร์ดแวร์ดังแสดงในรูปที่ 10

รูปที่ 10 Practical SOA Hardware System


องค์กรที่นำระบบ 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 จำเป็นที่จะต้องมีผลิตภัณฑ์และเครื่องมือในการพัฒนา การพัฒนา SOA มีต้นทุนที่ค่อนข้างสูง และจำเป็นต้องมีทีมงานที่เข้าใจธุรกิจเฉพาะนั้นๆ แต่ผลตอบแทนระยะยาวจะคุ้มค่ามาก
CREDIT:
1. Eric Newcomer and Greg Lomow, Understanding SOA with Web Services, Addison-Wesley, 2005
2. Thomas Erl, Service-Oriented Architecture Concepts Technology and Design, Prentice Hall, 2005

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

วิธีใช้ Google Form ส่งข้อความเข้า LINE Notify

วิธีใช้ Google Form ส่งข้อความเข้า LINE Notify           ขั้นตอนต่อไปนี้จะข้ามส่วนของรายละเอียดบางอย่างไป ซึ่งก่อนจะทำตรงนี้ควรจะรู้แล้วว่า LINE Notify ใช้ทำอะไร และ Access Token จะเอามาจากไหน แต่จะพยายามอธิบายให้ครอบคลุมที่สุดก็แล้วกัน Update: 2019/06/10 ในท้ายบทความได้เพิ่มคำอธิบายเรื่องการส่งข้อมูลหลายกล่องข้อมูล (คอลั่ม) พร้อมกับ code ที่วนลูปข้อมูลทุกกล่อง เพื่อความสะดวกในการส่งข้อมูลในรูปแบบเดิม สร้าง Google Form วิธีสร้างก็ง่ายแสนง่าย เข้าไปที่  https://docs.google.com/forms  จากนั้น คลิกตรงเครื่องหมาย + ตามภาพ จะได้ form หน้าตาแบบนี้มา แก้ไขตามสะดวกเลย ตัวอย่างเอาแบบนี้แล้วกัน จะลองส่งข้อความคลิกที่รูป “ตา” พิมพ์ข้อความอะไรก็ได้ แล้ว กด Submit โลด กลับไปหน้า Form ของเราใน tab แรก มันก็จะมี RESPONSES เข้ามา เมื่อคลิกดูก็จะพบข้อความที่เราเพิ่งพิมพ์ไปเมื่อตะกี้ ใส่ code ใน Script Editor คลิกที่ จุด 3 จุด ด้านขวาบน แล้วเลือก  <> Script Editor จะพบหน้าเปล่าๆ ที่ไม่คุ้นเคย ตรงนี้แหละที่เราจะมาใส่ code ใ...

คาร์บอนฟุตพริ้นท์ (Carbon Footprint)

คาร์บอนฟุตพริ้นท์ ( Carbon Footprint) คาร์บอนฟุตพริ้นท์ ( Carbon Footprint) คืออะไร ในภาวะโลกร้อนที่นับวันยิ่งทวีความรุนแรงขึ้น ซึ่งสาเหตุที่สำคัญคงหนึไม่พ้นเกิดจากกิจกรรมต่างของมนุษย์เรานั่นเอง ทั้งจากการใช้พลังงาน การทำลายทรัพยากรธรรมชาติเช่น การตัดไม้ทำลายป่า การขนส่ง และการขยายตัวของภาคอุตสาหกรรม และในปัจจุบันเราจะพบว่าในหลาย ๆ ประเทศได้มีความตื่นตัวในเรื่องเกี่ยวกับภาวะโลกร้อนกันมากขึ้น และสิ่งหนึ่งที่ให้ความสนใจก็คือ การที่จะร่วมมือกันผลิตและบริโภคผลิตัณฑ์ที่เป็นมิตรกับสิ่งแวดล้อม โดยมีทั้งการเชิญให้ผู้ผลิตได้เข้าร่วมโครงการเพื่อให้ได้รับเครื่องหมายคาร์บอนฟุตพริ้นท์ และเชิญชวนให้ผู้บริโภคหันมาซื้อผลิตภัณฑ์ที่มีฉลากแสดงข้อมูลคาร์บอนฟุตพริ้นท์อีกด้วย คาร์บอนฟุตพริ้นท์ ( Carbon Footprint, CF) คือ การวัดผลกระทบสิ่งแวดล้อมด้านการเปลี่ยนแปลงภูมิอากาศ ซึ่งเกี่ยวข้องกับปริมาณการปล่อยก๊าซเรือนกระจก ( Greenhouse Gases, GHGs) จากกระบวนการผลิตสินค้าตลอดวัฎจักรชีวิต ( Product Life Cycle) โดยเริ่มตั้งแต่ การจัดหาวัตถุดิบนำไปแปรรูป ผลิต จดจำหน่าย การใช้งาน และการจัดการหลังจากผลิ...

ทำความเข้าใจ LM, NTLM, NTLMv2

ทำความเข้าใจ LM, NTLM, NTLMv2  วันนี้เราจะมาทำความเข้าใจเกี่ยวกับรูปแบบการเก็บ password ของ Windows โดยแต่ก่อนจนถึงปัจจุบันก็มีพัฒนาการมาเรื่อยๆครับ ซึ่งจะเริ่มจาก LM (Lan Manager) hash โดย LM นั้นเป็นรูปแบบดั้งเดิมในการเก็บ password ของ Windows ตั้งแต่ยุค 1980 ซึ่งในช่วงนั้นยังมีจำนวน charset ที่ยังจำกัดอยู่(16-bits characters) ซึ่งทำให้การ crack password นั้นทำได้ง่ายมากโดยดึงจาก SAM database บน Windows หรือว่า NTDS บน Domain Controller (Active Directory) ได้เลย โดยขั้นตอนการเปลี่ยน password อยู่ในรูปแบบ LM hash คือ เปลี่ยนอักษรทั้งหมดเป็นตัวใหญ่ หากตัวอักษรไม่ครบ 14 ตัวอักษรก็จะเติมตัวอักษรทั้งหมดให้เต็มด้วย NULL characters แบ่งเป็น 2 กลุ่ม กลุ่มละ 7 ตัวอักษร สร้าง DES key จาก character 7 ตัวทั้ง 2 กลุ่ม ก็จะได้ DES key 2 ชุด (ชุดละ 64 bit) นำ DES key ไปเข้ารหัส static string “KGS!@#$%” ด้วย DES (ECB) นำ encrypted strings ทั้ง 2 อันมาต่อกัน ก็จะได้เป็น LM Hash เช่น สมมติ password เป็น password password => password000000 PASSWORD000000 PASSWOR...