Cloud Native: ปฐมบทแห่ง Application ยุคใหม่


Introduction:

     ปัจจุบันปฎิเสธไม่ได้เลยว่าวงการไอทีเปลี่ยนแปลงไปอย่างรวดเร็วในช่วง 3 - 4 ปีที่ผ่านมา เราได้รู้จักศัพท์ในสายเทคโนโลยีใหม่ ๆ อาทิเช่น Digital Transformation, Cloud Computing, Distruption ลามมาจนถึงฝั่งของการพัฒนาแอฟพลิเคชั่นภายใต้แนวคิดใหม่ ๆ เช่น Agile Process, Scrum Team และศัพท์ยอดฮิตอีกหนึ่งคำในวงการไอทียุคปัจจุบันคงหนีไม่พ้น “Cloud Native” 

   เมื่ออ่านมาถึงตรงนี้จะมีหลายคนตีความไปล่วงหน้าเรียบร้อยแล้วว่า เรากำลังพูดถึงการสร้าง แอปพลิเคชั่นที่ใช้งานบน Cloud ไม่เกี่ยวกับแอปพลิเคชั่นที่รันบนเครื่องแม่ข่ายอื่น ๆ ซึ่งจริง ๆ แล้วการให้ตีความแบบนั้นถือว่าไม่ถูกต้องสักทีเดียวนัก 

   ตามคำจำกัดความของ CNCF (Cloud Native Compute Foundation) ซึ่งเป็นองค์กรที่อิสระภายใต้ Linux Foundation ได้ให้คำนิยามไว้ว่า Cloud Native ไว้ว่าคือ เทคโนโลยีที่ทำให้องค์กรสามารถสร้างและรันแอฟพลิเคชั่นสมัยใหม่ได้ในทุกสภาพแวดล้อมทั้งบน Public, Private หรือ Hybrid Cloud อย่างรวดเร็วผ่านคอนเทนเนอร์เทคโลโลยี (Containers) สามารถเพิ่มและลดจำนวนแอฟพลิเคชั่นได้ตามความต้องการและสื่อสารการผ่าน APIs แบบไมโครเซอร์วิส (Microservice)

องค์ประกอบของ Cloud Native:


 จากคำนิยามข้างต้นสามารถแบ่งองค์ประกอบของ cloud native ออกได้ดังนี้

   1.ออกแบบแอปพลิเคชั่นแบบไมโครเซอร์วิส (Microservice) แบ่งแยกโมดูลการทำงานในแต่ละส่วนให้เป็นอิสระจากกัน โดยแต่ละส่วนมีหน้าที่ในการจัดการข้อมูลของตัวเองและสื่อสารระหว่างไมโครเซอร์วิสผ่าน APIs โดยหลักการออกแบบนี้จะช่วยให้การ พัฒนาแอปพลิเคชั่นแต่ละส่วนเป็นอิสระต่อกัน สามารถแบ่งงานให้ทีมพัฒนาฯ หลาย ๆ ทีมช่วยกันดำเนินการ ส่งผลให้สามารถสร้างแอปพลิเคชั่นได้อย่างรวดเร็ว นอกจากนี้เมื่อเวลาที่จำเป็นต้องปรับปรุงหรือแก้ไข ก็สามารถทำได้ทีละไมโครเซอร์วิสโดยไม่ส่งผลกระทบให้แอปพลิเคชั่นทั้งระบบต้องหยุดการทำงาน

   2.ใช้เทคโนโลยีคอนเทนเนอร์ (Container) เพื่อให้แอปพลิเคชั่นสามารถทำงานได้ในทุกๆสภาพแวดล้อมโดยไม่จำเป็นต้องดำเนินการติดตั้ง/คอนฟิกใหม่ (Zero Configure) จำเป็นต้องใช้เทคโนโลยีคอนเทนเนอร์เข้ามาใช้ในการติดตั้งแอปพลิเคชั่น ด้วยข้อดีเรื่องขนาดคอนเทนเนอร์เมื่อเทียบกับเทคโนโลยีเครื่องเสมือน (Virtual machine) ในรูปแบบเดิม สามารถทำให้คอนเทนเนอร์มีขนาดเล็กกว่าได้มากกว่า 100 เท่าและการใช้ทรัพยากรในการประมวลผลตามจริงส่งผลให้เราสามารถขยายการรันแอปพลิเคชั่นได้มากขึ้นโดยใช ้ความสามารถด้านฮาร์ดแวร์ในการทำงานเท่าเดิม (Scale) สำหรับในกรณีการใช้งานบน Cloud ด้วยคุณลักษณะของคอนเทนเนอร์ที่กล่าวมาข้างต้นจึงทำให้เราสามารถย้ายการรันงานระหว่าง Public / Private / Hybrid Cloud ได้อย่างสะดวกรวดเร็ว รวมถึงมีค่าใช้จ่ายในการใช้งานตามการรันงานจริงอีกด้วย

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

   4.ร่วมกันทำงานเป็นทีมสไตล์ DevOps เพื่อทลายข้อจำกัดของสายการบังคับบัญชาเดิม ๆ ในองค์กร การทำงานด้วยวัฒนธรรมแบบ DevOps คือการเปลี่ยน Mind Set ของคนทั้งในฝั่ง Developer และ Operation ให้มีเป้าหมายร่วมกันในการในการพัฒนา/ส่งมอบแอปพลิเคชั่นแก่ธุรกิจได้เร็วขึ้นโดยใช้ทุกทรัพยากรที่มีเพื่อให้บรรลุเป้าหมาย
 

