Posts Tagged ‘EAI’

Solving Integration Problems using Patterns ภาค2

January 20th, 2009

ภาคที่แล้วเกรื่นนำไว้ครับภาคนี้มาต่อในเรื่องของการทำ ว่านิยมทำแบบไหนกันบ้างในเรื่องของการทำ integration

 

เทคนิคการทำ Integration นั้นเบื้องต้นสามารถแบ่งได้ดังนี้

Information Portal

 

ในแง่ของการเข้าถึงข้อมูล ผู้ใช้ในองค์กรขนาดใหญ่ส่วนมากแล้ว ต้องทำงานหรือใช้ข้อมูลจากหลายๆระบบเพื่อให้บรรลุจุดหมายหรือตอบคำถามหนึ่งอย่างเช่น การตรวจสอบสถานะของออร์เดอร์จาก Mainframe หรือดึงข้อมูลลูกค้าออกมาจาก CRM เพื่อตอบคำถามลูกค้าผ่านระบบ Call  Centre ผ่านเวบ การทำงานแบบนี้ทำให้ผู้ใช้จำเป็นต้องเปิดโปรแกรมไว้อย่างต่ำสามตัวเพื่อทำงานหนึ่งงาน และต้อง login ค้างไว้ทั้งสามระบบ ปัญหานี้สามารถแก้ได้ด้วยการใช้ Information portal ซึ่งจะดึงข้อมูลจากระบบต่างมาไว้ที่หน้า portal เพียงที่เดียวโดยผู้ใช้สามารถทำงานที่ตัวเองรับผิดชอบอยู่ได้ โดยไม่ต้องเปิดระบบหลายๆระบบ 

โดยปกติแล้วการแสดงผลในหน้าจอ portal จะถูกแสดงออกมาในรูปแบบของ หน้าต่าวย่อย โดยที่แต่ละหน้าต่างย่อยก็คือหนึ่งระบบและระบบเหล่านั้นสามารถสื่อสารข้อมูลถึงกันได้โดยตรงเช่น ในกรณีที่เลือก custerA ที่หน้าต่างย่อย A จะส่งผลให้หน้าต่างย่อย B ดึงรายละเอียด order ออกมาจาก mainframe ได้ทันดี

Data Replication

 

ยังเป็นเรื่องของข้อมูลแต่เป็นข้อมูลที่หลายๆระบบจำเป็นต้องใช้ร่วมกัน ยกตัวอย่างเช่นข้อมูลทั้งหลายที่เกี่ยวกับลูกค้านั้นอาจมีหลายระบบที่ต้องใช้งานเช่น Customer Care (เอาไว้ใช้เก็บข้อมูลหลัก และเป็นเจ้าของข้อมูลต้นทาง), Accounting (เอาไว้คำนวณภาษี), Logistic (ส่งสินค้า), Billing (ส่งใบแจ้งหนี้) ดังนั้นแต่ละระบบเหล่านี้จะมีที่เก็บข้อมูลเป็นของตัวเองในส่วนของข้อมูลลูกค้า และเมื่อใดก็ตามที่มีการเปลี่ยนแปลงที่ข้อมูลต้นทาง ทุกระบบจะต้องได้รับข้อมูลที่ถูกแก้ไขนั้น โดยเทคนิคที่สามารถตอบโจทย์นี้ได้คือการทำ Data Replication ซึ่งเทคนิคการทำ Replication มีหลากหลายวิธีมากๆเช่น เราอาจใช้เครื่องมือการทำ replication ที่มีมาจากเจ้าของระบบฐานข้อมูล หรืออาจจะใช้วิธีการส่งผ่านไฟล์ข้ามระหว่างระบบเพื่อทำการ re-import หรือแม้กระทั่งใช้ Message-Oriented Middleware เข้ามาช่วยในการส่งข้อมูลที่เปลี่ยนแปลงนั้น

Shared Business Function

 

