มาเริ่มต้นรู้จัก Cloud-Native แอปลิเคชั่นยุคใหม่ สำหรับธุรกิจดิจิตอล
Cloud Native คือ รูปแบบของการพัฒนาแอปลิเคชั่นยุคใหม่ โดยออกแบบเพื่อรองรับ การประมวลผลในรูปแบบคลาวด์ (cloud computing model) อาทิเช่น รองรับความยืดหยุ่นตาม workload ของงาน , รองรับการใช้ทรัพยากรร่วมกัน เป็นต้น คุณสมบัติหลักๆของ Cloud Native ประกอบด้วย 3 เรื่องใหญ่ๆ คือ
1) แอปพลิเคชั่นต้องออกแบบด้วยแนวคิดของ microservice ซึ่งเป็นแนวคิดในการพยายามแยกระบบงาน ออกมาเป็นบริการย่อยๆ ที่อิสระจากกันให้มากที่สุด แล้วแจกจ่ายความรับผิดชอบไปให้ผู้พัฒนาในแต่ละบริการ ทำให้สามารถทำการพัฒนาในรูปแบบคู่ขนาน (parallel) เพื่อเพิ่มความเร็วในการพัฒนาระบบงาน
2) แอปลิเคชั่นต้องติดตั้งทำงานภายใต้เทคโลโนยี container ซึ่งเป็นการจำลองสภาพแวดล้อมเพื่อรองรับการทำงานของโปรแกรมโดยมีการใช้ทรัพยากรที่น้อย เมื่อเทียบกับเทคโลโนยี Virtual Machine ปัจุจุบันได้มีการออกแบบสถาปัตยกรรม ให้มีการรองรับการใช้งานของบริการต่างๆที่ทำงานอยู่ภายใต้ container ในปริมาณมาก ได้อย่างมีประสิทธิภาพ ได้แก่ เทคโนโลยี Kubernetes ซึ่งถือว่าเป็นจุดเปลี่ยนสำคัญที่ระบบงานหรือแอปลิเคชั่นต่างๆ กำลังย้ายจากที่ทำงานภายใต้ virtual machine มาใช้เทคโนโลยี container แทน
3) แอปลิเคชั่นต้องถูกพัฒนาผ่านกระบวนการหรือแนวคิด DevOps ซึ่ง DevOps จะครอบคลุม ในสามส่วนหลักๆ คือ วัฒนธรรมในเรื่องการทำงานร่วมกันเป็นทีม (culture) เทคโลโนยีคือเครื่องมือที่ใช้ในการทำงาน (technology) และกระบวนการที่เป็น practices ที่กำหนดเป็นมาตรฐานในการทำงาน (process) เช่น ต้องรองรับกระบวนการ Continuous Delivery ซึ่งคือขั้นตอนการส่งมอบโปรแกรมที่ผ่านการแก้ไขหรือพัฒนาเพิ่มเติมให้บ่อยและเร็วขึ้นกว่าเดิม โดยผ่านกระบวนการ automation คือลดคนให้เข้ามาเกี่ยวข้องน้อยลง ดังนั้น จะเห็นว่า การออกแบบในลักษณะ microservice จะมีส่วนช่วย เนื่องด้วยการออกแบบให้เป็นบริการที่อิสระจากกัน ทำให้มั่นใจได้ว่าเมื่อมีการแก้ไขบริการหนึ่งจะไม่ส่งผลกระทบต่อบริการในส่วนอื่นๆของระบบ เป็นต้น
ถ้าระบบงานที่ถูกพัฒนาขึ้นมาแล้วขาดคุณสมบัติอย่างใดอย่างหนึ่งไปในสามเรื่องนี้ ก็คงไม่สามารถเรียกระบบงานนั้นเป็น cloud-native ได้ ในแต่ละหัวข้อของสามเรื่องนี้ มีรายละเอียดอยู่มาก ไว้เล่าเจาะลึกลงในแต่ละเรื่องอีกทีในตอนต่อๆไป
สำหรับประโยชน์ของสถาปัตยกรรม Cloud-Native นี้มีอยู่หลายประการ พอจะกล่าวให้เห็นเป็นตัวอย่างได้ดังนี้
1) ทรัพยากรของเครื่องที่ใช้น้อยลงกว่าเดิม เนื่องด้วยเทคโนโลยี container ทำให้เพิ่มความสามารถในการบริหารจัดการทรัพยากรให้มีประสิทธิภาพได้ดียิ่งขึ้น
2) เพิ่มความเร็ว (agile) ในการส่งมอบระบบงานหรือพัฒนานวัตกรรมใหม่ๆออกสู่ตลาด ด้วยแนวคิดการออกแบบแอปลิเคชั่นแบบ microservice ภายใต้ DevOps practices ซึ่งช่วยลดความซับซ้อนของกระบวนการพัฒนาระบบงานลง และ auto provisioning ซึ่งสามารถติดตั้งสภาพแวดล้อมเพื่อรองรับการทำงานของระบบงานได้โดยอัตโนมัติ
3) ลดความเสี่ยงที่จะเกิดโอกาสระบบล่มให้บริการไม่ได้ จากปัจจัยที่คาดเดาไม่ได้ (resiliency) ด้วยความสามารถ HA cluster, load balancing, Automatic recovery ภายใต้สถาปัตยกรรมบริหารจัดการ container
4) รองรับความยืดหยุ่นในการจัดการ workload ที่เรียกว่า on demand workload ด้วยความสามารถ auto scale ที่อยู่ภายใต้การบริหารจัดการของ container เช่นกัน ซึ่งเป็นการรองรับความต้องการของธุรกิจที่ต้องการจ่ายการใช้งานของระบบตามการใช้งานจริง ที่เรียกว่า pay-as-you-go model
กล่าวโดยสรุป ในยุคดิจิตอล องค์กรธุรกิจจำเป็นที่เริ่มมอง cloud-native เป็นกลยุทธในการแข่งขัน เนื่องด้วยความเร็วในการนำเทคโนโลยีใหม่ๆมาสร้างบริการใหม่ทางธุรกิจเพื่อตอบสนองความต้องการของตลาด ในค่าใช้จ่ายที่ถูกลง โดยควรเร่งพัฒนาบุคลากรให้ศึกษา ทำความเข้าใจ และนำสู่การปฏิบัติได้อย่างมีประสิทธิผล