คลังเก็บป้ายกำกับ: SOA

4 หลักสูตรสำหรับผู้บริหาร แนะนำการประยุกต์ใช้ Blockchain ในอุตสาหกรรมต่างๆ/ อบรม SOA สำหรับผู้บริหาร /การจัดการโครงการต่างๆโดยใช้ Agile มาช่วย / การนำ Big Data เข้ามาประยุกต์ใช้ในองค์กร

IMC Institute เป็นศูนย์รวมข้อมูลเชิงวิชาการและพัฒนาศักยภาพความสามารถให้กับบุคลากรในอุตสาหกรรม IT เพื่อรองรับการเติบโตของธุรกิจในโลกของยุคเศรษฐกิจ ได้ทำการเปิดหลักสูตรอบรมที่ครอบคลุมเนื้อหาเทคโนโลยีใหม่ๆ ที่องค์กรและหน่วยงานทั้งภาครัฐและเอกชน มีความจำเป็นต้องนำไปใช้เพื่อเพิ่มประสิทธิภาพการทำงาน หลักสูตร ที่ IMC Institute เปิดสอน ออกแบบให้กับทั้งผู้บริหาร IT ระดับสูง ไปจนถึงผู้เชี่ยวชาญใน IT แขนงต่างๆ อาทิ SOA, Java Development, Enterprise Architecture, Software Testing, Cloud Computing, Big Data, BI, IoT เป็นต้น

ในเดือนกรกฎาคมและสิงหาคมนี้ IMC Institute เปิด 4 หลักสูตรสำหรับผู้บริหาร แนะนำการประยุกต์ใช้ Blockchain ในอุตสาหกรรมต่างๆ/ อบรม SOA สำหรับผู้บริหาร /การจัดการโครงการต่างๆโดยใช้ Agile มาช่วย / การนำ Big Data เข้ามาประยุกต์ใช้ในองค์กร

Blockchain for Management and Executives วันที่ 17 – 18 กรกฎาคม 2017

เข้าใจแนวคิดของ Blockchain ว่ามีการทำงานอย่างไร ? และเข้าใจคุณสมบัติของ Blockchain และแนะนำการประยุกต์ใช้ Blockchain ในอุตสาหกรรมต่างๆ ดูรายละเอียดเพิ่มเติม

SOA/SOA Governance for Executives วันที่ 3 – 4 สิงหาคม 2017 (โปรโมชั่นมาอบรม 3 ท่าน ชำระค่าอบรมเพียง 2 ท่าน)

หลักสูตร SOA/SOAGovernance for Executives อบรม SOA สำหรับผู้บริหาร SOA ไม่ใช่เรื่องของเทคโนโลยี การที่จะทำ SOA ในองค์กร เราจะต้องเข้าใจถึงความต้องการด้านธุรกิจขององค์กรที่มีลักษณะที่จะปรับเปลี่ยนไปตลอด (Business Agility) ดังนั้นการออกแบบสถาปัตยกรรมไอทีในองค์กรจึงจำเป็นต้องปรับเปลี่ยน ดูรายละเอียดเพิ่มเติม

Agile Project Management วันที่ 7 – 8 สิงหาคม 2017

แนวคิด Agile หลักๆ คือการไม่มีกำแพงระหว่างฝ่าย เพราะเอาทุกฝ่ายมาอยู่ในทีมเดียวกัน เน้นที่การสื่อสารระหว่างบุคคล ทำให้ลดความไม่เข้าใจลงไป และสามารถแก้ปัญหาได้รวดเร็วๆ ดูรายละเอียดเพิ่มเติม

Big Data in Action for Senior Management วันที่ 17 – 18 สิงหาคม 2017

หลักสูตรนี้จะเป็นการปูพื้นฐานหลักการของ Big Data ให้กับผู้บริหารด้านไอทีหรือผู้บริหารด้านอื่นๆ การนำ Big Data เข้ามาประยุกต์ใช้ในองค์กร ตัวอย่างการใช้งาน การเตรียมพร้อมด้านบุคลากร ฮาร์ดแวร์ และซอฟต์แวร์การทำ Workshop เพื่อให้เข้าใจถึงการประยุกต์ใช้งาน ดูรายละเอียดเพิ่มเติม