นอกจากเรื่องของข้อมูลที่ใช้ร่วมกันแล้ว ใน Enterprise นั้นถ้าเราเจาะลงไปจะพบว่ามีระบบที่ต้องใช้ common function เหมือนกันหลายระบบเยอะมากเช่น ระบบการตรวจสอบความถูกต้องของหมายเลขประกันสังคมซึ่งเราสามารถเปลี่ยนฟังก์ชั่นนี้กลายเป็น service ที่เปิดให้คนอื่นเข้ามาใช้งานได้  ด้วยเทคนิคต่างๆมากมาย ซึ่งการทำการแชร์ฟังก์ชั่นการใช้งานนี้ดูเผินๆอาจเหมือนกับการทำ Replication ยกตัวอย่างเช่นหน่วยงานที่เป็นเจ้าของข้อมูลลูกค้าอาจเตรียมฟังก์ชั่นหรือเซอร์วิส “Get Customer Address” ไว้ให้คนที่ต้องการใช้งานแทนที่จะทำการคัดลอกข้อมูลทั้งหมดไปไว้อีกระบบหนึ่ง ซึ่งปัจจัยที่เราจะต้องพิจรณาว่าเราควรใช้แบบใดระหว่างสองแบบนี้ ยกตัวอย่างเช่นจำนวน control ที่เราต้องมีในระบบ (เนื่องจาก business function share มีความเสี่ยงมากกว่าในแง่ของความปลอดภัย) หรือความถี่ของการเปลี่ยนแปลงของข้อมูล ถ้ามีการเปลี่ยนแปลงบ่อยวิธีการ replication ก็จะเสียเปรียบกว่าในมุมนี้

Service-Oriented Architecture

 

การทำ share business functions นั้นเราสามารถมองฟังก์ชั่นนั้นๆที่ถูก share ให้เป็น service ได้ซึ่งจริงๆแล้ว service ก็ไม่ได้เป็นอะไรที่ซับซ้อนเพราะมันก็เป็นแค่ฟังก์ชั่นที่ถูกเตรียมการไว้เป็นอย่างดีมีมาตรฐานในการเรียกใช้งาน โดยที่เซอร์วิสนี้จะถูกเปิดให้ระบบหรือคนที่ต้องการใช้ เข้ามาใช้งานได้และตัวเซอร์วิสเองจะตอบสนองกับทุกๆคนที่เรียกใช้งานได้อย่างถูกต้อง และเมื่อ Enterprise ทั้งหลายได้เตรียมเซอร์วิสไว้เป็นจำนวนมากขึ้นเรื่อย จึงทำให้การบริหารจัดการเซอร์วิสเหล่านี้เป็นเรื่องยากมากขึ้นเนื่องจากต้องมีตัวจัดการ services directory (discovery) และนอกจากนี้ยังต้องเตรียมมาตรฐานในการเรียกใช้งานแต่ละเซอร์วิส (negotiation) ไว้อีกด้วย  ทำให้บริการ discovery&negotiation กลายมาเป็นหัวใจหลักของ Service-Oriented Architecture

Service-oriented architectures (SOAs) ยังเป็นเรื่องที่ไม่สามารถระบุได้ชัดเจนว่ามันเป็น integration หรือ distribution กันแน่เนื่องจากเราสามารถสร้างแอพพลิเคชั่นใหม่ขึ้นมาบนเซอร์วิสเดิมๆที่ทีอยู่ได้ และ การเรียกใช้ฟังก์ชั่นข้ามระบบเพื่อสร้างแอพพลิเคชั่นใหม่นั้น กลับถือเป็นเรื่องของการทำ integration เสียอย่างนั้น และตัว SOA เองก็ได้ตระเตรียมวิธีการหรือกระบวนในการเรียกใช้ service ต่างๆที่อยู่นอกระบบให้ง่ายเหมือนกับการเรียกใช้ฟังก์ชั่นในเครื่อง Local ทำให้ในบางกรณีเราสามารถเรียก SOA ได้ว่าเป็น Service Bus Architectures

Distributed Business Process

 

