Service Oriented Architecture SOA คืออะไร
แบ่ง 3 ข้อ
1.ความรู้พื้นฐานเกี่ยวกับ SOA
2.เราจะใช้ tool อะไรในการสร้าง SOA หรือ implements
3.วิธีการสร้าง
1. concept พื้นฐานของ SOA ก็คือมองทุกอย่างเป็น service
อย่างถ้า OOP เราจะมองทุกอย่างเป็น object ใช่มั้ย แต่อันนี้เรามองเป็น service แทน
ตัวอย่างที่เขาชอบยกมาก็คือ service เช่น บริการจองโรงแรม บริการจองตั๋วเครื่องบิน บริการดูราคาหุ้น (Stock Quote)
ซึ่งเวลามองก็จะมองว่า มีบริการอย่างนี้นะ เราใส่ข้อมูลความต้องการเราลงไป แล้วเราได้บริการกลับมา
ซึ่งมันจะต่างจาก object ที่จะมองเป็น properties/behavior
web service ก็เป็น implementation อย่างนึงของ SOA ทำนองเดียวกับที่ Java เป็น implementation ของ OO
web service (WS) ก็จะประกอบด้วยส่วนหลักๆที่ควรรู้จัก 3 อัน ก็คือ WSDL, SOAP, UDDI (ทุกตัวเป็น XML)
ถ้าให้อธิบายคร่าวๆ
- SOAP จะเป็นส่วน transportation protocol คือมันจะติดต่อกันด้วย SOAP
- WSDL จะเป็นตัวอธิบาย มองง่ายๆจะคล้ายๆ interface ก็คือจะอธิบายว่า service นี้รับ parameter อะไรบ้าง ส่งอะไรกลับคืนมา
- UDDI จะเป็นคล้ายๆสมุดหน้าเหลือง เวลาจะหา service ที่ต้องการก็เข้าไปเปิดหาในนี้
Invocation model ของ WS แบบในฝันก็คือ user ต้องการใช้บริการ เช่น อยากจองตั๋วเครื่องบิน ก็ไปดูใน UDDI ซึ่งมันก็จะมีหลายเจ้าที่ให้บริการที่เหมือนกัน ก็เลือกมาเจ้านึง (ซึ่งจะใช้เงื่อนไขอะไรนั้นก็เช่น QoS, Location, etc. )
แล้วก็จะได้ WSDL file (location) ของ service นั้นๆมาจาก UDDI
แล้วพอได้ WSDL file มาแล้วเราก็จะสามารถติดต่อกับ service นั้นๆได้แล้ว
แต่ ปัจจุบัน UDDI มันยังไม่ค่อยมีคนใช้ หลักสำคัญก็คือต้องรู้ WSDLของ service ที่จะเรียกเป็นใช้ได้ ถ้ารู้อยู่แล้วก็ข้าม UDDI ไปได้เลย
2. อันนี้มันมีให้เลือกหลากหลาย ก็แล้วแต่ภาษาแล้วก็เทคโนโลยีที่ใช้ อย่างถ้าจะทำ WS ด้วย Java มันก็มีให้ใช้หลายตัวมากๆเลย อย่างเช่น JWSDP, Axis, และอื่นๆ พวกตระกูล .NET ก็จะมีของมัน
3. ก็ต้องแล้วแต่ technology ที่ใช้
แต่ หลักๆของมันก็คล้ายๆกัน คือถ้าจะสร้าง service ให้คนอื่นใช้ tool มันก็จะสร้าง WSDL file ออกมาให้ แต่ถ้าจะไปใช้ของเขา เราก็ต้องรู้ WSDL ของเขา แล้วเราก็สร้าง class ไฟล์มาเพื่อไปเรียกมันอีกที ปกติถ้าจะทำ web service จากโปรแกรมที่มีอยู่แล้ว ก็แค่สร้าง interface แล้วก็เอามาสร้าง wsdl ด้วย tool แล้วเอาไป deploy ก็ใช้ได้แล้ว
Source: SOA Service Oriented Architecture information at tism50b.multify.com
31 December 2008
ว่าด้วย SOA
เขียนโดย
Trirat
ที่
12/31/2008
0
ความคิดเห็น
ป้ายกำกับ: SOA Articles
Java SOA คืออะไร
Java SOA Service Oriented Architecture คืออะไร
SOA (Service Oriented Architecture) เป็นรูปแบบในการออกแบบระบบ (system) หรือ โปรแกรมประยุกต์ (application) แบบหนึ่ง
อย่าง object oriented เวลาออกแบบระบบ เราจะมองเป็น object หรือ class
แยกแยะระบบออกมาเป็น class และความสัมพันธ์ (relations)
แต่ SOA จะมองระบบ ประกอบด้วยการทำงานหรือบริการ (service) ต่างๆ
แล้ว service คืออะไรล่ะ?
service ก็คล้าย function หรือ method นั่นแหละ คือมีหน้าที่ทำอะไรสักอย่าง ถึงเวลาเราก็เรียกใช้
แต่ service มีลักษณะ high level และเป็นมุมมองเชิงธุรกิจมากกว่า เช่น มองระบบธนาคารประกอบด้วยบริการถอน withdrawal service, บริการฝาก deposit service
แทนที่จะมองเป็น class Customer หรือ class Teller ที่มี operation withdrawal หรือ deposit
สิ่งที่ service ทำได้ แต่ method ทั่วไปทำไม่ได้ คือ distributed system
นั่นคือแต่ละ service สามารถถูกเรียกจากต่างระบบ, host หรือ JVM กันได้
แต่ละ service มีอิสระต่อกัน ไม่ได้กระจุกติดกันอยู่ใน application หรือ jar file หนึ่ง
พูดง่าย ๆ service ก็คือ method ที่ถูกดึงมาไว้ข้างนอกนั่นเอง
ข้อดีของ service คือ loose coupling และสามารถใช้ร่วมกันได้ บางคนอาจเถียงว่า method ก็สามารถใช้ร่วมกันได้
แต่ service สามารถใช้ร่วมกันระดับ application ครับ เช่น ธนาคาร A มี Deposit service
ธนาคาร B, C สามารถเขียน application มาเรียกใช้ Deposit service ของธนาคาร A ได้ นั่นคือเป็นการ reuse ระดับ high-level ขึ้นมาอีก
SOA กัน web services
ที่ SOA เป็นพูดถึงกันมากส่วนหนึ่งก็เพราะ web services นั่นเอง ความจริง SOA ไม่ใช่ของใหม่ ถ้าเราสังเกตลักษณะของ service จะมีส่วน implementation แยกกับ interface เสมอ
เพื่อลด coupling ระหว่าง service กับผู้เรียก ซึ่งแนวคิดนี้มีใน J2EE (RMI), CORBA และ COM อยู่แล้ว นั่นคือเราสามารถใช้ RMI technology (ซึ่งเป็น distributed technology) ทำ SOA ได้
แต่ว่า จุดขายที่สำคัญของ web services คือ platform independent ผู้เรียกกับ service ไม่จำเป็นต้องเป็น platform เดียวกัน (java application เรียกใช้ .NET service) ซึ่งต่างจาก RMI ที่ต้องเป็น java หรือ CORBA ที่ต้องเป็น Java หรือ C++
ในปัจจุบันถ้า web services คือหัวใจของ SOA, XML ก็คือเส้นเลือดหล่อเลี้ยงหัวใจ เพราะ XML ทำให้ Web services เป็น platform independent technology ซึ่งช่วยให้สามารถ communicate ระหว่าง B2B หรือ new system กับ legacy system ที่เป็นต่างภาษา หรือ platform ได้
XML เป็น markup language มีลักษณะเป็น text ใครก็เปิดอ่านได้ และอ่านรู้รื่องได้ไม่ยาก ขอให้ผู้เรียกกับ service เข้าใจ xml ก็เป็น web services ได้แล้ว
ซึ่ง technology ที่เกี่ยวกับ web services ส่วนใหญ่เกี่ยวข้องกับ XML ทั้งนั้น เช่น WSDL, SOAP, BPEL
SOA กับ web services จะเป็นเครื่องมือสำคัญในการพัฒนา enterprise application ในอนาคต ด้วยจุดเด่น คือ
1. loose coupling
2. ความคล่องตัว ปรับเปลี่ยนง่าย
3. high reusability
4. ที่สำคัญช่วยลด cost ในการ mainteinence
ตามหลักการแล้ว web service สามารถเรียกข้ามองค์กร (cross organization)ได้ แต่ว่า spec บางอย่างของ Web services ยังไม่นิ่ง เช่น security, trasaction, และ QoS ต่าง ๆ
ดังนั้น การใช้ SOA ส่วนใหญ่จึงเป็นการเรียกใช้ web service ภายในองค์กรของตัวเองเท่านั้น
สิ่งที่ทำได้ตอนนี้ คือ เกาะติดความก้าวหน้าของ SOA และพิจารณาความเสี่ยงเมื่อนำ SOA มาใช้อย่างรอบคอบ เพราะ SOA ก็มีต้นทุนสูง, learning curve พอสมควร
และที่สำคัญจะได้ไม่เป็นเหยื่อคำโฆษณาของเหล่า vendor นั่นเอง
จากบทความก่อนหน้า ผมบอกว่า web service (WS) ก็คล้าย method แต่ว่าถูกดึงออกมาอยู่ข้างนอกลอย ๆ
ที่นี้เราจะทำอย่างไร เพื่อเรียกใช้มันเพื่อสร้าง application หรือ business process ที่ประกอบด้วย web service หลาย อัน
ก่อนอื่นขอแบ่งประเภทของเว็บเซอร์วิสเป็น 2 ประเภท
1. Atomic web service - เว็บเซอร์วิสทำงานด้วยตัวเอง ไม่จำเป็นต้องพึ่งพาเว็บเซอร์วิส
2. Composite web service - เว็บเซอร์วิสที่ต้องเรียกใช้เว็บเซอร์วิสอื่น เพื่อสร้าง service ของตัวเอง
จากนั้นเราแบ่งจุดประสงค์ของการเรียกใช้ WS เป็น 2 แบบ
1. เรียกใช้ เพราะเราต้องใช้จริงๆ ผู้เรียกมักเป็นend user client เช่น ผู้ใช้ส่งข้อมูลไปยัง WS ของบริษัททัวร์ เพื่อซื้อ packageทัวร์
2. เรียกใช้ เพราะจะไปให้คนอื่นใช้ต่อ ก็คือ Composite WS นั่นละ ต้องเรียกใช้หลายๆ WS มาประกอบกันเพื่อสร้าง service ของตัวเอง
เช่น WS ของบริษัททัวร์ เรียกใช้ WS ของโรงแรมเพื่อจองห้อง, สายการบินเพื่อจองตั๋ว และธนาคารเพื่อตัดยอดเงิน
การเรียกใช้ web service มี 2 วิธีหลักๆ ได้แก่
1. ใช้ Web service client API เช่น WSIF, WSE เป็นต้น ก็คือเราเขียน application (ด้วยJava หรือ .NET) ของเราไปตามปกติ
เมื่อถึงเวลาต้องเรียกใช้ WS ก็เรียกใช้ API แทน เหมือนกับการเขียนโปรแกรมปกติทั่วไป วิธีนี้เหมาะกับ end user client ที่เป็นผู้ใช้ปลายทางจริงๆ
เพราะไม่ค่อยมีการเปลี่ยนแปลงบ่อย และมักเรียกเพียงไม่กี่ service
อย่างไรก็ตามวิธีนี้ไม่เหมาะกับการสร้าง Composite WS เพราะเรามักใช้ Composite WS เพื่อสร้าง business process
(business process คือ บริการที่เห็นหรือสัมผัสได้โดยตรงจากผู้ใช้หรือลูกค้า และให้ผลตอบแทนกับองค์กร นั่นก็คือservice นอกสุดที่ให้บริการลูกค้าโดยตรงนั่นเอง)
ซึ่งมี business logic ซึ่งอาจเปลี่ยนแปลงบ่อยๆ นอกจากนี้ business goal ของการสร้างapplication ด้วย WS ก็เพื่อความคล่องตัว (agility) ปรับเปลี่ยนง่าย จะได้สอดคล้องกับสภาพธุรกิจปัจจุบันที่มีการแข่งขันสูง ดังนั้นการผูกแต่ละ WS ไว้ด้วยการ coding แบบเก่านั้น จึงไม่เหมาะกับการสร้าง business process ด้วย WS
ตามหลักการของ SOA
2. ใช้ WS ตัวกลาง (mediator) มาเรียกใช้ sub-WS นั่นคือใช้ BPEL (Business Process Execution Language) นั่นเอง
การจะสร้าง business process หรือ composite WS จาก BPEL ต้องประกอบด้วย 2 ส่วน ได้แก่
2.1 BPEL file - BPEL เป็นภาษาที่ไว้ใช้กำหนด business process ซึ่งจริงๆ แล้ว เป็นภาษา xml
ลักษณะของ BPEL คือ เป็น procedural language คล้ายกับ flow chart ทำหน้าที่กำหนดว่าจะเรียก WS ไหน, เมื่อไหร่ และอาจเก็บตัวแปรด้วย
การทำงานจะไปข้างหน้าเรื่อย ๆ จนจบไฟล์ (ลองนึกถึง file build.xml ของ Ant อาจเข้าใจ การทำงานคล้ายอย่างงั้นเลย)
2.2 BPEL engine คือ ตัวที่จะมาอ่าน BPEL ที่เราเขียน และ สร้าง composite WS ให้ทำงานตามที่กำหนดใน BPEL นั่นเอง (คล้าย Ant tool ที่อ่าน build.xml)
client ที่เรียกใช้จะเห็น composite WS ที่สร้างขึ้นเป็นเหมือน WS ทั่วไป
BPEL engine ปัจจุบันก็เช่นBPEL manager ของ oracle ซึ่ง vendor ส่วนใหญ่จะมี BPEL designer ติดมาด้วย เพื่อสร้างและแปลง flow chart เป็น bpel (อย่างที่บอกว่าbpel เป็นภาษาที่เหมือน flow chart อยู่แล้ว ไม่มีแยก function มี control flow แค่switch-case, loop และก็อย่างอื่นอีกนิดหน่อย สามารถดูตัวอย่างได้ที่ link อ้างอิง)
นอกจากนี้ BPEL ยังสนับสนุนการทำงานแบบ concurrent, asynchronous และ exception handling ด้วย อย่างไรก็ตาม BPEL ก็คือ procedural language
ที่ไว้ใช้สร้าง Composite web service โดยการระบุการเรียกใช้ WS อื่นๆ เพื่อสนับสนุนแนวความคิดของ SOA นั่นเอง
Source: SOA Service Oriented Architecture information at ct.rmutr.ac.th
เขียนโดย
Trirat
ที่
12/31/2008
0
ความคิดเห็น
ป้ายกำกับ: SOA Articles
Service-Oriented Architecture (SOA) คืออะไร
SOA Service-Oriented Architecture คืออะไร
เมื่อการแข่งขันมาถึงจุดที่การให้บริการลูกค้าเป็นสิ่งสำคัญมากกว่าการแข่งขันเรื่องราคา หรือผลิตภัณฑ์ใหม่ๆ ที่ใครๆก็สามารถทำได้ เหตุนี้ทำให้องค์กรต้องปรับเปลี่ยนรูปแบบการให้บริการเพื่อขยายให้ทันกับความต้องการของลูกค้า ตัวอย่างเช่น บริษัทผู้ให้บริการโทรศัพท์เคลื่อนที่ ในการสร้างบริการให้ลูกค้าเข้าถึงด้วยการเข้าใช้บริการผ่านร้านให้บริการ ไม่ว่าจะเป็นการเปิดบริการ ซ่อมเครื่อง รวมไปถึงสอบถามบริการผ่านคอลเซ็นเตอร์ แทนที่จะเข้ามารับบริการที่ส่วนกลาง
ทว่าระบบต่างๆที่กระจายอยู่ตามร้านให้บริการ และคอลเซ็นเตอร์นั้น ต้องพึ่งระบบไอทีจากส่วนกลางในการให้บริการ
ดังนั้น ระบบไอทีหลังบ้านจึงจำเป็นต้องสนับสนุนการทำงานที่ขยายเพิ่มขึ้น !!!
ดังนั้น แนวคิดการใช้ SOA (Service-Oriented Architecture )จึง เกิดขึ้น เพราะการใช้ไอทีในองค์กรไม่ได้จำกัดอยู่เพียงการใช้ซอฟต์แวร์สำเร็จรูป ที่ไม่เพียงพอต่อการทำงานที่เพิ่มขึ้น อีกต่อไป
SOA กระทบโครงสร้างไอทีขององค์กร
SOA ไม่ใช่ซอฟต์แวร์ หรือ แพ็คเกจ นายพัฒน์พงศ์ บุปผรัตน์ ที่ปรึกษาอาสุโสด้านธุรกิจและหัวหน้าทีมพัฒนาธุรกิจขององค์กร บริษัท เครือเจริญโภคภัณฑ์ จำกัด อธิบายถึงแนวคิดของ SOA ว่า SOA แบ่งเป็น 2 คำ Service-Oriented และ Architecture
คำแรก Service-Oriented เป็น Software ที่ไม่ใช่ซอฟต์แวร์ แพ็คเกจ แต่เป็นซอฟต์แวร์ตัวเล็ก ทำงานเฉพาะด้าน ขึ้นอยู่กับว่าจะแบ่งเป็นบริการอะไรบ้าง
คำที่สอง Architecture คือการออกแบบ โดยจะมององค์กรโดยรวมว่าต้องการบริการอะไรบ้าง ก็จะแบ่งบริการนั้นๆออกเป็นส่วนย่อยๆ
ทั้งนี้ หลายคนมองว่า SOA คือ web service แต่จริงๆแล้วไม่ใช่เพราะ web service เป็นแค่เครื่องมือในการใช้งาน
ดังนั้น SOA จึงไม่ใช่สินค้า หาซื้อไม่ได้ แต่มันคือแนวคิดที่ต้องสร้างเองในองค์กร
สำหรับสินค้าที่เกี่ยวข้องกับ SOA ประกอบด้วย 4 ส่วนคือ
Enterprise Service Bus เป็นโครงข่ายสำคัญในการขับเคลื่อน SOA ทั้งหมด เป็นการเชื่อมต่อระหว่างแอพพลิเคชัน
Design-Time Governance เป็น ดาต้า เบส กลางช่วยรวบรวมว่าองค์กรมีบริการอะไรบ้าง และช่วยนำบริการออกไปยังหน่วยงานและควบคุมบริการให้เหมาะสมกับองค์กรด้วย
Run-Time management เป็นตัวจัดการ ทำอย่างไรให้บริการทำงานสอดคล้องกับ SOA ที่ตั้งไว้ และ 4.Security Gateway ในที่นี้ไม่ได้หมายถึง Firewall ที่เป็นเน็ตเวิร์ก แต่เป็น Application Firewall ที่เข้าใจ คำสั่ง XML นอกจากนี้ต้องมี Application Delivery Control ช่วยเร่งความเร็วในการทำงานของ SOA ด้วย
เมื่อนำแนวคิด SOA เข้ามาใช้ แอพพลิเคชันแบบเก่าต้องถูกรื้อใหม่
จากแนวคิดเรื่อง SOA ทำให้เกิดการทำ Software as a service (SaaS) และ web 2.0 ขึ้น
SaaS คือ แอพพลิเคชัน แต่ไม่ใช่ แอพพลิเคชันตัวใหญ่ มีหน้าทีทำงานเฉพาะด้านในด้านหนึ่ง โดยการใช้งานของผู้ใช้ ไม่จำเป็นต้องเป็นเจ้าของแอพพลิเคชัน สามารถขอเช่าใช้งาน โดยมี Vender หรือหน่วยงานที่เกี่ยวข้องเป็นผู้ดูแลรักษา
การ์ทเนอร์ คาดการณ์ในปี 2010 ซอฟต์แวร์ทุกอย่างจะเป็น SaaS ในสัดส่วน 25%
ขณะที่ web 2.0 หลักการคือ คนใช้งานเป็นผู้จัดการข้อมูลได้ด้วยตัวเอง เจ้าของเว็บไซต์เป็นเพียงผู้ให้บริการ ไม่ใช่เจ้าของที่ทำหน้าที่ให้ข้อมูลเพียงฝ่ายเดียว การให้ข้อมูลต้องเกิดจากผู้ใช้งานและเป็นข้อมูลที่มีการสื่อสารได้ 2 ทาง
ตัวอย่างของสิ่งที่เกิดขึ้นจากแนวคิด web 2.0 ที่เห็นในตลาด ได้แก่ Blog ที่เจ้าของและสมาชิกเข้ามาแลกเปลี่ยนข้อมูลกันได้ ทำนองเดียวกับ Wikipedia หรือ Google Adsearch ที่ผู้ใช้สามารถเข้าไปควบคุมการทำงานว่าต้องการได้รับบริการรูปแบบใด
เมื่อเทรนด์เป็นเช่นนี้ องค์กรต่างๆที่ต้องการสร้างบริการให้เกิดความพึงพอใจแก่ลูกค้าจำเป็นต้องนำแนวคิดนี้ไปสร้างให้เกิดประโยชน์ในทางการตลาด
ช่องโหว่ SOA ที่ไม่ควรมองข้าม
ทว่าแนวคิด SOA ก็ต้องได้รับความปลอดภัยสูงเช่นกัน ในมุมมองของผู้ผลิตอุปกรณ์เครือข่าย อย่างบริษัท ทรีคอม (ประเทศไทย) จำกัด โดยนายสุรชัย ไชยรังกิจรัตน์ กล่าวว่า แนวคิด SOA คือการออกแบบอยู่บนซอฟต์แวร์ที่แยกกันเป็นส่วนๆ ถ้ามีซอฟต์แวร์ 10 ตัว ระบบก็ต้องรายงาน 10 ตัว ไม่เหมือนซอฟต์แวร์แบบดั้งเดิมที่รายงานรวมกันทั้งหมดเพียงครั้งเดียว
นอกจากนี้ เนื่องจาก SOA ใช้ web service เป็นเครื่องมือ ที่วิ่งอยู่บน Protocol XML ดังนั้นจึงเป็นมิตรกับมนุษย์ นั่นหมายถึงคนสามารถเข้าไปอ่านข้อมูลได้เพียงรู้ ชื่อผู้ใช้งาน ไม่เหมือนภาษาคอมพิวเตอร์แบบสมัยก่อน
ดังนั้นแต่ละช่องของซอฟต์แวร์ที่คุยกันจึงมีช่องว่างด้านความปลอดภัย ถูกโจมตีง่าย !!!
เน็ตเวิร์กจึงต้องมีความปลอดภัยสูง มีความเสถียรในการใช้งาน และสามารถมอนิเตอร์ได้ ต้องแน่ใจว่าไม่มีใครมาเปลี่ยนแปลงข้อมูลในการส่งระหว่างทางไปถึงผู้รับ
เมื่อ SOA คือคำตอบของการวางโครงสร้างพื้นฐานด้านไอทีแล้ว เพราะการใช้งานด้านไอที ไม่ได้จำกัดอยู่แต่เพียงการใช้ซอฟต์แวร์สำเร็จรูปเพื่อบันทึกข้อมูลของบุคลากรอีกต่อไป แต่ยังจำเป็นต้องวิเคราะห์และบริการจัดการข้อมูล และสร้างบริการในเชิงลึกอีกมาก สิ่งที่องค์กรต้องคำนึงถึงในการเลือกเวนเดอร์เพื่อเข้ามาสนับสนุนการวางระบบให้ สามารถเลือกได้ 2 แบบ คือ แบบแรก ใช้เวนเดอร์เจ้าเดียวเพื่อหาโซลูชันที่ต้องการให้ ซึ่งวิธีการนี้จะไม่มีปัญหาในการนำโซลูชันหลายๆอย่างมาอินทริเกรทกัน เพราะเวนเดอร์จะรู้ระบบและสามารถกระทำได้จากโซลูชันที่ได้เลือกมา วิธีที่สอง คือ ใช้เวนเดอร์หลายเจ้าโดยเลือกจากเวนเดอร์ที่มีจุดแข็งในแต่ละโซลูชัน แต่อาจมีปัญหาเรื่องการอินทริเกรทโซลูชัน เพราะเป็นโซลูชันจากคนละเวนเดอร์มาอยู่ด้วยกัน ดังนั้น ควรเลือก โซลูชันที่เป็นโอเพ่น ซอร์ส จะไม่มีปัญหาในการอินทริเกรท เนื่องจากเป็นซอฟต์แวร์เปิด
องค์กรใช้ไอทีในการขับเคลื่อนธุรกิจ ไม่ควรพลาดในการนำแนวคิด SOA ไปใช้ในองค์กร!!!
Source: SOA Service Oriented Architecture information at mfatix.com
เขียนโดย
Trirat
ที่
12/31/2008
0
ความคิดเห็น
ป้ายกำกับ: SOA Articles


