Cloud Native คืออะไร?

clock
14 February 2022

สำหรับวิศวกรซอฟต์แวร์ (Software Engineer) ยุคใหม่หรือผู้ที่ทำงานทางด้าน IT ไม่ว่าจะเป็น IT Infrastructure หรืออยู่ในวงจรการพัฒนาระบบ (SDLC-software development life cycle) คงเคยได้ยินคำว่า Cloud Native กันมาไม่มากก็น้อย วันนี้เราจะมาทำความรู้จักกับเจ้า Cloud Native กันว่ามันคืออะไร ทำไมถึงต้องมีและทำอย่างไรให้เราเข้าใกล้สิ่งที่เรียกว่า Cloud Native ให้มากขึ้น

Cloud Native (ที่มาภาพ: cloudn)

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) ที่ให้ไว้อย่างเป็นทางการโดย Cloud Native Compute Foundation(CNCF)

โครงการ Cloud Native Compute Foundation (CNCF) (ที่มาภาพ: CNCF)

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 ครั้ง/วัน

องค์ประกอบหลักของ Cloud native (The Pillars of Cloud Native)

อย่างที่เรารู้กันว่าการที่จะได้มาซึ่งความเร็ว (Speed) และความคล่องตัว (Agility) ของ Cloud Native นั้นมาจากหลายปัจจัย สำคัญที่สุดคือ โครงสร้างพื้นฐานระบบคลาวด์ (Cloud Infrastructure) แต่ไม่ได้มีเพียงเท่านั้นยังมีปัจจัยพื้นฐานอีกหลายส่วน เรามาดูกันว่ามีอะไรบ้าง

องค์ประกอบพื้นฐานของคลาวด์เนทีฟ (Cloud Native) (ที่มาภาพ: Microsoft)

1. Cloud

การใช้ประโยชน์จากรูปแบบการให้บริการของคลาวด์ (Cloud Service Model) ให้มากที่สุด เช่น การใช้ PAAS (Patform as a Service) ที่มีเครื่องไม้เครืองมือพื้นฐานมาให้พร้อมประหยัดเวลาในการ Install Software พื้นฐานและการสามารถเพิ่มลดขยายได้อย่างอัตโนมัติทำให้นักพัตนาแอปพลิเคชันไม่เสียเวลาในการจัดการด้านนี้มากเกินไป

ภาพแสดง Cloud Service Model (ที่มาภาพ: Microsoft)

2. Modern Design