อีกเรื่องที่น่าสนใจคือในแง่ของการทำ Business Operation หนึ่งอย่างนั้นเราจำเป็นต้องคุม transaction ให้ดีๆเพราะหนึ่ง operation นั้นอาจมีส่วนเกี่ยวข้องกับระบบมากถึงหกถึงเจ็ดระบบ ซึ่งถ้าเกิดข้ดผิดพลาดขึ้นมาในระบบใดระบบหนึ่ง เราต้องแน่ใจว่าจะไม่เกิดความเสียหายกับ Business Operation นั้นๆ.และอีกเช่นเคยเราไม่สามารถแบ่งแยกชัดเจนได้ระหว่า SOA กับ Distributed Business

Business-to-Business Integration

 

ที่ผ่านมาทุกข้อนั้นเป็นการ integrate ระหว่างระบบที่อยู่ภายใต้ enterprise เดียวกันแต่ในการทำธุรกรรมทางการค้านั้นระบบย่อมต้องมีการเชื่อมต่อกับ Enterprise อื่นๆด้วยเช่นกัน  ซึ่งเราก็สามารถนำเอาเทคนิค สี่ข้อที่ได้พูดถึงไปแล้วมาประยุกต์ใช้กับการเชื่อมต่อแบบ Business-to-Business ได้ด้วยเช่นกันแต่อาจจะต้องมีข้อควรระวังอย่างอื่นเข้ามาเกี่ยวข้องเช่นความปลอดภัยของช่องทางการสือสารระหว่าง Enterprise นั้นๆหรือแม้แต่มาตรฐานของรูปแบบของการแลกเปลี่ยนข้อมูลระหว่างกันเป็นต้น

Solving Integration Problems using Patterns ภาค 1

January 12th, 2009

อยากเขียนเกี่ยวกับ Spring Integration แต่เค้าแนะนำให้ไปอ่าน Enterprise Integration Pattern ก่อนอ่านไปอ่านมาแปลเลยดีกว่าเอาไปภาคแรก

Solving Integration Problems using Patterns

บทนี้เราจะมาว่ากันถึงเรื่องการใช้ Integration Pattern เข้ามาช่วยแก้ปัญหาเรื่องการ Integration โดยวิธีการที่เราจะนำเสนอนั้นจะออกมาในรูปของการสร้างสถานการ์ณจำลองขึ้นมาก่อนและทำการออกแบบแนวทางการแก้ปัญหาที่เหมาะสมกับโจทย์ที่เราตั้งขึ้นมา โดยการใช้ pattern ต่างๆเข้ามาช่วยเหลือ โดยที่หลังจากจบบทนี้เราจะได้รู้จัก pattern ต่างๆมากพอสมควร
The Need for Integration
ก่อนอื่นมารู้จักคำว่า Enterprise กันก่อนโดยที่คำว่า Enterprise มักจะอ้างอิงถึงบริษัทที่มีระบบหรือแอพพลิเคชั่นหลักร้อยขึ้นไปโดยที่ระบบเหล่านั้นเป็นแบบร้อยพ่อพันแม่คือ สร้างเอง จ้างคนมาทำ แพคเกจ และอื่นๆอีกมากมาย นอกจากนี้ระบบปฏิบัติการก็มีทุกระบบในโลก ==”

Integration Challenges