Contact Person

For more information, contact our course coordinator on:
Ms.Kwanhathai Thavornpong / Ms.Sunisa Kamhangwaratit
Mobile: 087-593-7974, 088-192-7975
Tel: 02-233-4732
Email: kwanhathai@imcinstitute.com/sunisa@imcinstitute.com/contact@imcinstitute.com

from:https://www.techtalkthai.com/imc-4-courses-jul-aug-2017/

IMC Institute เปิดหลักสูตรสำหรับคน IT แบบเข้มข้น เช่น Big Data / Data Science / Machine Learning / Blockchain และอื่นๆ พร้อมโปรโมชันสุดพิเศษ !!

IMC Institute เป็นศูนย์รวมข้อมูลเชิงวิชาการและพัฒนาศักยภาพความสามารถให้กับบุคลากรในอุตสาหกรรม IT เพื่อรองรับการเติบโตของธุรกิจในโลกของยุคเศรษฐกิจ ได้ทำการเปิดหลักสูตรอบรมที่ครอบคลุมเนื้อหาเทคโนโลยีใหม่ๆ ที่องค์กรและหน่วยงานทั้งภาครัฐและเอกชน มีความจำเป็นต้องนำไปใช้เพื่อเพิ่มประสิทธิภาพการทำงาน หลักสูตร ที่ IMC Institute เปิดสอน ออกแบบให้กับทั้งผู้บริหาร IT ระดับสูง ไปจนถึงผู้เชี่ยวชาญใน IT แขนงต่างๆ อาทิ SOA, Java Development, Enterprise Architecture, Software Testing, Cloud Computing, Big Data, BI, IoT, Blockchain เป็นต้น นอกจากนี้ ยังมีหลักสูตรทางด้านพัฒนาทักษะต่างๆ เช่น Sales Technique, Solution Selling, Project Management, Time Management, Creative Thinking, Coaching และ Leaderships อีกด้วย

ในเดือนกรกฎาคมและสิงหาคม IMC Institute เปิดหลักสูตรสำหรับคน IT แบบเข้มข้น เช่น Big Data / Data Science / Machine Learning / Blockchain / Cloud / IoT / Microservices / iPhone Dev /Agile / SW Testing หลายหลักสูตร พร้อมโปรโมชันสุดพิเศษ !!! และหลักสูตรแนะนำสำหรับผู้บริหาร Blockchain for Management and Executives / Digital Strategy for Enterprise / SOA/SOA Governance for Executives / Big Data in Action for Senior Management ดูรายละเอียดเพิ่มเติมคลิก

สุดพิเศษงาน Monthly Talk ที่ทางสถาบัน ไอเอ็มซี คืองานที่จัดประจำทุกเดือนเพื่อแลกเปลี่ยนข้อมูลและให้ความรู้ทางด้านแนวโน้มเทคโนโลยีใหม่ๆ ทั้ง Big Data, Cloud Computing, IoT, Blockchain หรือ Software Engineering โดยจะปรับเปลี่ยนหัวข้อในการสัมมนาและวิทยากรในแต่ละเดือนตามความเหมาะสม โดยไม่เสียค่าใช้จ่าย

สำหรับเดือนกรกฎาคมนี้ Monthly Talk#5 หัวข้อ “Big Data JumpStart in Your Organisation” วันที่ 12 กรกฎาคม 2017 เวลา 18.00 – 21.00 น. สถานที่ ตึกสกุลไทย สรวงค์ ทาวเวอร์ ชั้น 8 โดยวิทยากร อาจารย์ ดร. ธนชาติ นุ่มนนท์ (ที่นั่งมีจำนวนจำกัด) ดูรายละเอียดเพิ่มเติมคลิก

ดูรายละเอียดเพิ่มเติมคลิก

สอบถามรายละเอียดเพิ่มเติมเกี่ยวกับหลักสูตร

from:https://www.techtalkthai.com/imc-institute-course-jul-aug-2017/

รวมคอร์สอบรมสำหรับคน IT ประจำเดือนมิถุนายนโดย IMC Institute พร้อมหลักสูตรแนะนำสำหรับอาจารย์ในระดับอุดมศึกษา

