Azure Service Fabric
อยากทำ Microservice บนคลาว์เขาทำกันยังไงนะ?
Last updated
Was this helpful?
อยากทำ Microservice บนคลาว์เขาทำกันยังไงนะ?
Last updated
Was this helpful?
ในคอร์สนี้เราจะมาสอนการสร้าง Microservices Architecture ทั้งในเครื่องตัวเองและบนคลาว์กันดูบ้างว่ามันจะเป็นยังไง โดยในคอร์สนี้เราจะพามาเล่นคลาว์ของฝั่ง Microsoft ที่ชื่อว่า Azure และเราจะสร้างตัว microservices ไว้กับตัวที่มีชื่อว่า Service Fabric ที่ออกแบบมารองรับการทำงานของ architecture นี้โดยเฉพาะครับ
แนะนำให้อ่าน ในบทความนี้เราจะพาเล่นคลาว์กัน แต่ถ้าเพื่อนๆยังไม่เคยลองเล่นคลาว์ของ Microsoft เลยก็สามารถเข้าไปลองเล่นได้ที่คอร์ส หรือถ้ายังไม่รู้เลยว่าคลาว์คืออะไรก็สามารถเข้าไปศึกษาได้จากบทความนี้เลยครับ
เวลาที่เราจะสร้างแอพที่ อึด ถึก ทน โดยเฉพาะอย่าง Microservices Architecture แล้วละก็ มันจะมีหลายเรื่องเลยที่เราจะต้องไปลงมือจัดการด้วยตัวเอง แต่เดี๋ยวก่อนถ้าเราใช้ Service Fabric แล้วล่ะก็ ชีวิตของเราก็จะสบายขึ้น เพราะเจ้า Service Fabric มันจะรับผิดชอบดูแลให้เอง ดังนั้น Developer ก็มีหน้าที่แค่ลงมือเขียนแอพตามที่ตัวเองถนัด โดยไม่ต้องสนใจ Infrastructure ต่างๆเลย แถมของที่ได้ยังเป็นสิ่งที่เรียกว่า Reliable Microservices & Containers อีกด้วย
เพื่อความรวดเร็วและเห็นภาพผมขอโชว์เป็น Video ด้านล่างนะ ซึ่งผมเขียนเป็นเกมปิงปอง โดยมีผู้เล่น 2 ฝั่ง และมีการคุยกันผ่าน Board game โดยทั้งหมดนี่ผมเขียนไว้ใน Service Fabric ซึ่งมันก็จะรับปิงปองไปเรื่อยๆ แล้วผมก็จะลองแกล้งทำให้เซิฟเวอร์ล่มดู แล้วมาดูกันว่ามันจะเกิดอะไรขึ้นกับแอพที่อยู่บน Service Fabric
จากในตัวอย่างก็คือสิ่งที่เรียกว่า Reliable Microservices นั่นเอง ซึ่งปรกติถ้าเราอยากให้แอพของเราทำงานได้ต่อได้แม้ว่าเซิฟเวอร์จะล่มไปก็ตาม เราจะต้องมีการออกแบบทำ infrastructure อีกเยอะเลย ซึ่งโค้ดที่เราเขียนกันโดยปรกติมันจะทำแบบนี้ไม่ได้ แต่ข้อดีในการทำบน Service Fabric ก็คือ เราสามารถทำให้การเขียนโค้ดแบบเดิมๆของเรามีความสามารถในลักษณะนี้ได้นั่นเอง
ก่อนที่จะไปอธิบายว่ามันเกิดแบบนี้ได้ยังไง ผมขออธิบายก่อนว่าโดยปรกติถ้าเราเขียนโค้ดโดยไม่ได้ออกแบบเพื่อป้องกันเรื่องเซิฟเวอร์ล่ม มันจะเกิดสิ่งที่เรีกยว่า Single point of failure นั่นเอง เช่น เรามีแอพ 3 ตัวต่อไปที่ database ก้อนเดียวกันตามรูป
เจ้าแอพทั้ง 3 ตัวนี้ก็ทำงานตามปรกติไม่มีปัญหาอะไร จนกระทั่งตัว Database ที่มันต่อไปเกิดล่มด้วยสาเหตุอะไรก็แล้วแต่ (รวมถึงการทำ maintenance ด้วยนะ) ซึ่งผลที่ตามมาคือเจ้าแอพทั้ง 3 ตัวมันก็จะทำงานต่อไม่ได้นั่นเอง แม้ว่าตัวมันเองจะไม่ได้ล่มก็ตาม (เพราะมันไปดำเนินการต่างๆกับ database ไม่ได้ไงล่ะ)
จากที่ว่ามานี่แหละคือสิ่งที่เรียกว่า Single point of failure
Single point of failure คืออาการของระบบที่ เมื่อมีของบางอย่างพัง มันจะทำให้ระบบของเราใช้งานไม่ได้ทั้งหมดเลย โดยไม่สนใจว่ามันจะเป็นเรื่องเล็กน้อยแค่ไหนก็ตาม เปรียบเทียบง่ายๆ ถ้าหัวใจคนเราหยุดเต้น แม้ว่าอวัยวะทุกอย่างเราจะทำงานได้เป็นปรกติ สุดท้ายก็ไม่รอดอยู่ดีนั่นเอง
ปรกติเราจะต้องจัดการเรื่องของ Infrastructure & Architecture เพื่อแก้ปัญหาเรื่องพวกนี้ เพื่อจะได้รับมือเมื่อมันล่ม เช่นการทำ Microservices เพราะแบบง่ายสุดมันก็จะตายแค่ service ของมันตัวเดียวเท่านั้น ส่วน service อื่นๆก็อาจจะใช้ Default value strategy ไปแก้ขัดระหว่างที่มันติดต่อหา service ที่ล่มไม่ได้นั่นเอง
แต่ทั้งหมดนี่เราไม่ต้องทำแบบนี้ก็ได้ เพราะเจ้า Service Fabric เขาจัดการเรื่องเหล่านี้ให้เราทั้งหมดแล้ว อีกทั้งเราไม่ต้องใช้ Database อีกต่อไปเลยก็ได้นะ โดยสิ่งที่ service fabric ทำให้เราคือเขามีการเก็บข้อมูลต่างๆลงสิ่งที่เรียกว่า Reliable Collection ซึ่งมันจะมีการทำ Caching ต่างๆ และเขามี SDK รองรับ เพื่อสุดท้ายก็จะเขียนลง Disk ต่อ ดังนั้นขอบอกเลยว่า มันเร็วกว่าการไปต่อ Database เสียอีก
นอกจากนี้แอพของเราเวลาทำงานใน Service Fabric นั้นจะมีตัวหลักที่คอยทำงานอยู่ 1 ตัว และมีตัวสำรองอีกหลายๆตัวแล้วแต่เราจะตั้ง ซึ่งเมื่อไหร่ก็ตามที่ตัวหลักไม่สามารถทำงานต่อได้ด้วยเหตุผลอะไรก็ตาม เจ้าตัวสำรองก็จะถูกสลับมาทำงานแทนตัวหลักได้ต่อเลย
สุดท้ายเรื่องข้อมูลที่เมื่อมีการเปลี่ยนแปลงเกิดขึ้นปุ๊ป ตัวหลัก ก็จะทำการกระจายผลไปยังตัวสำรองต่างๆ เพื่อให้ตัวสำรองมีข้อมูลที่ตรงหรือใกล้เคียงกับตัวหลักที่สุด เพื่อให้ตัวสำรองพร้อมมาทำงานแทนที่ตัวเองนั่นเอง
อีกหนึ่งในความยากเวลาที่เราทำงานกับ Cluster ก็คือการบริหารจัดการ service ต่างๆที่อยู่ข้างใน เช่นมันล่มหรือเปล่า จะอัพเกรด-ดาวเกรดเวอร์ชั่นดีไหม หรืออะไรก็ตามแต่ ใน Service Fabric เขาก็เตรียมของพวกนี้ให้เราใช้งานเรียบร้อยแล้วโดยที่เราไม่ต้องไปยุ่งอะไรมันเลย ด้วยสิ่งที่เรียกว่า Service Fabric Explorer นั่นเอง เช่นตัวเกมปิงปองในวีดีโอ มันก็จะมี service อยู่ข้างในทั้งหมด 4 ตัว และมีการคุยกันตามรูป
ซึ่งเจ้าตัว Service Fabric Explorer ก็จะทำหน้าที่คอยให้เราดูแลควบคุม services ต่างๆนั้นอีกทีตามที่ผมโชว์ในวีดีโอนั่นเอง
ทั้งหมดที่ว่ามาเราสามารถเล่น Service Fabric บนเครื่องตัวเอง หรือบนคลาว์เจ้าไหนก็ได้ แถมจะใช้ OS อะไรก็ได้ตามความต้องการเลย
ลองเขียนเว็บ Stateful ตัวแรกของเรากัน
ลองสร้าง Reliable Microservices หน่อยซิ
มารู้จักกับการใช้งาน State ของมันหน่อย
มารู้จักกับ Actor กันดูบ้าง
คิดไรออกเดี๋ยวเอามาใส่ในช่องนนี้ละกันนะ
คอร์สนี้กำลังค่อยๆเขียนอยู่ ซึ่งจะค่อยๆทยอยอัพเดทลงตรงนี้เรื่อยๆ ส่วนใครที่ไม่อยากพลาดอัพเดทคอร์สนี้หรืออยากรับบทความใหม่ๆ สามารถเข้าไปกด Like เพื่อรับข่าวสารใหม่ๆจาก ได้นะครับ 😍