บทความนี้มีวัตถุประสงค์เพื่อเป็นงานส่วนหนึ่งของวิชา ITM 640 เทคโนโลยีการสื่อสารและอินเตอร์เน็ต
. รายวิชาเทคโนโลยีการสื่อสารและอินเตอร์เน็ต (Interner and Communication Technologies) แนะนำหลักการและความรู้พื้นฐานเกี่ยวกับเทคโนโลยีอินเตอร์เน็ตและการสื่อสาร เช่นอินเตอร์เน็ต อุปกรณ์โมเด็ม อินเตอร์เน็ตแถบกว้าง การสื่อสารในเครือข่ายขนาดเล็ก มาตรฐานอินเตอร์เน็ตต่างๆมาตรฐานอีเธอเน็ต เครือข่ายและเทคโนโลยีการสื่อสารภายในองค์กรขนาดใหญ่ โครงข่ายโทรศัพท์ทั้งชนิดมีสายและไร้สาย และการประยุกต์ใช้ระบบเครือข่ายความรู้ทั่วไปเกี่ยวกับอินเตอร์เน็ต, เวิร์ดไวต์เว็บ, Search Engine, ผู้ให้บริการอินเตอร์เน็ต และ การสื่อสารโทรคมนาคม, สถาปัตยกรรมไคลแอนท์-เซิร์ฟเวอร์, URL และชื่อโดเมน, เทคโนโลยีแบบหนุน, เครื่องมือต่างๆ สำหรับการจัดแต่งเว็บ, โปรโตคอลอินเตอร์เน็ต, การออกแบบเว็บไซต์และการจัดการลิงค์และเนื้อหา, ภาษาคอมพิวเตอร์ต่างๆ ได้แก่ HTML, XML, DHTML, Java, และ Perl, เทคโนโลยี DotNet, เทคโนโลยีเว็บเซอร์วิส, เทคโนโลยีเชิงวัตถุและ J2EE รวมถึงสภาพแวดล้อมของการพัฒนาระบบ, มัลติมีเดีย, ฐานข้อมูลเชิงสัมพันธ์และฐานข้อมูลเชิงวัตถุ, การป้องกันความมั่นคงปลอดภัยคอมพิวเตอร์ ได้แก่ ไฟร์วอลล์ การเข้ารหัสและถอดรหัส ระบบคริปโตแบบรหัสสาธารณะ และลายเซ็นต์ดิจิตอล, เกี่ยวกับ Search Engine ได้แก่ วจีภาคของเอกสาร, การบีบอัดและทำสารบัญ, สไปเดอร์และคลอเลอร์, การวัดความสำคัญ, การให้คะแนน, การจัดลำดับ หน้าเว็บ; การกำหนดคิวรี; ฟิลเตอร์, การแยกส่วนข้อมูล เกี่ยวกับซอฟต์แวร์เอเจนท์ : บอทและเอเจนท์, โบรกเกอร์และเอเวตาร์, การแทนความรู้, หลักวิธีค้นหา, การวินิจฉัยกฎ, นิวโรเน็ตเวิร์ค; ระบบสำหรับการเขียนโปรแกรมเอเจนท์
ขออนุญาตินำเสนอประวัติของท่านครับ