IMC Institute เป็นศูนย์รวมข้อมูลเชิงวิชาการและพัฒนาศักยภาพความสามารถให้กับบุคลากรในอุตสาหกรรม IT เพื่อรองรับการเติบโตของธุรกิจในโลกของยุคเศรษฐกิจ ได้ทำการเปิดหลักสูตรอบรมที่ครอบคลุมเนื้อหาเทคโนโลยีใหม่ๆ ที่องค์กรและหน่วยงานทั้งภาครัฐและเอกชน มีความจำเป็นต้องนำไปใช้เพื่อเพิ่มประสิทธิภาพการทำงาน หลักสูตร ที่ IMC Institute เปิดสอน ออกแบบให้กับทั้งผู้บริหาร IT ระดับสูง ไปจนถึงผู้เชี่ยวชาญใน IT แขนงต่างๆ อาทิ SOA, Java Development, Enterprise Architecture, Software Testing, Cloud Computing, Big Data, BI, IoT เป็นต้น นอกจากนี้ ยังมีหลักสูตรทางด้านพัฒนาทักษะต่างๆ เช่น Sales Technique, Solution Selling, Project Management, Time Management, Creative Thinking, Coaching และ Leaderships อีกด้วย

ในเดือนมิถุนายน IMC Institute เปิดหลักสูตรสำหรับคน IT เช่น Blockchain, Software Testing, TDD, Java EE, PME ,IoT หลายหลักสูตร และหลักสูตรแนะนำสำหรับอาจารย์ที่สอนระดับอุดมศึกษา Train the Trainers Big Data Analytics & Blockchain for Financial Services การอบรมครั้งนี้มุ่งเน้นที่จะสอนอาจารย์ในสถาบันอุดมศึกษาให้เข้าใจการนำเทคโนโลยีดิจิทัลด้าน Big Data Analytics และ Blockchain กับการนำประยุกต์ใช้ในสถาบันการเงิน เพื่อที่จะนำไปใช้สอนนักศึกษาหรือปรับปรุงหลักสูตรต่อไป รับจำนวนไม่เกิน 30 ท่าน  ดูรายละเอียดเพิ่มเติมคลิก

สุดพิเศษงาน Monthly Talk ที่ทางสถาบัน ไอเอ็มซี เปิดเดือนละครั้งโดยได้ความร่วมมือจากอาจารย์ผู้สอนที่เชี่ยวชาญจากหัวข้อและหลักสูตรต่างๆ ที่เปิดกับทางสถาบัน จัดงาน Monthly Talk โดยไม่มีค่าใช่จ่าย

สำหรับเดือนพฤษภาคมนี้  Monthly Talk#3 หัวข้อ “Big Data Showcases” วันที่ 16 พฤษภาคม 2017 เวลา 18.00 – 21.00 น. สถานที่ ตึกสกุลไทย สรวงค์ ทาวเวอร์ ชั้น 8 โดยวิทยากร คุณ เอกอนันต์ ทองแท้  (ที่นั่งมีจำนวนจำกัด) ดูรายละเอียดเพิ่มเติมคลิก

สอบถามรายละเอียดเพิ่มเติมเกี่ยวกับหลักสูตร

from:https://www.techtalkthai.com/imc-institute-courses-jun-2017/

IMC Institute เปิด 24 หลักสูตรด้าน IoT, Blockchain, Big Data, BI, Develop, Mobile App และ Cloud Computing หลายหลักสูตรในเดือน มี.ค. และ เม.ย. พร้อมโปรโมชั่นสุดพิเศษ !!

