TH | EN
TH | EN
หน้าแรกColumnistCloud Native คืออะไร ?

Cloud Native คืออะไร ?

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

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

Cloud Native Compute Foundation(CNCF) เป็นโครงการที่ Linux Foundation ก่อตั้งขึ้นเมื่อปี 2015 ซึ่งถือเป็นโครงการที่มีบทบาทอย่างมากในการพัฒนาเทคโนโลยีคอนเทนเนอร์ (Container technology) ให้เราได้ใช้ทุกวันนี้ ตัวอย่างซอฟต์แวร์ที่ทาง CNCF ดูแลและผลักดันที่ทุกคนรู้จักกันดีคือ คูเบอร์เนทีส Kubernetes (K8s) ซึ่งถือเป็น Container orchestrator เบอร์ 1 ที่ทุกคนใช้กัน เป็นต้น ได้ให้คำนิยามไว้ว่า เทคโนโลยี Cloud-native เป็นส่วนช่วยทำให้องค์กรสามารถสร้างและเรียกใช้แอปพลิเคชันที่มีความสามารถขยายตัวได้ (Scalable) บนสภาพแวดล้อมไม่ว่าจะเป็น Public, Private, Hybrid clouds

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

ตัวอย่างเช่น การเกิดมาของ Clubhouse โซเชียลมีเดียแพลตฟอร์ม ที่เพียงชั่วข้ามคืนหลังจาก อีลอน มัสก์ ผู้ก่อตั้งเทสลาและสเปซเอ็กซ์ เปิดห้องใน Clubhouse พูดคุยกับ วลาด เทเนฟ ซีอีโอแอปพลิเคชันซื้อขายหุ้นชื่อดัง Robinhood แอปพลิเคชันที่มีผู้ใช้งานเพียง 1,500 คน ก็มียอดดาวน์โหลดพุ่งไปถึง 2 ล้านคน ในขญะที่ตัวซอฟต์แวร์ยังอยู่ในช่วงทดลอง (ฺ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 (Platform as a service) ที่มีเครื่องไม้เครืองมือพื้นฐานมาให้พร้อมประหยัดเวลาในการติดตั้งซอฟต์แวร์พื้นฐานและการสามารถเพิ่มลดขยายได้อย่างอัตโนมัติทำให้นักพัตนาแอปพลิเคชันไม่เสียเวลาในการจัดการด้านนี้มากเกินไป

ภาพแสดง 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) นั้นมาช่วยแก้ปัญหาคือ เมื่อระบบมีความซับซ้อนและใหญ่ขึ้นเรื่อย ๆ ความรวดเร็วในการพัฒนายังคงรวดเร็วเหมือนเดิม โดยใช้วิธีการแยกส่วนออกเป็นบริการย่อย ๆ ในแต่ละบริการมีข้อมูลเป็นของตัวเอง เชื่อมต่อแต่ละบริการผ่าน Application Programming Interface(API) วิศวกรซอฟต์แวร์มีอิสระในการเลือกใช้ภาษาในการพัฒนาและแบ่งส่วนการพัฒนาได้ดีขึ้น ส่งผลให้ส่งมอบงานได้ไวขึ้น

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

4. Container

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

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

5.Backing services

Backing services คือการแยกบริการต่าง ๆ ออกมากจากแอปพลิเคชัน เช่น 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?

ขอบคุณภาพปกจาก Cloud Native Solution

STAY CONNECTED

0แฟนคลับชอบ
440ผู้ติดตามติดตาม
spot_img

Lastest News

MUST READ