ดังนั้นเราก็ทำใจไว้ได้เลยว่า Enterprise Integration เป็นเรื่องยากมากๆ เนื่องจากการทำ Enterprise Integration นั้นอย่างที่เรารู้ๆกันว่าเราต้องไปยุ่งวุ่นวายการแอพพลิเคชั่นที่ทำงานอยู่บนหลายแพลทฟอร์ม จะเห็นได้ว่าความท้าทายของการทำ integration นั้นคือมันจะครอบคลุมไปทั้งแง่ของธุรกิจและเทคโนโลยี เนื่องจาการทำ Enterprise Integration นั้นจะไม่ใช่เพียงการเชื่อมต่อระหว่างระบบหรือแอพพลิเคชั่นต่างๆเข้าด้วยกันแต่ยังต้องทำให้หน่วยธุรกิจและหน่วยงาน IT สามารถสื่อสารกันได้อย่างประสิทธิภาพมากอีกด้วย
ดังนั้นจากความกว้างและหลากหลายในการทำ integration นั้นทำให้หลายๆครั้งที่การทำ integration มีส่วนเข้าไปเกี่ยวข้องกับ application ที่มีความสำคัญมากๆเช่น Billing, CRM นั่นหมายความว่าการ integrate ที่ผิดพลาดอาจส่งผลกระทบมหาศาลต่อการทำธุรกรรมที่สำคัญเหล่านั้น อีกปัจจัยที่ยากมากสำหรับการทำ integration คือความสามารถในการเข้าถึง application ที่เราต้องไป integrate ด้วยเนื่องจากระบบบางอย่างเป็นระบบที่เก่ามากหรือเป็นระบบที่ซื้อแพกเกจมาใช้งานทำให้ไม่สามารถเข้าไปแตะต้องได้มากนัก ซึ่งเมื่อนักพัฒนาด้าน untegration ไม่สามารถเข้าไปปรับปรุง service อะไรบางอย่างของ แอพพลิเคชั่นเดิมๆได้ทำให้การทำ integration เป็นเรื่องยากมากเพราะเราไม่สามารถกำหนด service contact point ได้ง่ายๆ
เรื่องต่อไปที่ต้องทำความสนใจคือเรื่องของเทคโนโลยีที่ถูกใช้ในการทำ integration เพราะถึงแม้ว่าการทำ integration นั้นจะต้องเข้าไปเกี่ยวข้องกับระบบจำนวนมหาศาลแต่เทคโนโลยีที่ถูกใช้นั้นมีน้อยจนน่าตกใจซึ่งทั้งหมดก็อยู่ในตระกูล XML, XSL และ Web Services แต่อย่างไรก็ตามเนื่องจากปัจจัยเรื่องของการตลาดทำให้มีการแต่งเสริมเติมแต่งความสามารถพิศดารต่างๆเข้าไปให้ Web Services อีกจึงทำให้พักหลังๆเราจะเห็นว่าจะมีการใส่พวก extension และ interpretations ใหม่ๆเข้าไปอีก การกระทำแบบนี้ทำให้เรามองย้อนกลับไปยังปัญหาเรื่องของระดับของการทำ interoperability ที่ต่ำของ “standards-pompliant” ระหว่างผลิตภัณท์ที่มาจากบริษัทที่ต่างกันของสถาปัตยกรรม CORBA ที่ถูกใช้งานมาอย่างยาวนานในเรื่องของการทำ EAI
อย่างไรก็ตามการทำ integration ด้วย Web Services นั้นก็ยังมีหลสยจุดที่ยังเป็นที่สงสัยยกตัวอย่างเช่น หลายครั้งที่เราให้คำนิยาม XML ว่าเป็น “Lingua franca” เนื่องจากการบังคับให้การแลกเหลี่ยนข้อมูลต้องทำด้วย XML นั้นไม่ต่างไปจากการเขียนเอกสารทั่วๆไป เนื่องจาก XML ต้องมี TAG ในการอธิบายความหมายของข้อมูลในโหนดต่างๆซึ่งบางครั้งก็ทำให้เสียเวลามากๆ ถึงแม้ว่าการใช้สตริงเป็นตัวแทนของข้อมูลแต่ก็ยังมีปัญหาเนื่องจากภาษาที่ใช้นั้นหลากหลายภาษามากทำให้ยังไงก็อ่านไม่เข้าใจอยู่ดี และปัญหาคาใจหลักๆอีกข้อคือการใช้ TAG เพื่ออธิบาย Data นั้นบางครั้งก็ไม่สามารถสื่อถึงข้อมูลจริงๆที่ใช้อยู่ได้เช่นคำว่า account นั้นจริงๆแล้วมีได้หลายความหมายมาก
และถ้าเราคิดว่าการพัฒนา EAI Solution เป็นเรื่องที่ซับซ้อนมากแล้ว สิ่งที่ทำยากกว่าการพัฒนาคือเรื่องของการดูแลรักษา เนื่องจากมันเป็นเรื่องของความหลากหลาย ทำให้การ deployment monitoring และ triuble-shoot เป็นเรื่องที่สุดยอดน่ากลัวมาก และการจัดการบริหารงานในลักษณะนี้จำเป็นต้องใช้ skill set ที่หลากหลายมากและบ่อยครั้งที่ skill set ที่ใช้ในการบริหารทั้งหมดไม่สามารถหาได้จากคนๆเดียวได้แต่จะต้องใช้คนเยอะมากในการทำงาน และสำหรับคนที่เคยผ่านงานด้าน EAI มาแล้วจะพบว่ามันเป็นส่วนที่สำคัญมากๆในการทำธุรกิจปัจจุบันแต่อย่างไรก็ตามการทำ EAI นั้นไม่ใชเรื่องง่ายที่จะทำให้สำเร็จเต็มรูปแบบเนื่องจากกระบวนการทำให้เกิดได้จริงกับแผนและนโยบายนั้นเป็นเรื่องที่ยากและซับซ้อนมากๆ