IMC Institute เป็นศูนย์รวมข้อมูลเชิงวิชาการและพัฒนาศักยภาพความสามารถให้กับบุคลากรในอุตสาหกรรม IT เพื่อรองรับการเติบโตของธุรกิจในโลกของยุคเศรษฐกิจ ได้ทำการเปิดหลักสูตรอบรมที่ครอบคลุมเนื้อหาเทคโนโลยีใหม่ๆ ที่องค์กรและหน่วยงานทั้งภาครัฐและเอกชน มีความจำเป็นต้องนำไปใช้เพื่อเพิ่มประสิทธิภาพการทำงาน หลักสูตร ที่ IMC Institute เปิดสอน ออกแบบให้กับทั้งผู้บริหาร IT ระดับสูง ไปจนถึงผู้เชี่ยวชาญใน IT แขนงต่างๆ อาทิ SOA, Java Development, Enterprise Architecture, Software Testing, Cloud Computing, Big Data, BI, IoT เป็นต้น นอกจากนี้ ยังมีหลักสูตรทางด้านพัฒนาทักษะต่างๆ เช่น Sales Technique, Solution Selling, Project Management, Time Management, Creative Thinking, Coaching และ Leaderships อีกด้วย

ในเดือนมีนาคมและเมษายน IMC Institute เปิด 24 หลักสูตรสำหรับคน IT ด้าน IoT, Blockchain, Big Data, BI, Develop, Mobile App และ Cloud Computing หลายหลักสูตร พร้อมโปรโมชั่นสุดพิเศษ !! สำหรับหลักสูตร Practical NoSQL Database using Cassandra, Microservices with Scala และ Introduction to Docker หลักสูตรใหม่ในเดือนมีนาคม มาพร้อมโปรโมชันลงทะเบียนอบรม 3 ท่าน ชำระค่าอบรมเพียง 2 ท่านเท่านั้น และ เมษายนพบกับหลักสูตร 2 วันสำหรับผู้บริหาร คือ Big Data และ Blockchain

ผู้ที่สนใจสามารถดูตารางคอร์สอบรมทั้งหมดได้ที่ http://www.imcinstitute.com/man/Recommended_Mar-Apr_2017.html

สุดพิเศษงาน Monthly Talk ที่ทางสถาบัน ไอเอ็มซี เปิดเดือนละครั้งโดยได้ความร่วมมือจากอาจารย์ผู้สอนที่เชี่ยวชาญจากหัวข้อและหลักสูตรต่างๆ ที่เปิดกับทางสถาบัน จัดงาน Monthly Talk โดยไม่มีค่าใช่จ่าย

สำหรับเดือนมีนาคมนี้ Monthly Talk#1 หัวข้อ “The presentation Secrets of Steve Jobs – นำเสนอผลงานให้มีสไตล์อย่างสตีฟ จ๊อบส์” วันที่ 22 มีนาคม 2017 เวลา 18.00 – 21.00 น. สถานที่ ตึกสกุลไทย สรวงค์ ทาวเวอร์ ชั้น 8 โดยวิทยากร คุณ วริศ วรรณวิธู (ที่นั่งมีจำนวนจำกัด) ดูรายละเอียดเพิ่มเติมคลิก

และในเดือนเมษายน Monthly Talk#2 หัวข้อ “IoT Thailand 4.0” โดยวิทยากร อาจารย์อ้วน สิทธิพงษ์ จันทร์สรณ์ รายละเอียดเพิ่มเติมจะอัปเดตอีกครั้งใน Facebook.com/imcinstitute

สอบถามรายละเอียดเพิ่มเติมเกี่ยวกับหลักสูตร

from:https://www.techtalkthai.com/imc-institute-courses-mar-apr-2017/

รวมหลักสูตร Emerging Technologies ด้าน IoT, Big Data, BI และ Cloud Computing ประจำเดือน ก.พ. – มี.ค. พร้อมโปรโมชันสุดพิเศษจาก IMC Institute

IMC Institute เป็นศูนย์รวมข้อมูลเชิงวิชาการและพัฒนาศักยภาพความสามารถให้กับบุคลากรในอุตสาหกรรม IT เพื่อรองรับการเติบโตของธุรกิจในโลกของยุคเศรษฐกิจ ได้ทำการเปิดหลักสูตรอบรมที่ครอบคลุมเนื้อหาเทคโนโลยีใหม่ๆ ที่องค์กรและหน่วยงานทั้งภาครัฐและเอกชน มีความจำเป็นต้องนำไปใช้เพื่อเพิ่มประสิทธิภาพการทำงาน หลักสูตร ที่ IMC Institute เปิดสอน ออกแบบให้กับทั้งผู้บริหาร IT ระดับสูง ไปจนถึงผู้เชี่ยวชาญใน IT แขนงต่างๆ อาทิ SOA, Java Development, Enterprise Architecture, Software Testing, Cloud Computing, Big Data, BI, IoT เป็นต้น นอกจากนี้ ยังมีหลักสูตรทางด้านพัฒนาทักษะต่างๆ เช่น Sales Technique, Solution Selling, Project Management, Time Management, Creative Thinking, Coaching และ Leaderships อีกด้วย

