Cloud-native คืออะไร? วิธีการที่ทันสมัยในการพัฒนาซอฟต์แวร์

คำว่า“ คลาวด์เนทีฟ” ได้รับความนิยมมากมายโดยเฉพาะผู้ให้บริการระบบคลาวด์ ไม่เพียงแค่นั้น แต่ยังมีรากฐานของตัวเองนั่นคือ Cloud Native Computing Foundation (CNCF) ซึ่งเปิดตัวในปี 2558 โดย Linux Foundation

กำหนด "Cloud-native"

ในการใช้งานทั่วไป“ คลาวด์เนทีฟ” เป็นแนวทางในการสร้างและเรียกใช้แอปพลิเคชันที่ใช้ประโยชน์จากข้อดีของรูปแบบการส่งมอบระบบคลาวด์คอมพิวติ้ง “ Cloud-native” เป็นข้อมูลเกี่ยวกับวิธีสร้างและปรับใช้แอปพลิเคชันไม่ใช่ที่ใด หมายความว่าแอปนั้นอาศัยอยู่ในระบบคลาวด์สาธารณะซึ่งต่างจากศูนย์ข้อมูลภายในองค์กร

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

“ แอปพลิเคชันบนระบบคลาวด์ได้รับการออกแบบมาโดยเฉพาะเพื่อให้ทำงานในลักษณะที่ยืดหยุ่นและกระจายตามที่แพลตฟอร์มการประมวลผลแบบคลาวด์สมัยใหม่ต้องการ” Mike Kavis กรรมการผู้จัดการของ บริษัท ที่ปรึกษา Deloitte กล่าว “ แอปเหล่านี้ทำงานร่วมกันอย่างหลวม ๆ ซึ่งหมายความว่าโค้ดจะไม่เชื่อมต่อกับส่วนประกอบโครงสร้างพื้นฐานใด ๆ เพื่อให้แอปสามารถปรับขนาดขึ้นและลงได้ตามความต้องการและยอมรับแนวคิดของโครงสร้างพื้นฐานที่ไม่เปลี่ยนรูป โดยทั่วไปแล้วสถาปัตยกรรมเหล่านี้สร้างขึ้นโดยใช้ไมโครเซอร์วิส แต่นั่นไม่ใช่ข้อกำหนดบังคับ”

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

โดยทั่วไปแล้วการพัฒนาแอปบนคลาวด์จะรวมถึงการพัฒนาวิธีการแบบว่องไวบริการไมโครแพลตฟอร์มระบบคลาวด์คอนเทนเนอร์เช่น Kubernetes และ Docker และการส่งมอบอย่างต่อเนื่องในระยะสั้นวิธีการปรับใช้แอปพลิเคชันใหม่และทันสมัย

ด้วยเหตุนี้คุณจึงต้องการมีโมเดล platform-as-a-service (PaaS) ไม่จำเป็นต้องใช้ PaaS แต่ทำให้สิ่งต่างๆง่ายขึ้นมาก ลูกค้าระบบคลาวด์ส่วนใหญ่เริ่มต้นด้วยโครงสร้างพื้นฐานเป็นบริการ (IaaS) ซึ่งช่วยแยกแอปออกจากฮาร์ดแวร์พื้นฐาน แต่ PaaS เพิ่มเลเยอร์พิเศษเพื่อแยกระบบปฏิบัติการพื้นฐานดังนั้นคุณจึงสามารถมุ่งเน้นไปที่ตรรกะทางธุรกิจของแอปของคุณได้ทั้งหมดและไม่ต้องกังวลกับการโทรจาก OS

วิดีโอที่เกี่ยวข้อง: แนวทางคลาวด์เนทีฟคืออะไร?

ในวิดีโอความยาว 60 วินาทีนี้เรียนรู้ว่าแนวทางของระบบคลาวด์เนทีฟกำลังเปลี่ยนแปลงวิธีการจัดโครงสร้างเทคโนโลยีขององค์กรจาก Craig McLuckie ผู้ก่อตั้งและซีอีโอของ Heptio และหนึ่งในผู้ประดิษฐ์ Kubernetes แบบโอเพนซอร์ส

ความแตกต่างระหว่างแอปพลิเคชันบนคลาวด์เนทีฟและแอปพลิเคชันในองค์กร

การพัฒนาแอปพลิเคชันบนระบบคลาวด์ต้องใช้สถาปัตยกรรมที่แตกต่างจากแอปพลิเคชันระดับองค์กรแบบดั้งเดิม

ภาษา

