ภาพแสดง Hypergrowth architecture diagram ของ Cloud Native
Credit: AWS
ทักทายผู้อ่าน
สวัสดีครับผู้อ่านทุกท่าน ในบทความนี้ผมจะพาผู้อ่านทุกท่านไปทำความรู้จักกับ Cloud Native กันซึ่งเป็นหนึ่งในแนวคิดหรือเทคโนโลยีที่มีประโยชน์มาก ๆ ในการสร้างแอปพลิเคชั่นและเชื่อมต่อการทำงานของแอปหลาย ๆ ตัวเข้าด้วยกันทำให้ระบบของเรานั้นมีประสิทธิภาพและรับมือได้หลายสถานการณ์ ถ้าผู้อ่านพร้อมแล้วก็ไปลุยกันเลยครับ!!
AWS Cloud Native คืออะไร
ถ้าเราพูดถึง คลาวด์เนทีฟ (Cloud Native) แล้วไปถามแต่ละคนว่าจะให้คำจำกัดความว่ายังไงผู้อ่านเชื่อเกือบ 100% เลยว่าคำตอบที่ได้นั้นก็จะแตกต่างออกไป วันนี้เราจะขอยกคำนิยามมาแค่ให้พอเข้าใจง่าย ๆ ถึงไอเดียของ Cloud Native สำหรับผู้เขียนนั้น Cloud Native คือแนวคิดหรือไอเดียที่สื่อถึงรูปแบบการพัฒนาแอปพลิเคชัน (Application) เพื่อมารองรับการประมวลผลในรูปแบบคลาวด์ (Cloud computing model) โดยแอปพลิเคชัน (Application) ที่ถูกออกแบบมาจะมีความยืดหยุ่นเพื่อให้ทำงานเข้ากับการประมวลผลบนคลาวด์ที่สามารถปรับขนาด (Scalable) ได้ตามความต้องการให้ได้มากที่สุด
ส่วนนิยามของคำว่า “Cloud computing” นั้นก็คือ การใช้ฮาร์ดแวร์และซอฟต์แวร์เพื่อส่งมอบบริการผ่านเครือข่าย (โดยทั่วไปคืออินเทอร์เน็ตที่เราใช้กันอยู่ทุกวันนี้นั่นแหละครับ) โดย Cloud Computing ช่วยให้ผู้ใช้งานสามารถเข้าถึงไฟล์และใช้แอปพลิเคชันจากอุปกรณ์ใดก็ได้ที่สามารถเข้าถึงอินเทอร์เน็ตได้ ผู้ให้บริการ Cloud Computing เจ้าใหญ่ ๆ ก็เยอะแต่ว่าที่ได้รับความนิยมก็เช่น Microsoft Azure, Google Cloud Platform และแน่นอนที่ขาดไม่ได้ก็คือ Amazon Web Services (AWS) เป็นต้น โดยผู้อ่านสามารถอ่านบทความเกี่ยวกับ Cloud Computing ได้จากบทความของ Cloud HM เลยครับ
Cloud Native Compute Foundation
CNCF ได้นิยามการประมวลผลแบบ Cloud – Native ว่าเป็นการใช้ซอฟต์แวร์โอเพนซอร์ส รวมถึงเทคโนโลยีต่างๆ เช่น คอนเทนเนอร์ ไมโครเซอร์วิส และเซอร์วิส เมช เพื่อพัฒนาและปรับใช้แอพพลิเคชั่นที่สามารถปรับขนาดได้บนแพลตฟอร์มคลาวด์คอมพิวติ้ง
CNCF (Cloud Native Computing Foundation) เป็นองค์กรที่เปิดโอกาสให้กับองค์กรต่าง ๆ เพื่อเริ่มต้นการใช้เทคโนโลยีคลาวด์เนทีฟอย่างมีประสิทธิภาพ มีจุดเน้นที่การสนับสนุนชุมชนโอเพนซอร์สในการพัฒนาส่วนประกอบที่สำคัญสำหรับการใช้เทคโนโลยีคลาวด์เนทีฟ โดยเฉพาะ Kubernetes
ภาพแสดงสัญลักษณ์หรือ Logo ของ Cloud Native Compute Foundation(CNCF)
Credit: CNCF
ถ้าให้อธิบายให้ละเอียดกว่านี้ก็คือโครงการ CNCF เป็นโครงการที่ Linux Foundation ก่อตั้งขึ้นเมื่อปี 2015 ซึ่งถือเป็นโครงการที่มีบทบาทอย่างมากในการพัฒนาเทคโนโลยีคอนเทนเนอร์ (Container technology) ให้เราได้ใช้ทุกวันนี้ ตัวอย่างซอฟต์แวร์ที่ทาง CNCF ดูแลและผลักดันที่ทุกคนรู้จักกันดีคือ Kubernetes (K8s) อ่านว่า คูเบอร์เนทีส ซึ่งถือเป็น Container orchestrator ที่ได้รับความนิยมสูงมากและหลาย ๆ คนก็ใช้กัน โดยอีกนิยามหนึ่งของเทคโนโลยี Cloud-native ก็คือเป็นตัวช่วยที่ทำให้องค์กรหรือธุรกิจ (Business) สามารถสร้างและเรียกใช้แอปพลิเคชันที่มีความสามารถขยายตัวได้ (Scalable) บนสภาพแวดล้อมต่าง ๆ ไม่ว่าจะเป็น Public, Private, หรือ Hybrid clouds
องค์ประกอบของ Cloud Native
- Cloud
- Modern Design
- Microservices
- Container
- Backing Services
- Automation
โดยผู้เขียนนั้นจะขอเน้นไปที่ Container ซึ่งมีประโยชน์ดังนี้ คือ
- การใช้ทรัพยากรการประมวลผลน้อยกว่าการนำแอปพลิเคชันทั่วไปไปใช้จริง
- เราสามารถนำไปใช้จริงได้ทันที
- เราสามารถปรับขนาดทรัพยากรการประมวลผลบนคลาวด์ (Scaling) ที่แอปพลิเคชันของเราต้องการได้อย่างมีประสิทธิภาพมากขึ้น
ภาพแสดง Cloud-Native Architecture คือเลเยอร์ของเทคโนโลยี Cloud-Native ที่นักพัฒนาใช้ในการสร้าง จัดการ และเรียกใช้แอปพลิเคชัน Cloud-Native
ทำไมเราควรใช้ Cloud Native
Cloud Native หลักแนวคิดนี้เกิดมาเพื่อตอบโจทย์ความเร็ว (Speed) และความคล่องตัว (Agility) ซึ่งถือว่าเป็นอาวุธที่สำคัญในการดำเนินธุรกิจในยุคนี้ หากมีไอเดียสดใหม่ที่เราเพิ่งคิดออกนั้นเราก็อยากที่จะผลักดันให้ไอเดียนั้นออกสู่ตลาดได้ทันทีและรวดเร็วมากที่สุดเท่าที่จะทำได้ ในขณะเดียวกันนั้น ก็มีความซับซ้อนทางธุรกิจและความต้องการของผู้ใช้บริการที่มากขึ้น ดังนั้นเราควรจะต้องที่จะมีการพัฒนาระบบที่สามารถตอบสนองได้รวดเร็ว, พัฒนาฟีเจอร์ใหม่ ๆ ที่ตอบโจทย์และให้บริการได้ตลอดเวลาโดยที่จะต้องไม่มีปัญหาตามมา ถ้าหากว่ามีปัญหาการใช้งานช้าขึ้นมา หรือเกิดปัญหาซ้ำหากไม่ได้รับการแก้ไขอย่างทันท่วงทีผู้ใช้งานที่เป็นลูกค้าของเรานั้นก็อาจจะที่ย้ายไปใช้บริการของคู่แข่งที่มีลักษณะการให้บริการที่คล้าย ๆ กันได้ในทันทีทำให้เราเสียลูกค้าไป
สำหรับประโยชน์ของสถาปัตยกรรม Cloud-Native นี้มีอยู่หลายประการซึ่งผู้อ่านสรุปให้ตามนี้
- ทรัพยากรของเครื่องที่ใช้น้อยลงกว่าเดิม เนื่องด้วยเทคโนโลยี container ทำให้เพิ่มความสามารถในการบริหารจัดการทรัพยากรให้มีประสิทธิภาพได้ดียิ่งขึ้น
- เพิ่มความเร็ว (agile) ในการส่งมอบระบบงานหรือพัฒนานวัตกรรมใหม่ๆออกสู่ตลาด ด้วยแนวคิดการออกแบบแอปลิเคชั่นแบบ microservice ภายใต้ DevOps practices ซึ่งช่วยลดความซับซ้อนของกระบวนการพัฒนาระบบงานลง และ auto provisioning ซึ่งสามารถติดตั้งสภาพแวดล้อมเพื่อรองรับการทำงานของระบบงานได้โดยอัตโนมัติ
- ลดความเสี่ยงที่จะเกิดโอกาสระบบล่มให้บริการไม่ได้ จากปัจจัยที่คาดเดาไม่ได้ (resiliency) ด้วยความสามารถ HA cluster, load balancing, Automatic recovery ภายใต้สถาปัตยกรรมบริหารจัดการ container
- รองรับความยืดหยุ่นในการจัดการ workload ที่เรียกว่า On-demand Workload ด้วยความสามารถ Auto Scale ที่อยู่ภายใต้การบริหารจัดการของ Container เช่นกัน ซึ่งเป็นการรองรับความต้องการของธุรกิจที่ต้องการจ่ายการใช้งานของระบบตามการใช้งานจริง ที่เรียกว่า Pay-as-you-go Model
กรณีศึกษา
Credit: Adweek
ตัวอย่างเช่น การเกิดมาของ Clubhouse โซเชียลมีเดียแพลตฟอร์ม ที่เพียงชั่วข้ามคืนหลังจาก Elon Musk (อีลอน มัสก์) ผู้ก่อตั้งเทสลาและสเปซเอ็กซ์เปิดห้องใน Clubhouse พูดคุยกับ วลาด เทเนฟ ซีอีโอแอปพลิเคชันซื้อขายหุ้นชื่อดัง Robinhood แอปพลิเคชันที่มีผู้ใช้งานเพียง 1,500 คน ก็มียอดดาวน์โหลดพุ่งไปถึง 2 ล้านคน ในขญะที่ตัวซอฟต์แวร์ยังอยู่ในช่วงทดลอง (ฺBeta) เท่านั้น ซึ่งในเวลาไม่นาน มาร์ค ซัคเคอร์เบิร์ก ผู้ก่อตั้ง Meta (Facebook) ก็เริ่มปล่อยตัว Twitter Space ซึ่งมีบริการคล้าย ๆ กันออกมาแข่งทันที เป็นต้น
ตัวอย่างเพิ่มเติมอีกอย่างคือ “Achieving DevSecOps using AWS Cloud Native Services”
ศึกษาเพิ่มเติมได้ที่ https://notsosecure.com/achieving-devsecops-using-aws-cloud-native-services
มาใช้ Cloud Native บน AWS กันเถอะ
ในส่วนของผู้ให้บริการเจ้าใหญ่อย่าง AWS นั้นก็มีการสนับสนุนและรองรับแนวคิด Cloud Native เช่นเดียวกัน โดยลูกค้าที่ใช้งาน AWS นั้นสามารถดึงประโยชน์ดังต่อไปนี้เพื่อมาตอบสนองต่อธุรกิจได้
- เพิ่มประสิทธิภาพ
การพัฒนา Cloud-Native นั้นมาพร้อมกับแนวทางปฏิบัติที่คล่องตัวอย่าง DevOps และกระบวนการส่งออกโค้ดแบบอัตโนมัติ (CD) นักพัฒนาซอฟต์แวร์ใช้เครื่องมืออัตโนมัติ บริการคลาวด์ และวัฒนธรรมการออกแบบที่ทันสมัยเพื่อสร้างแอปพลิเคชันที่ปรับขนาดได้อย่างรวดเร็ว
- ลดต้นทุน
ด้วยการนำวิธีการแบบ Cloud-Native มาใช้นั้นลูกค้าไม่จำเป็นต้องลงทุนในการจัดซื้อและการบำรุงรักษาโครงสร้างพื้นฐานทางกายภาพหรือที่เราเรียกว่า On-premise server ซึ่งมีราคาแพงเป็นอย่างมากทำให้ประหยัดค่าใช้จ่ายในการดำเนินงานได้ในระยะยาว
- พร้อมใช้งานเสมอ
เทคโนโลยี Cloud-Native นั้นช่วยให้บริษัทของลูกค้าสามารถสร้าง Applications ที่มีความยืดหยุ่นและพร้อมใช้งานได้สูงมาก ๆ นอกจากนี้ยังสามารถ Update ฟีเจอร์ได้โดยที่ไม่ต้องหยุดการทำงานของ App และบริษัทต่าง ๆ สามารถเพิ่ม resources ในช่วงเวลาที่มีการใช้งานสูงได้
แอปพลิเคชัน Cloud-Native
ภาพแสดงแผนผังการสร้าง Application บน Data Server โดยใช้ Cloud Native
Credit: https://www.oreilly.com/library
เป็นโปรแกรมซอฟต์แวร์ที่ประกอบด้วย Microservice ขนาดเล็กมากมายที่พึ่งพากัน โดยทั่วไปแล้ว Software Enginner สร้างแอปพลิเคชันแบบ Monolith ด้วยโครงสร้างบล็อกเดียวที่มีฟังก์ชันการทำงานที่จำเป็นทั้งหมด ด้วยวิธีการ Cloud-Native นั้นนักพัฒนาซอฟต์แวร์จะแบ่งฟังก์ชันการทำงานเป็น Microservice ขนาดเล็ก ทำให้แอปพลิเคชันแบบ Cloud-Native นั้นมีความคล่องตัวมากขึ้นเนื่องจาก Microservice เหล่านี้ทำงานได้อย่างอิสระและใช้ทรัพยากรการประมวลผลน้อยที่สุดในการทำงานเมื่อเทียบกับแอปพลิเคชันระดับองค์กรแบบดั้งเดิม โดยแอปพลิเคชันแบบดั้งเดิมนั้นถูกสร้างขึ้นโดยใช้วิธีการพัฒนาซอฟต์แวร์ที่มีความยืดหยุ่นน้อยกว่ามาก นักพัฒนามักจะสร้างฟังก์ชันซอฟต์แวร์ Batch ใหญ่ก่อนที่จะปล่อยออกมาเพื่อทดสอบ ด้วยเหตุนี้ แอปพลิเคชันแบบเดิมจึงใช้เวลานานในการนำไปใช้ได้จริงและไม่สามารถปรับขนาดได้ตามต้องการ
ในทางกลับกันนั้น แอปพลิเคชัน Cloud-Native ใช้วิธีการทำงานร่วมกันและสามารถปรับ Scale หรือขนาดได้สูงมาก ๆ โดยนักพัฒนาซอฟต์แวร์ใช้เครื่องมือซอฟต์แวร์เพื่อทำให้การสร้าง การทดสอบ และการนำแอปพลิเคชัน Cloud-Native ไปใช้จริงนั้นเป็นไปได้โดยอัตโนมัติ (Automatic workflow) โดยเราสามารถสามารถตั้งค่า ปรับใช้ หรือคัดลอก Microservice ได้ในทันทีซึ่งไม่สามารถทำได้กับแอปพลิเคชันแบบเดิม
ทิ้งท้าย (How to Start)
อ่านมาจนถึงตรงนี้ถ้าหากผู้อ่านมีความสนใจในบริการของ AWS โดยเฉพาะถ้าอยากจะปรึกษาเกี่ยวกับการให้บริการ AWS การสร้างแอปพลิเคชั่นของบริษัทโดยใช้ Cloud Native นั้นสามารถติดต่อ Cloud HM เพื่อให้คำปรึกษาได้โดยตรงเลยครับ เพราะเรามีผู้เชี่ยวชาญที่สามารถให้คำแนะนำได้สอดคล้องกับรูปแบบของบริษัทและเรามีการให้บริการ Cloud Platform ครบวงจร ทั้ง Domestic Cloud และ Global Cloud เพื่อตอบสนองความต้องการรอบด้านของลูกค้าครับ
อ้างอิง
- https://aws.amazon.com/what-is/cloud-native/
- https://learn.microsoft.com/en-us/dotnet/architecture/cloud-native/definition
- https://aws.amazon.com/blogs/architecture/journey-to-adopt-cloud-native-architecture-series-1-preparing-your-applications-for-hypergrowth/
- https://notsosecure.com/achieving-devsecops-using-aws-cloud-native-services
- https://www.oreilly.com/library/view/cloud-native-python/9781787129313/67d61708-22ae-41f6-affc-d4d1f05cc78a.xhtml
เรียบเรียงบทความโดย รังสิมันต์ เกษแก้ว
— Cloud HM