Middleware ค อ อะไร ม สถาป ตยกรรม อย างไร

คำถามก่อนที่จะเริ่มนำ Microservice มาใช้งานคือ เราพร้อมที่จะเริ่มต้นทำความรู้จักกับ Microservice แล้วหรือยัง ?

เพื่อทำให้เห็นข้อดีและข้อเสียของมัน เพื่อหาวิธีการแก้ไขและรับมือ ก่อนที่จะลงมือทำหรือใช้งานต่อไป

อีกอย่างที่เราต้องเข้าใจก่อนคือ เราพร้อมหรือไม่ ? ทั้ง skill ของทีมพัฒนา และคนในองค์กร ทั้ง process ของการพัฒนา ทั้งระบบ Continuous Integration และ Continuous Delivery รวมถึง DevOps ก่อนที่จะไปถึง Microservice แสดงดังรูป

Middleware ค อ อะไร ม สถาป ตยกรรม อย างไร

สุดท้ายแล้วนั้น ปัญหาของคุณคืออะไร ถึงจะนำแนวคิด Microservice มาใช้งาน ?

Reference Websites https://martinfowler.com/articles/microservices.html https://www.nginx.com/blog/building-microservices-using-an-api-gateway/ https://martinfowler.com/articles/microservice-testing/ https://www.xenonstack.com/blog/devops/microservices-testing-strategy-automation-architecture/ https://www.gocd.org/2018/05/08/continuous-delivery-microservices-test-strategy.html

ผมบังเอิญไปเจอ medium ที่นี่สนใจเลยทีเดียว เขาสรุปปัญหา ข้อดี ข้อเสีย ได้ชัดเจน และแนะนำ Solution ที่เหมาะสมที่สุด ณ เวลานี้เอาไว้ด้วย

ซึ่งเขาก็ได้แนะนำ Approach ที่สามารถจัดการปัญหา ไว้ดังนี้

  • reators
  • reducers
  • thunks
  • sagas
  • epics
  • effects
  • custom middleware
  • redux-logic — a new approach

แล้วผมเลือกใช้อะไร?

ปัจจุบันผมใช้ redux-thunk เป็น middleware ของโปรเจค (ใช้มาแต่แรกเริ่มโปรเจคแล้ว) ถ้าถามถึงว่าทำไม ต้องใช้ thunk เป็น middleware ก็คงตอบได้ว่า ผมทำตาม tutorial ในยุคแรกๆ ที่เขาสอน react แต่ถ้าหากมีโปรเจคใหม่ให้ทำ ก็คงมาพิจารณาอีกทีว่าจะใช้ตัวไหนในการจัดการ

https://medium.com/@gethylgeorge/understanding-how-redux-thunk-works-72de3bdebc50

ภาพข้างบน คือ อธิบายว่า thunk ทำหน้าที่อะไรใน Redux มัน คือ middleware ดีๆนี่แหละ ทำหน้าที่เป็นคนกลาง ระหว่าง action <> reducer

ทำไมต้องมี middleware?

เนื่องจากว่า Action Creator ของเรานั้น ทำงานได้ทั้งรูปแบบ Asynchronous และ Synchronous ก่อนที่จะ dispatch action ไปยัง Reducer เพื่อสร้าง new state

คำถาม? หากเราต้องมี Action ที่ทำงานแบบ Async แล้วภายในมี Promise หล่ะ จะเกิดปัญหาอะไรตามมา คำตอบ คือ Reducer ไม่สามารถ Resolve future object เพื่อสร้าง new state ได้ ทันที

จึงเป็นที่มาว่า เราต้องการคนกลาง ทำหน้าที่ resolve object promise นั่นก่อน dispatch action ไปยัง Reducer

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

Oracle Fusion Middleware เป็นมิดเดิลแวร์มาตรฐานระบบเปิดที่สมบูรณ์แบบที่สุด ซึ่งสนับสนุนสถาปัตยกรรมที่มุ่งเน้นการบริการ หรือ เอสโอเอ (Service-Oriented Architecture) ที่ถูกพัฒนาขึ้นเพื่อช่วยให้ลูกค้าใช้ประโยชน์จากบูรณาการทางกลยุทธ์ด้านสารสนเทศได้อย่างเต็มประสิทธิภาพโดยยังตอบสนองความเป็นเอกลักษณ์เฉพาะของลูกค้าแต่ละราย ไม่ว่าจะเป็นการบูรณาการให้เข้ากับระบบจัดเก็บข้อมูล (Storage) เซิร์ฟเวอร์ เวอร์ฌ่วลแมชชีน (Virtual Machine) ระบบปฏิบัติการ ฐานข้อมูล (Database) มิดเดิลแวร์ (Middleware) และแอพพลเคชั่นส์ (Applications) เพื่อให้สามารถทำงานร่วมกันได้อย่างมีประสิทธิภาพไร้อุปสรรคหรือข้อจำกัดใดๆ