custom_html_banner2

 

ทำแอปพลิเคชั่นแบบ Cloud Native แล้วมีประโยชน์อย่างไร:


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

 

   1.ความเร็ว (Speed) เมื่อเราสามารถเร่งความเร็วในการพัฒนาและส่งมอบแอปพลิเคชั่นไปใช้งานจริงจากเดิมแต่ละรอบของการพัฒนาอาจใช้เวลาเป็นเดือนเหลือเพียงไม่กี่สัปดาห์ หรือไม่กี่วันต่อหนึ่งรอบ (Life Cycle) ความเร็วที่ได้มานี้จะส่งผลดีต่อธุรกิจในภาพรวมด้านความสามารถในการตอบสนองต่อความต้องการของลูกค้า การเข้าถึงตลาดได้อย่างรวดเร็ว นอกจากนี้แนวคิดเรื่อง Cloud Native ยังช่วยเปลี่ยนแนวคิดในการบริหารจัดการภาคโอเปอร์เรชั่น (Operation) ภายในองค์กรได้อีกด้วย จากแนวคิดขององค์กรส่วนใหญ่จะมุ่งเน้นไปที่การทดสอบแอปพลิเคชั่นอย่างละเอียดทุก ๆ ฟังก์ชั่น (เนื่องจากเป็น Monolithic) ซึ่งทำให้กระบวนการทั้งหมดล่าช้า ไปเป็นการส่งมอบแต่ละไมโครเซอร์วิสที่ทำเสร็จแล้วเพื่อนำไปใช้งานได้อย่างรวดเร็ว ซี่งแนวคิดแบบนี้ทำให้องค์กรรับความเสี่ยงน้อยกว่า (Low-risk Impact) และสามารถแก้ไขในกรณีที่เกิดปัญหาและส่งมอบแอปพลิเคชั่นในเวอร์ชั่นใหม่ได้อย่างรวดเร็ว

   2.การขยาย (Scale) จากข้อได้เปรียบด้านการใช้งานเทคโนโลยีคอนเทนเนอร์(Container) องค์กรสามารถปรับขยาย/ลดขนาดแอปพลิเคชี่นให้รองรับการใช้งานได้ตามจริงทำให้ลูกค้าได้รับประสบการ์ณที่ดีในการใช้งาน ในด้านการลงทุนเรื่องฮาร์ดแวร์หรือcloud องค์กรสามารถวางแผนการลงทุนได้อย่างมีประสิทธิภาพในระยะยาวไม่จำเป็นต้องจัดซื้อ หรือทำสัญญาเช่าเครื่องบนcloud ไว้รอล่วงหน้า

   3.ผลกำไรของธุรกิจ (Margin) เป็นผลสืบเนื่องมาจากข้อ 1 และ ข้อ 2 ซึ่งเมื่อองค์กรสามารถปรับใช้งานแอปพลิเคชั่นในรูปแบบของ Cloud Native ได้อย่างมีประสิทธิภาพส่งผลให้บริษัทสามารถส่งมอบบริการที่ดีแก่ลูกค้า และเกิด Income ที่มีเสถียรภาพ ในฝั่งของค่าใช้จ่าย เมื่อสามารถควบคุมการใช้งานและการขยายแอปพลิเคชั่นตามการใช้งานจริง ธุรกิจก็สามารถควบคุม CAPEX (กรณี On-Premise ที่สามารถจัดซื้อฮาร์ดแวร์รองรับการขยายที่ใช้จริง) หรือ OPEX (กรณี Cloud/Leasing เพื่อเช่าใช้งานตามการใช้งานจริง)

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

Ref: https://github.com/cncf/toc/blob/master/DEFINITION.md

About Author

custom_html_banner2
Content by Praparn Luengphoonlap (อ. ประพาฬ เหลืองพูนลาภ)

Work Experience:

  • Co-founder & CEO at Opcellent Co.,Ltd.
  • Infrastructure Engineer
  • Banking & Insurance Tech Co.

Lecturer Experience:

  • DevOps BKK 2018
  • Workshop: Docker From Zero to Hero [รุ่น 1 - รุ่น 4]
  • Thai Open Stack Bangkok 2016