สำหรับวิศวกรซอฟต์แวร์ (Software Engineer) ยุคใหม่หรือผู้ที่ทำงานทางด้าน IT ไม่ว่าจะเป็น IT Infrastructure หรืออยู่ในวงจรการพัฒนาระบบ (SDLC-software development life cycle) คงเคยได้ยินคำว่า Cloud Native กันมาไม่มากก็น้อย วันนี้เราจะมาทำความรู้จักกับเจ้า Cloud Native กันว่ามันคืออะไร ทำไมถึงต้องมีและทำอย่างไรให้เราเข้าใกล้สิ่งที่เรียกว่า Cloud Native ให้มากขึ้น
ถ้าเราพูดถึงคลาวด์เนทีฟ (Cloud Native) แต่ละคนก็จะให้ความจำกัดความออกไปได้ในหลากหลายแบบ วันนี้เราจะขอยกมาแค่พอสังเขป
รูปแบบการพัฒนาแอปพลิเคชัน (Application) เพื่อมารองรับการประมวลผลในรูปแบบคลาวด์ (Cloud Computing Model) โดยแอปพลิเคชัน (Application) ที่ถูกออกแบบมาจะมีความยืดหยุ่นเพื่อให้ทำงานเข้ากับการประมวลผลบนคลาวด์ที่สามารถปรับขนาด (Scalable) ได้ตามความต้องการให้ได้มากที่สุด
"Cloud Computing" คือ การใช้ฮาร์ดแวร์และซอฟต์แวร์เพื่อส่งมอบบริการผ่านเครือข่าย (โดยทั่วไปคืออินเทอร์เน็ต) ด้วยการประมวลผลแบบคลาวด์ผู้ใช้สามารถเข้าถึงไฟล์และใช้แอพพลิเคชั่นจากอุปกรณ์ใดก็ได้ที่สามารถเข้าถึงอินเทอร์เน็ตได้ ผู้ให้บริการ Cloud Computing ก็ยกตัวอย่างเช่น Microsoft Azure, Google Cloud Platform และ Amazon Web Services เป็นต้น
Cloud Native Compute Foundation(CNCF) เป็นโครงการที่ Linux Foundation ก่อตั้งขึ้นปี 2015 ซึ่งถือเป็นโครงการที่มีบทบาทอย่างมากในการพัฒนาเทคโนโลยีคอนเทนเนอร์ (Container Technology)ให้เราได้ใช้ทุกวันนี้ ตัวอย่าง Software ที่ทาง CNCF ดูแลและผลักดันที่ทุกคนรู้จักกันดีคือ คูเบอร์เนทีส Kubernetes(K8s) ซึ่งถือเป็น Container Orchestrator เบอร์ 1 ที่ทุกคนใช้กัน เป็นต้น ได้ให้คำนิยามไว้ว่า เทคโนโลยี Cloud-native เป็นส่วนช่วยทำให้องค์กรสามารถสร้างและเรียกใช้แอพพลิเคชั่น (Application)ที่มีความสามารถขยายตัวได้(Scalable)บนสภาพแวดล้อมไม่ว่าจะเป็น Public, Private, Hybride Clouds
ที่มา The CNCF Cloud Native Definition v1.0
Cloud Native หลักแนวคิดนี้เกิดมาเพื่อตอบโจทย์ความเร็ว (Speed)และความคล่องตัว (Agility) ซึ่งถือว่าเป็นอาวุธที่สำคัญในการดำเนินธุรกิจในยุคนี้ หากมีไอเดียสดใหม่ต้องสามารถเข็นสิ่งนั้นออกสู่ตลาดได้ทันที ในขณะเดียวกันความซับซ้อนทางธุรกิจและความต้องการของผู้ใช้บริการที่มากขึ้น การตอบสนองที่รวดเร็ว, ฟีเจอร์ใหม่ๆ ที่ตอบโจทย์และให้บริการได้ตลอดเวลาโดยไม่พบปัญหา ปัญหาการใช้งานช้าเกิดปัญหาซ้ำหากไม่ได้รับการแก้ไขอย่างทันท่วงทีผู้ใช้งานพร้อมที่จะย้ายไปใช้บริการของคู่แข่งที่มีลักษณะการให้บริการที่คล้ายๆ กันในทันที ตัวอย่างเช่น การเกิดมาของ Clubhouse โซเชียลมีเดียแพลตฟอร์ม ที่เพียงชั่วข้ามคืนหลังจาก อีลอน มัสก์ ผู้ก่อตั้งเทสลาและสเปซเอ็กซ์ เปิดห้องใน Clubhouse พูดคุยกับ วลาด เทเนฟ ซีอีโอแอพพลิเคชั่นซื้อขายหุ้นชื่อดัง Robinhood แอพพลิเคชั่นที่มีผู้ใช้งานเพียง 1,500 คน ก็มียอดดาวน์โหลดพุ่งไปถึง 2 ล้านคน ในขญะที่ตัว Software ยังอยู่ในช่วงทดลอง (beta) เท่านั้น ซึ่งในเวลาไม่นาน มาร์ค ซัคเคอร์เบิร์ก ผู้ก่อตั้ง Meta (Facebook) ก็เข็น Twitter Space ซึ่งมีบริการคล้ายๆ กันออกมาแข่งทันที เป็นต้น
ตัวอย่างบริษัทที่นำ Clond Native มาใช้งานเพื่อให้เกิดความรวดเร็วคล่องตัวในการให้บริการแก่ลูกค้า ได้แก่ Netflix มี 600 กว่า Service มีการ Deploy Software กว่า 100 ครั้ง/วัน , Uber มี 1,000 กว่า Service มีการ Deploy software หลักพันครั้งในแต่ละสัปดาห์ , Wechat มี 3,000 กว่า Service มีการ Deploy Software กว่า 1000 ครั้ง/วัน
อย่างที่เรารู้กันว่าการที่จะได้มาซึ่งความเร็ว (Speed) และความคล่องตัว (Agility) ของ Cloud Native นั้นมาจากหลายปัจจัย สำคัญที่สุดคือ โครงสร้างพื้นฐานระบบคลาวด์ (Cloud Infrastructure) แต่ไม่ได้มีเพียงเท่านั้นยังมีปัจจัยพื้นฐานอีกหลายส่วน เรามาดูกันว่ามีอะไรบ้าง
การใช้ประโยชน์จากรูปแบบการให้บริการของคลาวด์ (Cloud Service Model) ให้มากที่สุด เช่น การใช้ PAAS (Patform as a Service) ที่มีเครื่องไม้เครืองมือพื้นฐานมาให้พร้อมประหยัดเวลาในการ Install Software พื้นฐานและการสามารถเพิ่มลดขยายได้อย่างอัตโนมัติทำให้นักพัตนาแอปพลิเคชันไม่เสียเวลาในการจัดการด้านนี้มากเกินไป
วิศวกรซอฟต์แวร์ (Software Engineer) ที่จะพัฒนา Cloud Native Application ส่วนใหญ่มักจะใช้หลัก The Twelve-Factor Application ในการออกแบบและสร้างแอพพลิเคชั่น (Application) ขึ้นมา สามารถหาอ่านหลักการเหล่านั้นพิ่มเติมได้ทั้ง 2 ภาษา ฉบับภาษาไทย, ฉบับภาษาอังกฤษ
"The Twelve-Factor Application" ถูกเขียนโดยคุณ Adam Wiggins ผู้ก่อตั้ง Heroku แพลตฟอร์มที่ให้บริการด้านคลาวด์แบบ Platform as a Service (PAAS) เจ้าแรกๆ ของโลกโดยเนื้อหาของจะว่าด้วย 12 หลักการในการสร้าง Software as a Service (Web Application) ซึ่งสามารถนำมาประยุกต์ใช้ร่วมกับสถาปัตยกรรมแบบ Microservice ได้
ก่อนหน้าที่จะเราจะเข้าสู่ยุคสถาปัตยกรรมการพัตนาแอปลิเคชันแบบไมโครเซอร์วิส (Microservices) เรามีสถาปัตยกรรมแบบโมโนลิธ (Monolithic) สิ่งทีไมโครเซอร์วิส (Microservices) นั้นมาช่วยแก้ปัญหาคือ เมื่อระบบมีความซับซ้อนและใหญ่ขึ้นเรื่อยๆ ความรวดเร็วในการพัฒนายังคงรวดเร็วเหมือนเดิม โดยใช้วิธีการแยกส่วนออกเป็นบริการ (Service) ย่อย ๆ ในแต่ละบริการ (Service) มีข้อมูล (Data)เป็นของตัวเอง เชื่อมต่อแต่ละบริการ (Service) ผ่าน Application Programming Interface (API) วิศวกรซอฟต์แวร์ (Software Engineer) มีอิสระในการเลือกใช้ภาษาในการพัฒนาและแบ่งส่วนการพัฒนาได้ดีขึ้น ส่งผลให้ส่งมอบงานได้ไวขึ้น
ก่อนที่เราจะเข้าสู่ยุคของคอนเทนเนอร์ (Container) เราผ่านยุคของคอมพิวเตอร์เสมือน (Virtual Machine หรือ VM) ที่มีความสามารถในการแบ่งทรัพยากรจากคอมพิวเตอร์จริงๆ อีกทีหนึ่ง วิธีการนี้ทำให้เกิดการแยกส่วน (Isolation) ระหว่าง VM แต่ละตัวอย่างสมบูรณ์ สามารถรันระบบปฏิบัติการที่แตกต่างกันระหว่าง Guest OS กับ Host OS ได้ แต่ข้อเสียของแบบนี้คือใช้ทรัพยากรซ้ำซ้อน ทำงานช้า เปลืองพื้นที่เก็บ OS และซอฟต์แวร์ต่างๆ ที่มักจะใช้เหมือนกันใน VM ทุกตัว Container นั้นเข้ามาช่วยแก้ปัญหาในเรื่องของการลดความซ้ำซ้อนของการใช้ทรัพยากรลงและแบ่งทรัพยากรทาด้านแอพพลิเคชันและซอฟต์แวร์ออกจากกันรวมถึงประโยชน์ในการพัฒนา Software วิศวกรซอฟต์แวร์ (Software Engineer) สามารถใช้ภาษา (Programming Language) และไลบรารี่ (Libraly)ในการพัฒนาได้อย่างอิสระ
Backing Services คือ การแยกบริการ (Service) ต่างๆ ออกมากจากแอปพลิเคชัน (Application) เช่น Database, Messaging/Queueing Systems, Caching Systems เป็นต้น เพื่อให้เกิดความอิสระระหว่าง Service และ Backing Service ในการขยายการรองรับรวมถึงการสำรองข้อมูลของ Backing Service สามารถทำได้อย่างอิสระ
การทำระบบอัตโนมัติ (Automation) คือ การนำงานที่ต้องทำบ่อย ๆ และมีรูปแบบค่อยข้างตายตัวมาทำเป็นระบบอัตโนมัติเพื่อจุดประสงค์ในการลดการทำงานที่ซ้ำซ้อน ในที่นี้เราจะขอแบ่งออกเป็น 2 ส่วน คือ
อย่างไรก็ตาม Cloud Native เป็นรูปแบบและแนวคิดเพื่อตอบโจทย์โลกของธุรกิจที่หมุนไว การนำไปใช้งานในแต่ละองค์กรอาจจะแตกต่างกันออกไป เช่น องค์ประกอบอาจจะไม่ครบหรือเครื่องมือที่นำมาช่วยทำให้องค์ประกอบนั้นสมบูรณ์จะแตกต่างกันออกไปทั้งนี้ขึ้นอยู่กับบริบทหลายอย่าง ซึ่งสิ่งเหล่านั้นไม่สำคัญเท่าผลลัพธ์ประสิทธิภาพในการทำงานที่รวดเร็วและคล่องตัวของคนในองค์กรและสามารถส่งมอบบริการที่ตอบโจทย์ลูกค้าได้อย่างทันท่วงที
แปลและเรียบเรียงจาก Microsoft : What is Cloud Native?
ทีม DevOps ของ Blockfint ที่มีความเชี่ยวชาญ Cloud Native Services & Solutions