แอปในองค์กรที่เขียนขึ้นเพื่อทำงานบนเซิร์ฟเวอร์ของ บริษัท มักจะเขียนด้วยภาษาดั้งเดิมเช่น C / C ++, C # หรือภาษา Visual Studio อื่นหากใช้งานบนแพลตฟอร์ม Windows Server และ Java สำหรับองค์กร และถ้าอยู่บนเมนเฟรมก็น่าจะเป็นใน Cobol

แอปที่ใช้ระบบคลาวด์มีแนวโน้มที่จะเขียนด้วยภาษาที่เน้นเว็บเป็นศูนย์กลางซึ่งหมายถึง HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python และ Ruby

ความสามารถในการอัปเดต

แอปที่ใช้งานระบบคลาวด์เป็นปัจจุบันและอัปเดตอยู่เสมอ แอปที่ใช้งานระบบคลาวด์พร้อมใช้งานตลอดเวลา

แอปในองค์กรต้องการการอัปเดตและโดยปกติผู้จำหน่ายจะจัดส่งให้ตามการสมัครสมาชิกและต้องมีการหยุดทำงานในขณะที่ติดตั้งการอัปเดต

ความยืดหยุ่น

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

แอปในองค์กรไม่สามารถปรับขนาดแบบไดนามิกได้

หลายคน

แอปที่ใช้ระบบคลาวด์ไม่มีปัญหาในการทำงานในพื้นที่เสมือนจริงและการแบ่งปันทรัพยากรกับแอปอื่น ๆ

แอปในสถานที่จำนวนมากอาจทำงานได้ไม่ดีในสภาพแวดล้อมเสมือนจริงหรือไม่ทำงานเลยและต้องการพื้นที่ที่ไม่เสมือนจริง

ทรัพยากรที่เชื่อมต่อ

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

“ เครือข่ายและที่เก็บข้อมูลแตกต่างกันอย่างสิ้นเชิงในระบบคลาวด์ เมื่อคุณได้ยินคำว่า 're-platforming' ซึ่งโดยปกติแล้วจะเป็นงานที่รองรับการเปลี่ยนแปลงในระบบเครือข่ายพื้นที่เก็บข้อมูลและแม้แต่เทคโนโลยีฐานข้อมูลเพื่อให้แอปทำงานในระบบคลาวด์ได้ "Kavis จาก Deloitte กล่าว

ลงเวลา

มีความซ้ำซ้อนในระบบคลาวด์มากกว่าที่มีอยู่ในองค์กรดังนั้นหากผู้ให้บริการระบบคลาวด์ประสบปัญหาไฟดับภูมิภาคอื่นสามารถรับส่วนที่หย่อนได้

แอปในสถานที่อาจพร้อมใช้งาน Failover แต่มีโอกาสดีที่หากเซิร์ฟเวอร์หยุดทำงานแอปจะหยุดทำงานไปด้วย

ระบบอัตโนมัติ

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

ต้องมีการจัดการแอปภายในองค์กรด้วยตนเอง

การออกแบบโมดูลาร์

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

การไร้สัญชาติ

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

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

ความท้าทายของการประมวลผลแบบคลาวด์เนทีฟ

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

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

คุณต้องแจกจ่ายวิธีการของนักพัฒนาซอฟต์แวร์เก่าของคุณด้วย แบบจำลองน้ำตกจะไม่ทำอย่างแน่นอนและแม้แต่การพัฒนาที่คล่องตัวก็อาจไม่เพียงพอ ดังนั้นคุณต้องใช้แนวทางใหม่บนคลาวด์เนทีฟเช่นการพัฒนาผลิตภัณฑ์ที่ทำงานได้ขั้นต่ำ (MVP) การทดสอบหลายตัวแปรการทำซ้ำอย่างรวดเร็วและการทำงานอย่างใกล้ชิดในขอบเขตขององค์กรในรูปแบบการพัฒนา

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

เรียนรู้เพิ่มเติมเกี่ยวกับเทคโนโลยีคลาวด์เนทีฟที่เกี่ยวข้อง

  • Platform-as-a-service (PaaS) อธิบาย
  • อธิบายมัลติคลาวด์
  • อธิบายวิธีการแบบ Agile
  • แนวทางปฏิบัติที่ดีที่สุดในการพัฒนา Agile
  • Devops อธิบาย
  • พัฒนาแนวทางปฏิบัติที่ดีที่สุด
  • Microservices อธิบาย
  • การสอน Microservices
  • อธิบายคอนเทนเนอร์ Docker และ Linux
  • บทแนะนำ Kubernetes
  • CI / CD (การผสานรวมอย่างต่อเนื่องและการส่งมอบอย่างต่อเนื่อง)
  • แนวทางปฏิบัติที่ดีที่สุดของ CI / CD