สำหรับเดือนกุมภาพันธ์และมีนาคมนี้ IMC Institute เปิดหลักสูตร Emerging Technologies ด้าน IoT, Big Data, BI และ Cloud Computing หลายหลักสูตร พิเศษสำหรับหลักสูตร Sming Framework IoT Device (ESP8266) (C++), Practical NoSQL Database using Cassandra, Microservices with Scala และ Introduction to Docker หลักสูตรใหม่ในเดือนมีนาคมมาพร้อมโปรโมชันลงทะเบียนอบรม 3 ท่าน ชำระค่าอบรมเพียง 2 ท่านเท่านั้น

ผู้ที่สนใจสามารถดูตารางคอร์สอบรมทั้งหมดได้ที่ http://www.imcinstitute.com/man/Recommended-Feb-Mar-2017_1.html

สอบถามรายละเอียดเพิ่มเติมเกี่ยวกับหลักสูตร

from:https://www.techtalkthai.com/imc_courses_feb_mar_2017/

ทำความรู้จักกับ Microservices สถาปัตยกรรมระบบที่ทั้งนักพัฒนา และผู้ดูแลระบบควรรู้จัก

ช่วงสองสามปีที่ผ่านมา หลายๆคนคงได้ยินคำว่า Microservices มาไม่มากก็น้อย

ในวงการไอทีต่างประเทศ สถาปัตยกรรมแบบ Microservices ได้ถูกนำมาใช้งานในบริษัทใหญ่ๆ (Amazon, Netflix ) มาเป็นเวลาหลายปีแล้ว  ช่วง 2-3 ปีที่ผ่านมา แนวคิดของสถาปัตยกรรมแบบนี้เริ่มตื่นตัว และถูกนำไปใช้อย่างแพร่หลายมากขึ้น บ้างก็ประสบความสำเร็จเป็นอย่างดี บ้างก็ประสบปัญหา ได้รับบาดแผลกันมาพอสมควร

การวางสถาปัตยกรรมของระบบมีผลกระทบต่อความสำเร็จของการพัฒนาซอฟต์แวร์มาก ผู้เขียนเองมีโอกาสได้ทำงานในระบบซอฟต์แวร์ที่ใช้สถาปัตยกรรมแบบนี้มาเกือบสองปี ได้เห็นทั้งข้อดี ข้อเสีย จึงอยากนำมาเล่าสู่กันฟัง

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

 

ตัวอย่างและนิยามของ Microservices

สมมติว่าเราต้องการพัฒนาระบบ E-banking ของธนาคาร เราสามารถแตกระบบออกเป็นส่วนย่อยๆได้ ดังนี้

  • Authentication – สำหรับล็อคอินเข้าสู่ระบบ
  • Account Balance – สำหรับตรวจสอบยอดเงินของผู้ใช้
  • Payment – สำหรับโอน/จ่ายเงิน
  • SMS Verification- สำหรับใช้ยืนยันผู้ใช้ผ่านทาง SMS
  • ฯลฯ (ในที่นี้ยกตัวอย่างแบบไม่ซับซ้อน ระบบธนาคารจริงมีรายละเอียดเยอะกว่านี้มากๆครับ )

ในการพัฒนา เราสามารถเขียนระบบของทั้งหมดรวมกันเป็นชิ้นเดียว (ถ้าเป็น Java ก็อยู่ใน JAR หรือ WAR file เดียวกัน) แล้วนำไปวางบนเว็บเซอร์เวอร์ที่เดียว โดยเราเรียกสถาปัตยกรรมแบบนี้ว่า Monolith