การศึกษา
- ปริญญาเอกด้านวิศวกรรมสื่อสารและโทรคมนาคม (Telecommunications)
Ph.D. in Telecommunications
จาก State University System of Florida (Florida Atlantic University), USA. - ปริญญาโทด้านวิศวกรรมสื่อสารและโทรคมนาคม (ระบบสื่อสารเคลื่อนที่และเซลลูล่า)
MS in EE (Mobile Communication)
จาก The George Washington University, Washington DC, USA. - ปริญญาโทด้านวิศวกรรมไฟฟ้า (Computer Communication Network)
MS in EE (Computer Communication Network)
จาก Georgia Institute of Technology, Atlanta, Georgia, USA. - ปริญญาตรีด้านวิศวกรรมไฟฟ้าสื่อสารโทรคมนาคม (เกียรตินิยมเหรียญทอง)
จาก โรงเรียนนายร้อยพระจุลจอมเกล้า
BS in EE (Telecommunications)
นักเรียนเตรียมทหารรุ่น 26, นักเรียนนายร้อย จปร. รุ่น 37
หลักสูตรที่สําคัญ
- 2543 หลักสูตรอบรม Performing Evaluations Involving Radiated Electromagnetic Interference
from Electromagnetic Interference Laboratory (EMI R&D LAB Corp.), Boca Raton, Florida,USA. - 2544 หลักสูตรอบรมกฎหมายทรัพย์สินทางปัญญาและการค้าระหว่างประเทศ เพื่อดำรงค์ตำแหน่งผู้พิพากษาสมทบศาลทรัพย์สินทางปัญญาและการค้าระหว่างประเทศกลาง
ตำแหน่งหน้าที่ในปัจจุบัน
- อาจารย์ภาควิศวกรรมไฟฟ้าและคอมพิวเตอร์ โรงเรียนนายร้อยพระจุลจอมเกล้า
- ช่วยราชการ สำนักงาน เสนาธิการทหารบก
- เลขานุการและที่ปรึกษา ประธานกรรมการ บริษัท กสท โทรมนาคม จำกัด (มหาชน)
- คณะกรรมการกำกับดูแล การดำเนินงานและโครงการของ บริษิท กสท โทรมนาคม จำกัด (มหาชน)
- คณะอนุกรรมาธิการ ทรัพยากรน้ำ ในคณะกรรมาธิการทรัพยากรธรรมชาติและสิ่งแวดล้อม สนช.
- CIO Board สำนักตรวจเงินแผ่นดิน
- Associate Professor of Business School, Touro University International, USA. (Accredited Internet Distance Learning University)
งานและตำแหน่งสำคัญในอดีต
- ผู้พิพากษาสมทบศาลทรัพย์สินทางปัญญาและการค้าระหว่างประเทศกลาง
- ที่ปรึกษาและคณะทำงานด้านเทคโนโลยีสารสนเทศ คณะกรรมการตรวจเงินแผ่นดิน
- คณะกรรมการร่างหลักเกณฑ์ใบอนุญาตประกอบกิจการ โทรคมนาคมผ่านดาวเทียมสื่อสาร และโครงข่ายสถานีวิทยุคมนาคมภาคพื้นดิน (คำสั่ง กทช. 22/2548)
- Adjunct Professor, School of Information Technology, Southern Cross University, Australia
- Adjunct Professor, Southern New Hampshire University, USA
- Adjunct Professor, University of Canberra, AU.
- ที่ปรึกษาคณะกรรมการพัฒนาระบบงานด้านเทคโนโลยีสารสนเทศกองทัพบก
เนื้อหาบทความ ...
SOA คืออะไร
SOA ย่อมาจาก Service-Oriented Architecture เป็นหลักการออกแบบสถาปัตยกรรมซอฟต์แวร์ ที่มีการพูดถึงกันมากในปัจจุบัน องค์กรพยายามที่จะออกแบบทางด้านไอทีให้เข้าสู่ระบบ SOA ก็คือการออกแบบที่มุ่งเน้นให้แอพพลิเคชันสามารถทำงานร่วมกันได้โดยไม่ขึ้นอยู่กับแพลตฟอร์ม ภาษาคอมพิวเตอร์ และเทคโนโลยีที่ใช้ในการพัฒนา ทำให้เป็นที่ต้องการในองค์กรปัจจุบันเป็นอย่างมาก เนื่องจากองค์กรในปัจจุบันมีสาขาย่อยอยู่หลายสาขาและต้องติดต่อกับหน่วยงานอื่น ๆ อีกหลายหน่วยงาน
เนื่องจาก SOA เป็นหลักการในการออกแบบ ดังนั้นการทำความเข้าใจและนำไปพัฒนาให้ใช้งานได้จริงนั้น ยังเป็นเรื่องอยาก จนเมื่อเว็บเซอร์วิส (Web Service) ซึ่งเป็นวิธีการหนึ่งในการพัฒนาตามหลักการของ SOA เกิดขึ้นมา จึงทำให้แนวคิด SOA ได้รับความนิยมขึ้นมาอย่างมากจนบางครั้งทำให้หลายคนคิดว่า SOA และเว็บเซอร์วิสเป็นเรื่องเดียวกัน แต่จริงๆ แล้ว SOA เป็นแนวคิดหรือรูปแบบในการออกแบบการให้บริการ ส่วนเว็บเซอร์วิสเป็นวิธีการหนึ่งในการพัฒนาตามหลักการของ SOA เท่านั้น ทั้งนิ้อาจใช้แนวทางอื่นในการพัฒนาระบบ SOA ก็ได้ เช่นการใช้ CORBA (Common Object Request Broker Architecture) หรือ Java RMI (Remote Method Invocation)
ภาพรวมและโครงสร้างพื้นฐานSOA นั้นถ้าให้เข้าใจกันง่าย ๆ นั้นก็เปรียบเสมือน เมืองที่มีบ้านเรือนแล้วมีถนนสายสำคัญที่เป็นเส้นทางเชื่อมต่อระหว่างบ้านแต่ละบ้าน บ้านเรือนต่าง ๆ ก็เป็นตัวแทนของผู้ใช้บริการและผู้ให้บริการ ส่วนถนนที่เป็นเส้นทางในการเดินทางนั้นก็เป็นตัวแทนของ ESB หรือ Enterprise Service Bus แล้วในการเชื่อมต่อเส้นทางต่าง ๆ ของเมืองนี้จะต้องมีผู้ที่รักษาความปลอดภัยให้ด้วยเพื่อให้บ้านเมืองมีการส่งข้อมูลเป็นระเบียบเรียบร้อยนั่นเอง ดังแสดงในรูปที่ 1
โครงสร้างพื้นฐานของ SOA (Infrastructure of SOA)
จากรูปที่ 1 จะเห็นส่วนประกอบสำคัญของ SOA ดังนี้- ผู้ให้บริการ (Service Provider)
คือผู้ที่เป็นเจ้าของบริการต่าง ๆ ที่เป็นตัวแทนในการให้บริการ - ผู้ใช้บริการ (Service requestor)
คือผู้ใช้บริการที่ต้องการเรียกใช้บริการจากบริการต่าง ๆ ที่มีอยู่ในระบบ - ตัวกลางในการหาบริการ (Service broker)
เป็นที่รู้จักกันในชื่อของ UDDI หรือ ตัว Registry เป็นตัวเก็บเซอร์วิสต่าง ๆ ที่มีอยู่ซึ่ง Registry จะเป็นตัวที่ใช้ในการค้นหาและเรียกใช้ เซอร์วิส - ช่องทางในการส่งข้อมูลหรือแลกเปลี่ยนข้อมูล (ESB : Enterprise Service Bus)
หลักการของ ESB คือมันจะเป็นตัวกลาง ที่ทำให้ผู้ที่ต้องการเรียกใช้ Service สามารถเรียกใช้ผ่าน ESB ได้ ทำให้สะดวกไม่ต้องติดต่อกับ Service ต่าง ๆ เอง เช่น ในการตรวจสอบข้อมูลผู้ร้าย ต้องมีระบบต่าง ๆ มากมายที่จำเป็น ต้องมีข้อมูลของประชากร เช่น ชื่อ ที่อยู่ รูป หรือประวัติการศึกษาการทำงานจากแหล่งต่าง ๆ ซึ่งหากระบบตรวจสอบ ต้องติดต่อกับระบบต่าง ๆ เพื่อให้ได้ข้อมูลของแต่ละระบบ จากระบบที่ยกตัวอย่างจะเห็นได้ว่าถ้าเรามีตัวกลางจัดการหาข้อมูลที่เราต้องการก็จะทำให้เกิดความสะดวก และง่ายต่อการค้นหา
ESB หลัก ๆ จะทำงานแบบ Publish/Subscribe กล่าวคือ มีระบบที่เป็น เซอร์วิส ทำการ Subscribe Message ภายใน Bus ไว้ หากมีระบบใดก็ตามที่ทำการจัดส่งข้อความที่ตรงกับหัวข้อที่ เซอร์วิส ทำการ Subscribe เอาไว้ ก็จะได้ข้อความนั้นไปทำงาน อย่างตัวอย่างข้างต้น ระบบค้นหาประชากร ระบบจัดการข้อมูลประชากร ระบบค้นหาข้อมูลการศึกษา ระบบค้นหาข้อมูลการทำงาน ระบบค้นหาข้อมูลการกระทำผิด จะทำการ Subscribe Message ของหัวข้อเรื่องค้นหาประชากรเอาไว้ หากมีข้อความที่มีหัวข้อนี้เข้ามาก็จะได้รับข้อความนั้นเพื่อนำไปสร้างข้อมูลประชากรภายในระบบ นอกจากนี้ ESB ยังมีความสามารถในเรื่องของ Workflow ที่จะช่วยจัดลำดับและ Logic ในการนำข้อความส่งให้เซอร์วิส ต่าง ๆ ด้วย เช่น ข้อมูลประชากรจะต้องส่งไปที่ ระบบค้นหาประชากรตามชื่อก่อน เพื่อจะได้ข้อมูลที่อยู่ เพื่อส่งต่อให้ระบบตรวจสอบการศึกษาและสถานที่ทำงานต่อไปเป็นต้น
ระดับต่าง ๆ ของ SOA
SOA จะเป็นการนำระบบเดิมมาจัดการใหม่โดยมีการจัดระดับเป็นเลเยอร์ ดังนี้
- ชั้นของระบบเดิม (Resource Layer) ประกอบไปด้วยระบบที่มีอยู่แล้ว ในปัจจุบัน เช่นระบบฐานข้อมูล Oracle ระบบโซลูชัน SAP หรือ Peoplesoft เป็นต้น
- ชั้นของการบริการ (Service Layer) จะเป็นชั้นที่ประกอบไปด้วย Service layer ของหลาย ๆ บริการที่สามารถนำกลับมาใช้ใหม่โดยจะเป็นบริการที่ได้พัฒนามาเป็นโมดูลย่อย ๆ ของแต่ละระบบที่เราได้นำมาใช้งาน
- ชั้นของกระบวนการทางธุรกิจ (Process Layer) ซึ่งจะเป็นการนำบริการของชั้นก่อนหน้านี้ทั้งหมดมารวมกันเป็นกระบวนการทางธุรกิจกระบวนการเดียว
- ชั้นของการเรียกใช้งาน (Access Layer) ซึ่งจะไม่จำกัดเพียงแค่เครื่องคอมพิวเตอร์ แต่จะรองรับได้ทุก ๆ อุปกรณ์เช่น โทรศัพท์มือถือ PDA Pocket PC และอุปกรณ์ต่าง ๆ ที่รองรับการทำงานบนเครือข่าย
รูปภาพที่ 2 Layer ของ 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
เครื่องมือสำคัญที่ใช้พัฒนาระบบ SOA
แม้ว่า SOA จะเป็ฯแนวคิดในการพัฒนาสถาปัตยกรรมไอที แต่การจะพัฒนา SOA ได้ก็จำเป็นจะต้องมีผลิตภัณฑ์ (Product) และเครื่องมือต่างๆ ดังนี้
1.ESB (Enterprise Service Bus)
จะทำหน้าที่เป็นมิดเดิ้ลแวร์ที่ใช้ในการเชื่อมต่อระบบไอทีต่างๆ ในชั้น Resource Layer เข้าด้วยกัน ERB เปรียบเสมือนถนนเพื่อให้ Service ต่างๆ ติดต่อกันได้ โดยทั่วไป ESB จะประกอบด้วย Server ต่างๆ
เพื่อทำหน้าที่ดังนี้
- Integration Server
เป็นมิดเดิ้ลแวร์เพื่อเชื่อมต่อกับระบบไอทีต่างๆ โดยเชื่อมต่อผ่าน Adapter ต่างกัน อาทิเช่น เว็บเซอร์วิส HTTP, FTP, SMTP และ JDBC Adapters เป็นต้น รวมถึง Application Adapter ต่างๆ เช่น Oracle Finance, SAP และ PeopleSoft Adapters เป็นต้น ดังนั้นจะเห็นได้ว่า การเชื่อมต่อกับ ESB ไม่มีความจำเป็นจะต้องเปลี่ยนโปรแกรมประยุกต์เดิมที่มีอยู่ให้เป็นเว็บเซอร์วิส
แต่บางกรณีสามารถทำได้โดยเรียกผ่าน Adapter โดยตรง - Registry & Repository Server เป็นมิดเดิ้ลแวร์เพื่อที่จะเก็บ SOA Service ต่างๆ ที่มีอยู่ รวมไปถึงการเก็บโปรแกรมประยุกต์หรือกระบวนการทางธุรกิจต่างๆ ที่พัฒนาขึ้นมา
- Message Server เป็นมิดเดิ้ลแวร์เพื่อที่จะเป็นตัวกลางในการส่งผ่านข่าวสาร (message) ระหว่างเซอร์วิสต่างๆ ทั้งนี้เพื่อประกันได้ว่าข่าวสารสามารถส่งถึงเซอร์วิสปลายทางได้อย่างถูกต้อง (Guarantee Message Delivery) โดยสามารถส่งข่าวสารได้ทั้งในรูปแบบ Queue และ Topic
รูปที่ 3 แสดงตัวอย่างฟังชั่นการทำงานของ 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
รูปภาพที่ 3 แสดงฟังก์ชั่นการทำงานของ EBS ในการเชื่อมโยงระบบเดิมที่มีอยู่กับเซอร์วิส
2.BPM (Business Process Management System
BMP คือการทำงานใน Process Layer โดยมีการพัฒนากระบวนการทางธุรกิจซึ่งเป็นการเขียนภาษา BPEL ที่อยู่ในรูปของ XML ดังนั้นจึงจำเป็นจะต้องมีเครื่องมือในการพัฒนาโปรแกรม BPEL หรือ DPEL 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.ระบบความปลอดภัย (Security)
การพัฒนา SOA ที่ดีต้องมีการทำ QoS ในด้าน Authentication ของเซอร์วิสต่างๆ
ดังนั้นระบบ SOA ส่วนใหญ่จึงมีระบบ Identity Management ในการกำหนดสิทธิ์ผู้ใช้
และมีระบบ SSO (Single Sign On) เพื่อให้ผู้ใช้ล็อกอินเพียงครั้งเดียวระบบ SOA จะประกอบด้วยเครื่อง Server จำนวนมาก โดยอาจมีสถาปัตยกรรมฮาร์ดแวร์ดังแสดงในรูปที่ 4
เหตุผลของการพัฒนา SOA
การพัฒนาสถาปัตยกรรม SOA จะมีประโยชน์กับองค์กรหลายด้าน เช่น การทำให้ข้อมูลต่างๆ ภายในองค์กรเชื่อมโยงกัน การลดค่าใช้จ่ายในการบำรุงรักษา การทำให้พัฒนาโปรแกรมใหม่เป็นไปด้วยความรวดเร็ว และทำให้ระบบไอทีในองค์กรไม่ผูกติดกับระบบใดระบบหนึ่ง
โครงสร้างของระบบไอทีขององค์กรขนาดใหญ่ (Information Technology Enterprise) จะประกอบไปด้วยระบบที่หลากหลายทั้งในด้านระบบปฏิบัติการ (Operation System) โปรแกรมประยุกต์ และระบบซอฟต์แวร์ ซึ่งโปรแกรมประยุกต์บางโปรแกรม อาจใช้ในการทำงานกับกระบวนการธุรกิจบางอย่าง ที่อาจทำงานภายใต้ระบบโครงสร้างไอทีเดิม เช่นพัฒนาโดยเครื่องเมนเฟรม ดังนั้นเมื่อมีความจำเป็นต้องเปลี่ยนแปลงกระบวนการทางธุรกิจ จะทำให้การเปลี่ยนแปลงโดยใช้โครงสร้างไอทีเดิมทำได้ยาก จนอาจมีความต้องการยกเลิกระบบเดิมและพึ่งพาเทคโนโลยีใหม่ ระบบ SOA จะช่วยคุ้มครองการลงทุนขององค์กร เพื่อให้นำระบบโครงสร้างไอทีเดิมมาใช้ต่อไปได้ โดยการพัฒนาระบบโปรแกรมเดิมให้เป็น SOA Service และสามารถพัฒนากระบวนการทางธุรกิจจากเซอร์วิสต่างๆ ที่มีอยู่ จึงทำให้องค์กรสามารถเปลี่ยนกระบวนการทางธุรกิจได้อย่างรวดเร็ว โดยใช้โปรแกรมประยุกต์เดิม และโครงสร้างไอทีเดิมที่มีอยู่
เหตุผลหลักขององค์กรในการพัฒนาระบบ SOA จึงมักจะเริ่มจากความต้องการในการเชื่อมโยงรระบบโครงสร้างไอทีต่างๆ ในปัจจุบันเข้าด้วนกันหรือการทำ Enterprise Application Integration (EAI) แต่ระบบ SOA จะต่างกับระบบ EAI เดิมในแง่ที่ของความสามารถในการพัฒนากระบวนการทางธุรกิจใหม่จากเซอร์วิสเดิมที่มีอยู่ และมีการใช้ถึงมาตรฐานต่างๆ จากนั้นก็จะเป็นการนำ SOA มาใช้เพื่อพัฒนากระบวนการทางธุรกิจใหม่ๆ
ประโยชน์ของการพัฒนา SOA
1. การติดต่อเชื่อมโยงทางธุรกิจ
เราสามารถเชื่อมโยงระบบขององค์กรของเรากับองค์กรภายนอกได้ โดยที่แต่ละองค์กรที่ทำการเชื่อมโยงกันนั้นมีรูปแบบหรือเทคโนโลยีที่ต่างกันหรือจะเหมือนกันก็ได้
2. ระบบไอทีสามารถเปลี่ยนได้ง่าย
ในการพัฒนาธุรกิจโดยการนำเอา SOA มาใช้นั้นจะเป็นการนำเอาระบบเดิมที่มีอยู่แล้วมาใช้งานใหม่ได้ ดังนั้นการที่เราจะปรับเปลี่ยนกระบวนการทางธุรกิจก็จะเป็นไปได้ง่าย หรือถ้าเราต้องการนำเอาเซอร์วิสใหม่มาเข้ารวมด้วยก็สามารถทำได้ง่ายแค่ทำการเชื่อมกระบวนการทางธุรกิจเข้าด้วยกันก็จะสามารถทำงานร่วมกันได้แล้ว
3. ลดค่าใช้จ่าย
เนื่องจากเราสามารถนำระบบเดิมมาใช้ใหม่ได้ดังการเราจึงลดค่าใช้จ่ายทางด้านการพัฒนาระบบใหม่ลงไปทำให้ค่าจ่ายที่จะต้องใช้พัฒนาระบบลดลงไปได้มากอีกทั้งยังลดระยะเวลาในการพัฒนาระบบ
4. ความเข้ากันของฝ่ายพัฒนาระบบกับฝ่ายธุรกิจ
เนื่องจากการทำงานส่วนใหญ่แล้วจะต้องทำงานกับกระบวนการทางธุรกิจเป็นหลักจึงทำให้ฝ่ายธุรกิจสามารถมองระบบออกได้ง่ายยิ่งขึ้นจึงทำให้การพัฒนาระบบสอดคล้องกันได้อย่างลงตัว และทำให้งานที่ได้เป็นไปอย่างมีประสิทธิภาพ
5. ลดความซับซ้อนในการพัฒนาและดูแลรักษาระบบ
ทำ SOA องค์กรต้องมีความพร้อมอะไรบ้าง
- ผู้บริหารต้องมีวิสัยทัศน์ด้านเทคโนโลยีและสถาปัตยกรรมซอฟต์แวร์ (technological and architectural visions) ที่ดี
- ตรวจสอบและติดตามกระบวนการจัดซื้อ/จัดจ้างอย่างใกล้ชิด เพื่อให้เกิดการทุจริต คอร์รัปชั่นน้อยที่สุดหรือไม่ให้มีเกิดขึ้นถ้าเป็นไปได้
- มีทีมที่ติดตามพฤติกรรมของผู้บริหารที่อาจมีการสุ่มเสี่ยงต่อการทุจริต คอร์รัปชั่น และต้องมีการดำเนินการโดยปราศจากเกมการเมืองภายในองค์กร หรือการเอื้อประโยชน์ซึ่งกันและกัน
- ฝ่ายไอทีขององค์กรต้องมีทีมพัฒนาซอฟต์แวร์ (software development team) ที่มีความรู้ ทักษะ และมีมาตรฐาน เพื่อจะได้รู้เท่าทันพวกกูรู้ต่าง ๆ
- มีการจัดการองค์ความรู้ (knowledge management) ที่ดี และสร้างฐานความรู้ (knowledge base) ที่ดีพร้อม ไม่ใช่ให้ความรู้อยู่กับคน แต่ความรู้ต้องอยู่กับองค์กร
- การทำงานระหว่างหน่วยงานภายใต้องค์กร เช่น แผนก ฝ่าย ต้องมีประสิทธิภาพ เพราะ SOA จำเป็นต้องทำร่วมกันโดยหลายฝ่าย มิใช่เพียงฝ่ายไอทีฝ่ายเดียว
- วัฒนธรรมองค์กรและวัฒนธรรมการทำงาน ที่ปราศจากการเมืองภายใน หรือมีให้น้อยที่สุด เพราะ SOA ไม่ใช่เป็นกิจกรรมของฝ่ายไอทีเพียงฝ่ายเดียว แต่เป็นกิจกรรมที่ต้องทำร่วมกันของหลายฝ่ายในองค์กร วัฒนธรรมองค์กรถือเป็นตัวชี้วัด (KPI) สำคัญต่อความสำเร็จหรือล้มเหลวของโครงการ SOA เลยทีเดียว หากวัฒนธรรมองค์กรอ่อนแอ ผุกร่อน หรือไม่พร้อม ก็ยังไม่ควรเริ่มกับ SOA
- ต้องมี (ทำ) Business Modeling หรือแบบจำลองธุรกิจหรือระบบงานขององค์กรที่ละเอียด ทำโดยคนขององค์กรเอง ไม่ใช่คนภายนอก หรือหากมีคนภายนอกด้วย คนภายนอกสามารถเป็นเพียงที่ปรึกษาได้เท่านั้น และไม่ใช่ทำแต่ Business Process เพราะเป็นเพียงศัพท์การตลาด และเป็นเพียงส่วนหนึ่งของการทำ Business Modeling เท่านั้น การวิเคราะห์และทำความเข้าใจกับ Business Process จึงถือว่าไม่เพียงพอ และมีรายละเอียดถือเป็นสัดส่วนน้อย เมื่อเทียบกับการทำ Business Modeling ที่มีความละเอียดและชัดเจนกว่า
- ต้องมี (ทำ) architecture ที่ดีและละเอียด ทำโดยคนขององค์กรเอง ไม่ใช่คนภายนอก หรือหากมีคนภายนอกด้วย คนภายนอกสามารถเป็นเพียงที่ปรึกษาได้เท่านั้น และต้องมีทีม architect ที่ดี มีความรู้และทักษะที่เพียบพร้อม ถ้าไม่มีต้องสร้างขึ้นมา อย่าหวังรับสมัครหรือหาจากคนภายนอก เพราะไม่มีทางหาได้ เพราะองค์กรต้องมี architect ที่มีความจงรักภักดี (loyalty) ต่อองค์กรที่ดี ดังนั้นจึงควรคัดเลือกและสร้างจากคนที่มีอยู่มากกว่าหาจากคนนอก
- มี Domain Expert หลาย ๆ ด้าน เช่น ด้านธุรกิจหรือระบบงานขององค์กร ด้านเทคนิค เป็นต้น
- กระบวนการพัฒนาซอฟต์แวร์ (software development process) ต้องมีวุฒิภาวะที่ดี แต่ไม่จำเป็นต้องมีใบประกาศนียบัตรรองรับ เช่น CMMi เพราะใบกระดาษพวกนี้ไม่ได้ยืนยันแท้จริงเสมอไป เพราะจำเป็นต้องสร้างวุฒิภาวะให้กับคนและองค์กรมากกว่า ไม่ใช่ไปมุ่งโฟกัสที่กระบวนการพัฒนาซอฟต์แวร์
- มีผู้นำหรือผู้ผลักดัน (motivator / champion) โดยมีความสามารถในการผลักดัน ชี้นำ กระตุ้น สนับสนุน ให้กำลังใจ มีทักษะด้านจิตวิทยามวลชนที่ดี เพื่อให้โครงการรุดหน้า สมาชิกทุกคนในทีมมีกำลังใจ ทำงานด้วยความสุข สนุก และมุ่งมั่น แต่ผู้นำไม่ใช่ทำตัวเป็นเพียงผู้ประสานงานเท่านั้น
- สร้างทีมเพื่อติดตามการทำงานของพวกกูรู้หรือกลุ่มบุคคลหรือบริษัทภายนอกที่จ้างให้เข้ามาช่วยงาน เช่น ติดตั้งระบบซอฟต์แวร์ ฮาร์ดแวร์ หรือเข้ามาพัฒนางานบางส่วน หรือเข้ามาอบรมการใช้งานซอฟต์แวร์และฮาร์ดแวร์ ทีมนี้ต้องทำ 'cross check' โดยมีลักษณะเป็นทีมเงา (shadow team / shadow process) โดยห้ามมิให้พวกกูรู้หรือกลุ่มบุคคลหรือบริษัทภายนอกที่จ้างให้เข้ามาช่วยงานทราบได้ ว่าในองค์กรมีการจัดตั้งทีมนี้ขึ้นมาเพื่อตรวจสอบและติดตาม (monitor) การทำงานอยู่อย่างลับ ๆ เพื่อดูว่าพวกนั้นเขามีความรู้ ทักษะ และทำงาน 'เป็น' จริงหรือไม่ มีการหลบ ๆ เลี่ยง ๆ ลัด ๆ อ้อม ๆ มั่ว ๆ ตรงไหนบ้าง นอกจากนี้ทีมนี้ยังสามารถเป็น 'architecture evaluator' หรือผู้ประเมินผลการออกแบบและสร้าง architecture ได้อีกด้วย ซึ่งมีลักษณะเป็น quality assurance หรือ quality control นั่นเอง
- ต้องมีทีมวิจัยและพัฒนา (R&D) ที่แข็ง เพื่อจะได้รู้เท่าทันเทคโนโลยี และสามารถวิจัยพัฒนาเทคโนโลยีต่อยอด เพื่อความเหมาะสมต่อองค์กรได้ โดยไม่ต้องพึ่งพาพวกกูรู้หรือกลุ่มบุคคลหรือบริษัทภายนอกมากเกินไป และโดยเฉพาะหากองค์กรมีการใช้โอเพ่นซอร์สด้วย ยิ่งจำเป็นต้องมีทีมวิจัยและพัฒนาที่แข็งแกร่ง
- มีทีมทดสอบ (testing) ที่แข็งแกร่งและมีความเชี่ยวชาญสูง เพราะ SOA เป็น architecture แบบ distributed computing ดังนั้น transaction ส่วนมากจึงเป็นแบบ distributed transaction จึงต้องออกแบบการทดสอบและทดสอบให้มีประสิทธิภาพ นอกจากนี้ยังมีประเด็นอื่นมากมายที่ต้องทดสอบเช่น security, performance, availability, usability, reliability, integrability, interoperability, scalability เป็นต้น
- งานในส่วนตรรกะธุรกิจหรือระบบงานที่สำคัญ (business rule) ต้องทำโดยคนภายในองค์กรเอง หรือหากจำเป็นต้องให้คนภายนอกทำ เช่น กรณีมีการ outsource ต้องห้ามเปิดเผย implementation หรือเนื้อในวิธีคิดและการทำงานจริงให้คนภายนอกเห็นเด็ดขาด แต่ให้เปิดเผย API แทน ดังนั้นหมายความว่า business rule ต้องออกแบบและสร้าง (เขียนโปรแกรม) โดยคนภายในองค์กรเอง และควรมีการกำหนดทีมเฉพาะขึ้นมาทำในส่วนนี้ โดยมีเอกสาร 'ห้ามเปิดเผยความลับ' (non disclosure agreement) ให้สมาชิกในทีมทุกคนเซ็นรับทราบ
- ทำการแกะระบบฯ (ซอฟต์แวร์และแอพพลิเคชั่น) เก่าที่มีอยู่ (architecture reconstruction) เพื่อสร้าง portfolio หรือประวัติศาสตร์ (history) ของระบบฯ ทุกตัวที่มีอยู่ ซึ่งบางระบบฯ อาจจำเป็นต้องมีการทำเอกสารขึ้นมาใหม่ หากของเดิมไม่มีคุณภาพพอ และเพื่อศึกษา architecture ของระบบฯ ที่มีอยู่ในองค์กร เพื่อประเมินว่าจะต้องมีการปรับแก้ (re-architecting) ระบบฯ ใดบ้าง เพื่อให้สามารถ integrate กันได้ตามแนวคิด SOA และเพื่อประเมินว่ามีส่วนใดที่สามารถ reuse ได้ และไม่สามารถ reuse ได้ เช่นจำเป็นต้องพัฒนาใหม่หรือโละทิ้ง ทั้งนี้ใน portfolio ก็คือ asset หรือทรัพย์สินนั่นเอง เพราะระบบฯ ที่มีอยู่ต้องมองว่าเป็นทรัพย์สิน และจากนี้ต่อไปหากมีการทำ architecture และ SOA อย่างหนักหน่วงจริงจัง ทุกสิ่งจึงควรแปลงเป็นทรัพย์สินได้ และดังนั้นจึงต้องสามารถจัดเก็บได้ โดยอาจจัดเก็บ portfolio ไว้ในระบบ configuration management หรือหากจะให้เกิดประโยชน์สูงสุด ควรเก็บไว้ใน data warehouse และควรมีการทำ mining และ knowledge base เพื่อสนับสนุนการตัดสินใจ การบริหารไอทีในองค์กร การบริหารโครงการ การ estimate ราคา (งบประมาณ), คน ฯ เป็นต้น
- ทำ Software Product Lines (SPL) ซึ่งประเด็น SPL นี้จำเป็นอย่างมาก องค์กรจำเป็นต้องทำ SPL เพราะสิ่งที่อยู่ใน SPL คือ core asset base หรือ core architecture นั่นเอง เพราะ SOA เป็น architecture ที่เน้นการ integrate ระบบฯ ต่าง ๆ ดังนั้น เมื่อ SOA เข้ามาครอบคลุมระบบฯ และทรัพยากรไอทีของทั้งองค์กร องค์กรจึงต้องมี core architecture ที่ดีและมีประสิทธิภาพรองรับระบบฯ ต่าง ๆ ที่มีอยู่ และ solution logic และ service ต่าง ๆ ที่จะเกิดขึ้นในอนาคต ดังนั้นการทำ SPL ที่ดีจึงต้องมองไปยังอนาคตข้างหน้า พิจารณาและทำร่วมกันโดยฝ่ายบริหาร ฝ่ายไอที และถ้าองค์มีฝ่ายการตลาดก็ต้องให้ฝ่ายการตลาดร่วมทำด้วย ลองสำรวจดูว่าองค์กรคุณมีข้อไหนบ้าง และไม่มีข้อไหนบ้าง และที่สำคัญการทำ SOA จะขาดข้อใดข้อหนึ่งไปไม่ได้ ดังนั้นกิจกรรมแรกก่อนหรือช่วงเพิ่งเริ่มทำ SOA ที่ต้องทำคือ 'ประเมินสถานะองค์กร' (assess organizational status) เพื่อประเมินความพร้อมขององค์กร และใช้เป็นข้อมูลเพื่อการตัดสินใจ
ทำ SOA ต้องรู้อะไรบ้าง?
ผู้สนใจ และผู้ที่กำลังทำหรือกำลังจะทำ SOA อยู่ โดยจะขอกล่าวถึงความรู้และทักษะของ architect หรืออาจเรียกว่าเป็น Service-Oriented Architect เท่านั้น เพราะเป็นหัวใจหลักของโครงการSOA ความรู้และทักษะที่จำเป็นที่ architect ต้องมีเพื่อทำ SOA คือ
- มีความจงรักภักดี (loyalty) ต่อองค์กร และคำนึงถึงผลประโยชน์ขององค์กรเป็นที่ตั้ง
- เข้าใจความหมายที่แท้จริงของคำว่า 'งานบริการ' และ 'หัวใจของงานบริการ'
- Understanding Social and Political Issues เช่น เล่นการเมืองเป็น อ่านเกมการเมืองออก
- Consulting เช่น เป็นที่ปรึกษาที่ดีแก่ทุกคนในองค์กร มีทักษะการเป็นนักวิเคราะห์ที่ดี และมีทักษะในการลดข้อขัดแย้งระหว่างการสนทนาหรือการทำงาน
- Communication เช่น สื่อสารกับทุกคนได้ วิ่งได้ทั่วผังองค์กร จะขึ้นข้างบน ลงข้างล่าง ไปซ้ายข้ามแผนก ไปขวาข้ามฝ่าย ฯ และมีจิตวิทยาและศิลปะการสื่อสารที่ดี และมีทักษะภาษาที่ดี ทั้งพูด ฟัง อ่าน เขียน โดยเฉพาะภาษาไทย
- Strategy เป็นนักกลยุทธ์และมีความคิดเชิงกลยุทธ์ที่ดี
- Lateral Thinking รู้จักคิดนอกกรอบ มองโลกในแง่ดี และแง่ร้ายเป็น เข้าใจทั้งสภาวะภายในและภายนอก
- Integrated Thinking คิด วิเคราะห์ ออกแบบ และปฏิบัติเชิงบูรณาการ
- Marketing เข้าใจหลักการประชาสัมพันธ์ การสื่อสารองค์กร มองเกมการตลาดออก และรู้จักใช้การตลาดเป็นเครื่องมือ
- Knowledge Transfer สามารถถ่ายทอดองค์ความรู้ให้ผู้อื่นได้ เช่น สมาชิกภายในทีม และต้องพัฒนาความรู้และทักษะของตัวเองอย่างต่อเนื่อง โดยสามารถกระตุ้นและบังคับตัวเองได้ โดยไม่ต้องรอให้ใครมาบังคับ
- มีภาวะผู้นำสูง
- Object-Orientation
- Object-Oriented Analysis and Design
- UML
- Aspect-Oriented Programming (AOP)
- Agile Philosophy เปรียบเทียบอีกอย่างนั่นคือ เข้าใจหลักปรัชญาเศรษฐกิจพอเพียง และดำเนินกิจกรรมทุกอย่างอยู่บนหลักแห่งความพอเพียง
- Business Modeling
- Software Engineering
- Software Development Process โดยเฉพาะต้องเป็น development life cycle แบบ Iterative and Incremental Development (IID) เท่านั้น
- Design Patterns and Architectural Patterns
- Software Architecture
- Enterprise Architecture
- Domain Modeling, Domain Specific Language and Domain Driven Architecture
- Event-Based Architecture
- Component-Based Architecture
- Enterprise Application Integration (EAI)
- Software Product Lines
- Distributed Computing
- Distributed Transaction Design and Management
- Security
- Architecture Reconstruction
- Architecture Evaluation
- Components Off-The-Shelf (COTS) Decision
- Software Testing ควรเป็นแบบ Test Driven Development
- มี Perspective Positioning ด้านเทคโนโลยีที่ดี
- Requirements Management โดยเฉพาะด้าน Business Goals และ Non-Functional Requirements
- Configuration and Change Management
- Principle Design for High Available and Interoperable Architecture
- Internet Protocol, Architecture and Web Services
- BPEL (Business Process Execution Language) and Enterprise Service Bus (ESB)
แล้วลองถามองค์กรดูว่ามีใครที่มีความรู้และทักษะเหล่านี้ไหม ไม่จำเป็นต้องมีทั้งหมดในตัวคนคนหนึ่ง เพราะ SOA ต้องมี 'Domain Expert' หลาย ๆ ด้านมาช่วยกันทำ แต่ที่แน่ ๆ สำหรับ architect ในโครงการ SOA ควรมีทักษะเหล่านี้
องค์กรต้องสร้าง Service Inventory Blueprint ขึ้นมาก่อน เพราะเปรียบเสมือนพิมพ์เขียวของ 'คลังบริการ' ขององค์กร อธิบายโครงสร้าง การทำงานของ service ระเบียบการเข้าใช้ การจัดเก็บ สิทธิ รายละเอียดของ service ทุกตัว รวมถึง service level agreement ของ service ทุกตัว การจัดทีม แบ่งทีม การกำหนดและเลือกใช้เทคโนโลยี ฯลฯ นอกจากนี้ยังรวมถึงแผนการใช้เงิน (งบประมาณ) เหล่านี้ไม่จำเป็นต้องง้อเครื่องมือราคาแพงใดๆเลย
เมื่อสร้าง Service Inventory Blueprint เสร็จแล้ว ถึงช่วงที่จะต้องอิมพลีเม้นต์ จึงค่อยมาดูเรื่องเครื่องไม้เครื่องมือ อุปกรณ์ซอฟต์แวร์ ฮาร์ดแวร์ การลงทุนการตั้งงบฯ การวางแผนงาน ถึงตอนนี้จะซื้อเครื่องมือราคาแพงใด ๆ หรือจะเลือกพัฒนาเอง หรือจะใช้โอเพ่นซอร์ส ก็ได้ เพราะเมื่อเหนื่อยกับการทำ Service Inventory Blueprint จนเสร็จและสมบูรณ์ได้เมื่อไร ถือว่าองค์กร... มีความพร้อมแล้ว
ส่วนที่มีประโยชน์มากสำหรับผู้สนใจคือส่วนของเอกสารเผยแผ่ซึ่งเป็นภาษาไทย ซึ่งมีบทความต่อไปนี้
บทความเรื่อง ปรากฏการณ์เอสโอเอ
บทความเรื่อง การเชื่อมโยงการทำงานข้ามองค์กรในกลุ่มอุตสาหกรรมธุรกิจประกันภัยโดยใช้เอสโอเอ
บทความเรื่อง Web Services Orchestration using BPEL
บทความเรื่อง การพัฒนาบริการ ASP.Net, JAX-WS, WCF และ SCA
References
1. Thanachart Numnonda and Thanisa Kruawaisayawan
- Eric Newcomer and Greg Lomow, Understanding SOA with Web Service, Addision-Wesley, 2005
- Thomas Erl, Service-Oriented Architecture Concepts Technology and Design, Prentice Hall, 2005
2. http://gotoknow.org/post/tag/soa
3. http://cits.mfu.ac.th/webboard3/viewtopic.php?t=232
4. http://www.narisa.com/blog/natty/index.php?&cat=151
5. http://www.narisa.com/forums/index.php?autocom=blog&blogid=21&showentry=1581