วิศวกรซอฟต์แวร์ (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 ได้

3. Microservice

ก่อนหน้าที่จะเราจะเข้าสู่ยุคสถาปัตยกรรมการพัตนาแอปลิเคชันแบบไมโครเซอร์วิส (Microservices) เรามีสถาปัตยกรรมแบบโมโนลิธ (Monolithic)  สิ่งทีไมโครเซอร์วิส (Microservices) นั้นมาช่วยแก้ปัญหาคือ เมื่อระบบมีความซับซ้อนและใหญ่ขึ้นเรื่อยๆ ความรวดเร็วในการพัฒนายังคงรวดเร็วเหมือนเดิม โดยใช้วิธีการแยกส่วนออกเป็นบริการ (Service) ย่อย ๆ ในแต่ละบริการ (Service) มีข้อมูล (Data)เป็นของตัวเอง เชื่อมต่อแต่ละบริการ (Service) ผ่าน Application Programming Interface (API) วิศวกรซอฟต์แวร์ (Software Engineer) มีอิสระในการเลือกใช้ภาษาในการพัฒนาและแบ่งส่วนการพัฒนาได้ดีขึ้น ส่งผลให้ส่งมอบงานได้ไวขึ้น

ความแตกต่างระหว่างสถาปัตยกรรมแบบโมโนลิธ (Monolithic) กับ ไมโครเซอร์วิส (Microservices) (ที่มาภาพ: Microsoft)

4. Container

ก่อนที่เราจะเข้าสู่ยุคของคอนเทนเนอร์ (Container) เราผ่านยุคของคอมพิวเตอร์เสมือน (Virtual Machine หรือ VM) ที่มีความสามารถในการแบ่งทรัพยากรจากคอมพิวเตอร์จริงๆ อีกทีหนึ่ง วิธีการนี้ทำให้เกิดการแยกส่วน (Isolation) ระหว่าง VM แต่ละตัวอย่างสมบูรณ์ สามารถรันระบบปฏิบัติการที่แตกต่างกันระหว่าง Guest OS กับ Host OS ได้ แต่ข้อเสียของแบบนี้คือใช้ทรัพยากรซ้ำซ้อน ทำงานช้า เปลืองพื้นที่เก็บ OS และซอฟต์แวร์ต่างๆ ที่มักจะใช้เหมือนกันใน VM ทุกตัว Container นั้นเข้ามาช่วยแก้ปัญหาในเรื่องของการลดความซ้ำซ้อนของการใช้ทรัพยากรลงและแบ่งทรัพยากรทาด้านแอพพลิเคชันและซอฟต์แวร์ออกจากกันรวมถึงประโยชน์ในการพัฒนา Software วิศวกรซอฟต์แวร์ (Software Engineer) สามารถใช้ภาษา (Programming Language) และไลบรารี่ (Libraly)ในการพัฒนาได้อย่างอิสระ

ความแตกต่างระหว่าง คอนเทนเนอร์ (Containers) และ เวอร์ชวลแมชชีน (Virtual Machines) (ที่มาภาพ: Docker)

5. Backing Services

Backing Services คือ การแยกบริการ (Service) ต่างๆ ออกมากจากแอปพลิเคชัน (Application) เช่น Database, Messaging/Queueing Systems, Caching Systems เป็นต้น เพื่อให้เกิดความอิสระระหว่าง Service และ Backing Service ในการขยายการรองรับรวมถึงการสำรองข้อมูลของ Backing Service สามารถทำได้อย่างอิสระ

ตัวอย่าง Backing Services (ที่มาภาพ: Microsoft)

6. Automation

การทำระบบอัตโนมัติ (Automation) คือ การนำงานที่ต้องทำบ่อย ๆ และมีรูปแบบค่อยข้างตายตัวมาทำเป็นระบบอัตโนมัติเพื่อจุดประสงค์ในการลดการทำงานที่ซ้ำซ้อน ในที่นี้เราจะขอแบ่งออกเป็น 2 ส่วน คือ

  • Infrastructure คือ การทำ  Automate Provisioning infrastructure ผ่านเครื่องมือที่เรียกว่า IaC (Infrastructure as Code) โดยการสร้าง Infrastructure จะประกาศออกมาเป็น Code ทั้งหมด ตัวอย่างเครืองมือที่นิยมใช้กันในปัจจุบัน เช่น  Terraform, Ansible, Azure CLI  เป็นต้น จะดีขนาดไหนถ้าเราสามารถสร้าง Virtual Machine หรือ VM ไปพร้อมกับติดตั้ง Software พื้นฐาน หลาย VM Instance ภายในเวลาไม่กีนาที
  • Deployment คือ การนำเครื่องไม้เครื่องมือที่ช่วยอำนวยความสะดวกในการนำพา Code แปลงไปเป็น Application เพื่อทำงานอยู่บน Infrastructure  ที่เรากำหนด ซึ่งในยุคนี้เราเรียกเครื่องมือเหล่านี้ว่า Continuous Integration (CI)/Continuous Deliver (CD) tool ตัวอย่างเครืองมือที่นิยมใช้กันในปัจจุบัน เช่น Jenskins, Azure DevOps, GitHub Actions, GitLab CI เป็นต้น
ตัวอย่างขั้นตอนการทำงานของ CI/CD Tools (ที่มาภาพ: GitLab)

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

แปลและเรียบเรียงจาก  Microsoft : What is Cloud Native?

Tags:#cloud

Author
Writer: DevOps Team

ทีม DevOps ของ Blockfint ที่มีความเชี่ยวชาญ Cloud Native Services & Solutions


สนใจร่วมธุรกิจกับเรา?
Mailbox