แต่ถ้าเป็นสถาปัตยกรรม Microservices เราจะแยกพัฒนาแต่ละเซอร์วิซออกจากกันโดยชัดเจน โดยกำหนด API ไว้ให้เรียกใช้ แต่ละเซอร์วิซสามารถทำงานได้อย่างเป็นอิสระ มีฐานข้อมูลเป็นของตัวเอง และหากจำเป็นต้องใช้ข้อมูลที่อยู่ในเซอร์วิซอื่น ก็สามารถเรียกใช้ผ่าน API

vs monolith

เมื่อลูกค้าต้องการเช็คยอดเงิน จะสามารถติดต่อไปยัง Account Balance Service  เพื่อดึงข้อมูลออกมา  หากต้องการโอนเงิน ก็จะมีการติดต่อไปยัง Payment Service ซึ่งจะเรียก API ของ SMS Verification service อีกทอดนึง เพื่อทำการส่ง SMS สำหรับยืนยันการโอน

ถึงจุดนี้ เราน่าจะเห็นภาพคร่าวๆแล้วว่า Microservices คืออะไร บางคนอาจจะเริ่มคิดในใจว่า “เฮ้ย นี่มันก็คือ SOA (Service-oriented Architecture) ดีๆนี่เอง”  ซึ่งเป็นความคิดที่ถูกต้องครับ Microservices เป็นรูปแบบหนึ่งของ SOA  ซึ่งมีลักษณะพิเศษเพิ่มอีกหลายอย่าง

เพื่อให้ชัดเจนยิ่งขึ้นว่าลักษณะพิเศษเหล่านี้คืออะไร เราจะมาลองดูสถาปัตยกรรมแบบอื่นๆที่ ไม่ใช่ Microservices กันครับ

 

จุดเด่นของ Microservices เมื่อเปรียบเทียบกับสถาปัตยกรรมแบบอื่นๆ

ส่วนที่แล้ว ผมได้เปรียบเทียบความแตกต่างของ Microservices กับสถาปัตยกรรมแบบรวมทุกอย่างไว้เป็นเนื้อเดียว (Monolith) ในทางปฏิบัติ น้อยครั้งมาก ที่เราจะเห็นแอพพลิเคชั่นสมัยใหม่ถูกพัฒนาแบบทุกอย่างเป็นเนื้อเดียวกัน

 

Thee-tier architecture

เว็บแอพพลิเคชั่นส่วนใหญ่มักจะใช้สถาปัตยกรรมแบบ Three-tier โดยการแบ่ง Presentation (User interface), application logic, และ Database แยกออกจากกัน ตัวอย่างเช่น User interface ถูกเขียนด้วยจาวาสคริปต์และใช้งานบนเว็บบราวเซอร์ โดย application logic จะถูกซ่อนไว้บนเว็บเซอร์เวอร์ซึ่งติดต่อกับฐานข้อมูลในอีกเซอร์เวอร์แยกไปอีก

การใช้สถาปัตยกรรมแบบ Three-tier สามารถนำมารวมเข้ากับ Microservices ได้ โดยการแบ่งส่วนแต่ละ Tier ออกไปอยู่ในเซอร์วิซต่างๆแยกกัน ตามรูปข้างล่าง

vs threetier

ประเด็นสำคัญคือ การแบ่งชิ้นส่วน (Component) ของ Microservices นั้นแบ่งตามความต้องการของผู้ใช้งาน (Requirement หรือ Business capability) แทนที่จะแบ่งกันตามหน้า (Technical responsibility) เหมือนในกรณีของ Three-tier  โดยแต่ละเซอร์วิซจะมีอิสระต่อกันมาก

ดังนั้น ข้างในแต่ละเซอร์วิซ ก็จะสามารถนำมาแบ่งออกเป็น tier ย่อยลงไปได้อีก

อีกประเด็นที่สำคัญคือ การแบ่งตามเซอร์วิซ จะมีผลกระทบต่อการทำงานของทีมด้วย สมมติว่าเรามีทีมพัฒนา 20 คน  ครึ่งหนึ่ง (ทีมเหลือง) ต้องพัฒนา Payment service ส่วนอีกครึ่งหนึ่ง (ทีมเทา) ต้องพัฒนา Account Balance Service

