AWS Cloud Native แนวคิดตอบโจทย์องค์กรยุค Digital Transformation

ภาพแสดง 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

  1. Cloud
  2. Modern Design
  3. Microservices
  4. Container
  5. Backing Services
  6. Automation

โดยผู้เขียนนั้นจะขอเน้นไปที่ Container ซึ่งมีประโยชน์ดังนี้ คือ

  1. การใช้ทรัพยากรการประมวลผลน้อยกว่าการนำแอปพลิเคชันทั่วไปไปใช้จริง 
  2. เราสามารถนำไปใช้จริงได้ทันที
  3. เราสามารถปรับขนาดทรัพยากรการประมวลผลบนคลาวด์ (Scaling) ที่แอปพลิเคชันของเราต้องการได้อย่างมีประสิทธิภาพมากขึ้น

ภาพแสดง Cloud-Native Architecture คือเลเยอร์ของเทคโนโลยี Cloud-Native ที่นักพัฒนาใช้ในการสร้าง จัดการ และเรียกใช้แอปพลิเคชัน Cloud-Native

ทำไมเราควรใช้ Cloud Native

Cloud Native หลักแนวคิดนี้เกิดมาเพื่อตอบโจทย์ความเร็ว (Speed) และความคล่องตัว (Agility) ซึ่งถือว่าเป็นอาวุธที่สำคัญในการดำเนินธุรกิจในยุคนี้ หากมีไอเดียสดใหม่ที่เราเพิ่งคิดออกนั้นเราก็อยากที่จะผลักดันให้ไอเดียนั้นออกสู่ตลาดได้ทันทีและรวดเร็วมากที่สุดเท่าที่จะทำได้ ในขณะเดียวกันนั้น ก็มีความซับซ้อนทางธุรกิจและความต้องการของผู้ใช้บริการที่มากขึ้น ดังนั้นเราควรจะต้องที่จะมีการพัฒนาระบบที่สามารถตอบสนองได้รวดเร็ว, พัฒนาฟีเจอร์ใหม่ ๆ ที่ตอบโจทย์และให้บริการได้ตลอดเวลาโดยที่จะต้องไม่มีปัญหาตามมา ถ้าหากว่ามีปัญหาการใช้งานช้าขึ้นมา หรือเกิดปัญหาซ้ำหากไม่ได้รับการแก้ไขอย่างทันท่วงทีผู้ใช้งานที่เป็นลูกค้าของเรานั้นก็อาจจะที่ย้ายไปใช้บริการของคู่แข่งที่มีลักษณะการให้บริการที่คล้าย ๆ กันได้ในทันทีทำให้เราเสียลูกค้าไป

สำหรับประโยชน์ของสถาปัตยกรรม Cloud-Native นี้มีอยู่หลายประการซึ่งผู้อ่านสรุปให้ตามนี้

  1. ทรัพยากรของเครื่องที่ใช้น้อยลงกว่าเดิม เนื่องด้วยเทคโนโลยี container ทำให้เพิ่มความสามารถในการบริหารจัดการทรัพยากรให้มีประสิทธิภาพได้ดียิ่งขึ้น 
  1. เพิ่มความเร็ว (agile) ในการส่งมอบระบบงานหรือพัฒนานวัตกรรมใหม่ๆออกสู่ตลาด ด้วยแนวคิดการออกแบบแอปลิเคชั่นแบบ microservice ภายใต้ DevOps practices ซึ่งช่วยลดความซับซ้อนของกระบวนการพัฒนาระบบงานลง และ auto provisioning ซึ่งสามารถติดตั้งสภาพแวดล้อมเพื่อรองรับการทำงานของระบบงานได้โดยอัตโนมัติ
  1. ลดความเสี่ยงที่จะเกิดโอกาสระบบล่มให้บริการไม่ได้ จากปัจจัยที่คาดเดาไม่ได้ (resiliency) ด้วยความสามารถ HA cluster, load balancing, Automatic recovery ภายใต้สถาปัตยกรรมบริหารจัดการ container  
  1. รองรับความยืดหยุ่นในการจัดการ 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 นั้นสามารถดึงประโยชน์ดังต่อไปนี้เพื่อมาตอบสนองต่อธุรกิจได้ 

  1. เพิ่มประสิทธิภาพ

การพัฒนา Cloud-Native นั้นมาพร้อมกับแนวทางปฏิบัติที่คล่องตัวอย่าง DevOps และกระบวนการส่งออกโค้ดแบบอัตโนมัติ (CD) นักพัฒนาซอฟต์แวร์ใช้เครื่องมืออัตโนมัติ บริการคลาวด์ และวัฒนธรรมการออกแบบที่ทันสมัยเพื่อสร้างแอปพลิเคชันที่ปรับขนาดได้อย่างรวดเร็ว

  1. ลดต้นทุน

ด้วยการนำวิธีการแบบ Cloud-Native มาใช้นั้นลูกค้าไม่จำเป็นต้องลงทุนในการจัดซื้อและการบำรุงรักษาโครงสร้างพื้นฐานทางกายภาพหรือที่เราเรียกว่า On-premise server ซึ่งมีราคาแพงเป็นอย่างมากทำให้ประหยัดค่าใช้จ่ายในการดำเนินงานได้ในระยะยาว 

  1. พร้อมใช้งานเสมอ

เทคโนโลยี 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 เพื่อตอบสนองความต้องการรอบด้านของลูกค้าครับ

อ้างอิง

  1. https://aws.amazon.com/what-is/cloud-native/
  2. https://learn.microsoft.com/en-us/dotnet/architecture/cloud-native/definition
  3. https://aws.amazon.com/blogs/architecture/journey-to-adopt-cloud-native-architecture-series-1-preparing-your-applications-for-hypergrowth/
  4. https://notsosecure.com/achieving-devsecops-using-aws-cloud-native-services
  5. https://www.oreilly.com/library/view/cloud-native-python/9781787129313/67d61708-22ae-41f6-affc-d4d1f05cc78a.xhtml

เรียบเรียงบทความโดย รังสิมันต์ เกษแก้ว

— Cloud HM