นายอัลเบิร์ต เทย์ ผู้อำนวยการกลุ่มธุรกิจ Oracle Fusion Middleware บริษัท ออราเคิล คอร์ปอเรชั่น ภูมิภาคเอเชีย แปซิฟิก กล่าวว่า “ระบบงานธุรกิจสำคัญๆ มักกระจัดกระจายกันอยู่ทั่วองค์กร จึงเป็นเรื่องยากที่จะตรวจสอบดูแล หรือบริหารจัดการระบบงานเหล่านี้ ออราเคิลสามารถผนวกระบบต่างๆ เข้าด้วยกันได้ แม้ว่าผู้ใช้จะไม่ได้ใช้ซอฟต์แวร์ของออราเคิลก็ตาม ด้วย Oracle Fusion Middleware”

หลายองค์กรตั้งคำถามว่า ทำไมต้องเป็น Oracle Fusion Middleware ทั้งนี้คำตอบคือจุดแข็งที่ต่างจากคู่แข่งในเรื่อง Integration หรือความสามารถด้านบูรณาการและการทำงานหรือวิ่งบนแพลตฟอร์มของฮาร์ดแวร์ SUN ซึ่งออราเคิลเป็นผู้ค้าเพียงรายเดียวที่นำเสนอผลิตภัณฑ์ครบ Complete ทั้งฮาร์ดแวร์ ซอฟต์แวร์แอพพลิเคชั่น โดยที่ยังคงความเป็นระบบมาตรฐานเปิด Open ที่สามารถเชื่อมต่อกับแอพพลิเคชั่นส์อื่นๆ ได้ทุกราย และให้ประสิทธิภาพในระดับยอดเยี่ยมที่สุด Best in Class เมื่อเทียบกับผลิตภัณฑ์อื่นๆ ที่มีอยู่ในตลาดขณะนี้

ดังจะเห็นได้จากกลุ่มลูกค้าที่ใช้ Oracle Fusion Middleware ที่เป็นองค์กรชั้นนำในอุตสาหกรรมต่างๆ อาทิ ธุรกิจบริการด้านการเงิน โทรคมนาคม การผลิต ค้าปลีก โรงพยาบาลและหน่วยงานราชการ เป็นต้น นอกจากนี้ Oracle Fusion Middleware ได้รับการสนับสนุนจากคู่ค้าชั้นนำกว่า 9,000 ราย อาทิ บริษัทพัฒนาซอฟต์แวร์รายย่อย (ISVs), รีเซลเลอร์ (VARs) และผู้ติดตั้งระบบ (SIs) อีกด้วย

ตัวอย่างที่ชัดเจน ในอุตสาหกรรมด้านการเงินธนาคาร ในการนำ Oracle Fusion Middleware มาใช้โดยไม่ได้แตะต้อง ระบบหลังบ้าน (Back Office) ซึ่งจะส่งผลกระทบต่อการบำรุงรักษา การรับประกันและอื่นๆ เพียงแต่ออราเคิลทำระบบตรงกลาง (Mid Office) ให้กับ ธนาคารไทซิน (Taishin) ธนาคารพาณิชย์ที่ใหญ่อันดับ 2 ของไต้หวัน ที่มีสาขากว่า 105 สาขาทั่วประเทศ มีลูกค้าที่ต้องให้บริการ 3.6 ล้านรายกับธุรกรรมจำนวนมหาศาลที่ต้องทำใน 1 วัน ผู้บริหารของธนาคารตัดสินใจที่จะใช้เทคโนโลยี Oracle Fusion Middleware ทำงานร่วมกับระบบเดิมที่มีอยู่ โดยมีวัตถุประสงค์เพื่อลดค่าใช้จ่ายรวม ลดการใช้ทรัพยากรสิ้นเปลืองเช่น กระดาษ ลดค่าใช้จ่ายในการพิมพ์และการเก็บสินค้าและการปรับโครงสร้างเวิร์กโฟลว์ให้มีประสิทธิภาพมากขึ้น โดยเริ่มใช้งานเมื่อเดือนกรกฎาคม 2008 ปัจจุบันสามารถลดค่าใช้จ่ายได้ปีละ 1.54 ล้านเหรียญสหรัฐอเมริกา

ยังมีหลายองค์กร ที่ใช้ Oracle Fusion Middleware ในการช่วยเสริมศักยภาพในการดำเนินธุรกิจ โดยไม่ต้องกระทบกับการทำงานของระบบเดิม แต่จะบูรณาการเข้าด้วยกันและช่วยให้การธุรกิจดำเนินได้เปรียบคู่แข่งและสนองตอบความต้องการของลูกค้าได้ทันท่วงทีด้วย