หากเราเลือกทำตามรูปแบบทางซ้าย ทั้งสองทีมจะต้องเลือกใช้เทคโนโลยีเดียวกัน และ Release แอพพลิเคชั่นใหม่พร้อมกัน หากมีชิ้นส่วนไหนทำงานผิดพลาด ทั้งระบบอาจหยุดทำงานหมดได้

กรณีทางด้านขวา ทีมเหลืองอาจเลือกที่จะใช้ Java 7 ในการพัฒนา ส่วนทีมเทาอาจเลือกใช้ Python เขียน เนื่องจากเซอร์วิซทั้งสองตัวทำงานอยู่คนละ Process (หรืออาจจะอยู่คนละเครื่องเลย) ทั้งสองทีมมีอิสระอย่างเต็มที่ในการเลือกใช้เทคโนโลยีที่เหมาะสมกับทีม

นอกจากนี้ ทั้งสองทีมไม่มีความจำเป็นที่จะต้อง Release แอพพลิเคชั่นเวอร์ชั่นใหม่พร้อมกัน แต่ละทีมแค่ต้องรักษา Backward compatibility ของเซอร์วิซ ที่คนอื่นเรียกใช้ให้ทำงานได้เหมือนเดิมก็พอ  หากเซอร์วิซตัวหนึ่งเกิดพังขึ้นมา ตัวอื่น (ที่ไม่ได้ใช้งานเซอร์วิซนี้) ก็ยังสามารถทำงานได้อย่างปกติ

นี่เป็นกรณีของทีมพัฒนาขนาด 20 คน  ลองนึกภาพบริษัทใหญ่ที่มีทีมพัฒนาเป็นหลักพันคนดูสิครับ ถ้าไม่มีการแบ่งออกเป็นเซอร์วิซย่อยๆ จะ Release ทีนี่วุ่นวายแค่ไหน

 

Centrally Integrated database

ตัวเปรียบเทียบถัดไปคือแนวคิดของการจัดเก็บข้อมูล โดยแอพพลิเคชั่นบางประเภท (เช่น ERP- Enterprise Resource Planning) จะเน้นให้มีการจัดเก็บข้อมูลของทุกอย่างในฐานข้อมูลเดียวกัน เพื่อให้มีความสอดคล้อง (Consistent) และลดความซ้ำซ้อน (Duplication) ของข้อมูล

vs centraldb

ในแนวคิดของ Microservices  แต่ละชิ้นส่วนของแอพพลิเคชั่น (เซอร์วิซ) จะเป็นอิสระต่อกัน ดังนั้น แต่ละเซอร์วิซสามารถมีฐานข้อมูลแยกออกไปเป็นอิสระของตัวเอง การออกแบบ Microservices จึงต้องระวังเรื่องความสอดคล้องและความซ้ำซ้อนของข้อมูลให้ดี

อีกประเด็นหนึ่งที่สำคัญคือ แต่ละเซอร์วิซจะไม่สามารถเข้าถึง Database ของชิ้นส่วนอื่นๆได้ โดยจะต้องดึงข้อมูลผ่านทาง API ที่ตกลงกันไว้เท่านั้น

จากรูปด้านบน เราอาจจะต้องการแสดงรายงานยอดเงินในบัญชีย้อนหลังสามสิบวัน โดยแต่ละวันมีการโอนเงินเข้าออกเท่าไรบ้าง ซึ่งจะต้องดึงข้อมูลจากทั้ง 2 เซอร์วิซมารวมเข้าด้วยกัน  คำถามคือ เราจะเชื่อมข้อมูลด้วยอย่างไร?  ถ้าใช้หมายเลขบัญชีควรจะเป็นความรับผิดชอบของเซอร์วิซไหนในการเชื่อมข้อมูล  ส่วนนี้เป็นความยากของการออกแบบ Microservices เพราะถ้าออกแบบผิดแล้ว การจะย้ายโค้ดข้ามเซอร์วิซในภายหลังจะทำได้ยากมาก

 

Enterprise Service Bus

อีกตัวอย่างหนึ่งที่สามารถแสดงข้อแตกต่างของ Microservices กับ SOA แบบอื่นได้ดี คือสถาปัตยกรรมที่ใช้ Enterprise Service Bus

vs esb