How Integration Patterns Can Help

การทำ Enterprise Integration ไม่ใช่เรื่องง่าย ในมุมมองของผู้เขียนใครก็ตามที่กล้าเอ่ยปากออกมาว่า integration นั้นง่ายคนๆนั้นสามารถเป็นได้สองแบบคือ ฉลาดโคตร กับ มีเหตุผลซ่อนเร้นเรื่องเงินๆทองๆที่ต้องตะล่อมเราให้เข้าใจว่ามันง่าย
ดังนั้นการทำ Integration เป็นเรื่องที่กว้างและยากมากและในโลกของการทำ integration จะไม่มีตำราในแนว “Tech Yourself Integration in 21 days” โดยคนที่มีประสบการ์ณเรื่องของการทำมากกว่าย่อมได้เปรียบเนื่องจากเขาเหล่านั้นสามารถดึงเอาวิธีแก้ปัญหาที่เคยทำมาแล้ว มาใช้กับการแก้ปัญหาในปัจจุบันได้ หรือเราอาจเรียกได้ว่าคนเหล่านั้นมี “PATTERN” ในการแก้ปัญหา
โดยที่คำว่า “PATTERN” ไม่ใช่ copy-paste นะครับแต่มันเป็นเรื่องของ “แนวทาง” ที่ควรทำตามในการแก้ปัญหาที่เกิดขึ้นบ่อยๆ ซึ่งการใช้ “PATTERN” จะช่วยให้ช่องว่างระหว่างมุมมองของผู้บริการกับการลงมือทำจริงให้แคบลงมาได้

The Wide World of Integration

ที่ผ่านมาเราได้รับรู้ถึงข้อมูลที่สำคัญเบื้องต้นเกี่ยวกับ integration แล้วว่ามันคือการเชื่อมต่อทุกสิ่งทุกอย่างเข้าาด้วยกันไม่ว่าจะเป็น Services, คน แม้กระทั่งบริษัทเข้าด้วยกันเพื่อให้เกิดกระบวนการทางธุรกิจบางอย่างตามที่เราต้องการ ต่อไปเราจะมาดูถึงวิธีการในการทำ integration ในแบบต่างๆที่ได้รับการยอมรับว่าดี โดยที่เราสามารถแบ่งได้เป็น 6 วิธีใหญ่ๆด้วยกันดังนี้

  1. Information Portals
  2. Data Replication
  3. Shared Business Functions
  4. Service-Oriented Architectures
  5. Distributed Business Processes
  6. Business-to-Business Integration

วิธีการทั้งหกแบบนี้เป็นวิธีการหลักๆที่ช่วยให้เราสามารถเห็นภาพของการทำ integration กันได้ง่ายขึ้นในเชิงของ Architect ซึ่งเราสามารถจับเอาวิธีการเหล่านี้มาผสมรวมกันเพื่อแก้ปัญหาได้