Enterprise Service Bus เป็นสถาปัตยกรรมแบบหนึ่งของ SOA  โดยตัว Bus จะหน้าที่หลายอย่างดังนี้ [2]

  1. ส่งข้อมูลหรือข้อความต่างๆระหว่าง Service
  2. จัดการ Deployment ของ Service เวอร์ชั่นต่างๆ
  3. จัดการ Service ที่หลาย Service ต้องเรียกใช้ร่วมกัน (event handling, , data mapping and transformation, security, exception handling)
  4. Service orchestration

ในทางตรงกันข้าม Microservices เลือกที่จะตัด Enterprise Service Bus ออก และหันไปใช้ “Dumb pipes” [1] ในการส่งข้อมูลแทน

Dumb pipes อาจจะเป็นเพียง HTTP connection หรือ Light-weight messaging  ใจความหลักคือ Dumb pipes จะทำหน้าที่ส่งข้อมูล ส่วนหน้าที่อื่นๆที่เคยถูกทำโดย Enterprise Service Bus จะถูกโอนไปให้ตัวเซอร์วิซเป็นผู้ตัดสินใจเอง

แล้วแบบไหนดีกว่า? คำตอบก็แล้วแต่มุมมองและสถานการณ์ ฝั่งที่สนับสนุน Microservices จะสนับสนุนตัวเองว่า Business logic และการจัดการต่างๆควรจะเป็นหน้าที่ของฝั่งเซอร์วิซ ไม่ใช่เอามาปนกันอยู่ใน Bus  ในขณะที่ฝั่งที่สนับสนุน Bus ก็จะบอกว่าการให้อิสระมากเกินไปกับฝั่งเซอร์วิซ จะทำให้ควบคุมจากส่วนกลางทำได้ยาก Interface ของแต่ละเซอร์วิซไม่สอดคล้องกัน และมี Logic ที่ซ้ำซ้อนระหว่างเซอร์วิซมากกว่า

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

 

สรุปข้อดีข้อเสียของ Microservices

ถึงจุดนี้ ผู้อ่านคงเห็นภาพของ Microservices ชัดเจนมากขึ้น ผมข้อสรุปข้อดีข้อเสียไว้ดังนี้ครับ

  • ข้อดี

    • Technology Independent – แต่ละเซอร์วิซมีอิสระในการเลือกใช้เทคโนโลยีที่ต่างกัน
    • Availability – หากเซอร์วิซหนึ่งพัง เซอร์วิซอื่นๆที่เหลือยังสามารถทำงานต่อได้โดยไม่พังทั้งระบบ
    • Release and deployment – การจัดการเซอร์วิซเล็กๆหลายตัวทำได้ง่ายกว่า
    • Scalability – การทำขยายเซอร์เวอร์เพื่อรองรับผู้ใช้งานที่มากขึ้น (เช่น เพิ่มจำนวนเซอร์เวอร์) สามารถทำได้ในเฉพาะเซอร์วิซที่ถูกใช้งานเยอะๆ  แทนที่จะต้องทำกับทั้งแอพพลิเคชั่น
  • ข้อเสีย

    • Boundary definition between services – หากการแบ่งเซอร์วิซทำไว้ตอนแรกไม่ดี การแก้ไขในภายหลังจะยากมาก เพราะ  Service อาจถูกเรียกใช้แล้ว การรักษา Backward compatibility จะทำให้การ Refactor โค้ดระหว่างเซอร์วิซยากมากๆ
    • Latency – การใช้ส่งข้อมูลระหว่างเซอร์วิซนั้นช้ากว่าการส่งข้อมูลภายใน process เดียวกัน (ในกรณี Monolith)
    • Consistency – ความสอดคล้องกันของข้อมูลจะรักษายากกว่ากรณี Integrated Database
    • Infrastructure automation– การทำ Microservices ให้ได้ดี จำเป็นต้องมีการจัดการ Infrastructure ที่ดีมาก เพราะการ deploy เซอร์วิซจำนวนมากนั้นจะทำ Manual ยากมาก ส่วนใหญ่ต้องใช้การทำ Automation เกือบ 100%

แหล่งอ้างอิง:

from:https://www.techtalkthai.com/introduction-to-microservices-architecture/