“Ứng dụng gốc đám mây” là một thuật ngữ đã phát triển theo sự phát triển của nó. Là một phần của sự phát triển đó, Cloud Native Computing Foundation (CNCF) đã được Linux Foundation ra mắt vào năm 2015. Nó đóng vai trò là nền tảng trung lập với nhà cung cấp cho nhiều dự án xung quanh các ứng dụng gốc đám mây, bao gồm Kubernetes, Prometheus và Envoy.

Cloud-native là một kỹ thuật hiện đại hóa ứng dụng, thường được thúc đẩy bởi nhu cầu kinh doanh là hiện đại hóa các ứng dụng càng nhiều càng tốt để cải thiện đáng kể quy mô. Các ứng dụng cũ, tại chỗ, nguyên khối được chia thành các hệ thống con tự chủ được gọi là microservice. Các microservice này có thể được triển khai và mở rộng độc lập với các khu vực khác của ứng dụng. Điều này cho phép các thành phần phát triển độc lập khi cần và mở rộng quy mô hơn so với khả năng có thể trong thiết kế cũ.

Xem xét thuật ngữ này là cloud native , nó ngụ ý rằng các ứng dụng nằm trong đám mây công cộng, trái ngược với trung tâm dữ liệu tại chỗ. Điều này đúng, vì chúng có thể được thiết lập để chạy trong các trung tâm dữ liệu đám mây do Amazon, Microsoft hoặc Google sở hữu. Tuy nhiên, chúng cũng có thể chạy trong đám mây riêng trong môi trường của riêng bạn.

CNCF định nghĩa điện toán đám mây gốc là một ngăn xếp phần mềm nguồn mở được sử dụng cho các container. Mỗi phần của ứng dụng được đóng gói trong container riêng và được sắp xếp động. Chúng được lên lịch và quản lý tích cực để tối ưu hóa việc sử dụng tài nguyên. Chúng hướng đến các dịch vụ vi mô để tăng tính linh hoạt và khả năng bảo trì tổng thể.

Đám mây so với Tại chỗ

Ngược lại với các ứng dụng tại chỗ, các ứng dụng gốc trên đám mây được thiết kế riêng để chạy trong bản chất đàn hồi và phân tán của đám mây. Một trong những điểm khác biệt chính giữa tại chỗ và đám mây là việc sử dụng đám mây được đo lường. Bạn trả tiền cho mọi chu kỳ CPU, I/O đĩa và thậm chí là lưu lượng mạng.

Các ứng dụng tại chỗ không có những hạn chế như vậy. Đây là môi trường của bạn, vì vậy các ứng dụng chỉ bị giới hạn bởi tài nguyên phần cứng và các ứng dụng khác trên mạng của bạn.

Một điểm khác biệt chính nữa là các ứng dụng tại chỗ thường là monolithic, nghĩa là tất cả các chức năng đều nằm trong ứng dụng. Trong khi đó, các ứng dụng trên nền tảng đám mây được chia thành kiến ​​trúc microservices. Ở đây, các chức năng được tách biệt, do đó có thể sử dụng một chức năng cụ thể mà không cần phần còn lại.

Vì lý do này, các ứng dụng đám mây được mô tả là “liên kết lỏng lẻo”. Điều này có nghĩa là mã không được kết nối cứng với bất kỳ thành phần cơ sở hạ tầng nào, do đó ứng dụng có thể mở rộng quy mô theo nhu cầu. Các kiến ​​trúc này thường được xây dựng bằng cách sử dụng các dịch vụ vi mô, nhưng không bắt buộc.

Microservices là gì?

Red Hat định nghĩa microservices là một phương pháp tiếp cận kiến ​​trúc để xây dựng ứng dụng. Là một khuôn khổ kiến ​​trúc, microservices được phân phối và kết hợp lỏng lẻo, do đó, những thay đổi của một nhóm sẽ không làm hỏng toàn bộ ứng dụng. Lợi ích khi sử dụng microservices là các nhóm phát triển có thể nhanh chóng xây dựng các thành phần mới của ứng dụng để đáp ứng nhu cầu kinh doanh thay đổi.

Kiến trúc vi dịch vụ cho phép cung cấp các ứng dụng lớn, phức tạp một cách nhanh chóng, thường xuyên và đáng tin cậy khi cần.

Ví dụ, khi Microsoft phát hành bản sửa lỗi hàng tháng, liệu họ có gửi xuống một bản cài đặt Windows hoàn toàn mới không? Không, điều đó sẽ hoàn toàn không hiệu quả khi chỉ một phần nhỏ của toàn bộ hệ điều hành được cập nhật. Thay vào đó, công ty sẽ đẩy ra một vài megabyte mã được cập nhật để thay thế mã hiện có.

Với ứng dụng tại chỗ đơn khối, cập nhật có nghĩa là bạn phải cập nhật toàn bộ ứng dụng. Với dịch vụ vi mô, bạn chỉ cần đẩy mã đã cập nhật.

Các ứng dụng gốc trên nền tảng đám mây chạy trong cái được gọi là container. Container tương tự như máy ảo, nhưng mỏng hơn. Máy ảo có hệ điều hành đầy đủ và gigabyte được phân bổ cho nó, trong khi container chỉ có một phần nhỏ của hệ điều hành và megabyte được phân bổ.

Container ảo hóa hiệu quả hệ điều hành máy chủ (hoặc kernel) và cô lập các phụ thuộc của ứng dụng khỏi các container khác đang chạy trên cùng một máy. Vì vậy, nếu một container bị sập, nó sẽ không làm sập toàn bộ ứng dụng.

Trình quản lý container phổ biến nhất là Docker, tuy nhiên, có rất nhiều đối thủ cạnh tranh .

Kubernetes là một thành phần quan trọng khác của cloud native. Được phát triển bởi Google, Kubernetes là một nền tảng quản lý container nguồn mở hợp nhất một cụm máy thành một nhóm tài nguyên tính toán duy nhất. Kubernetes sắp xếp các ứng dụng thành các nhóm container bằng cách sử dụng công cụ Docker và giữ cho ứng dụng của bạn chạy như mong muốn.

Sự khác biệt chính giữa ứng dụng đám mây gốc và ứng dụng tại chỗ

Cloud-native yêu cầu kiến ​​trúc rất khác so với các ứng dụng doanh nghiệp tại chỗ truyền thống. Sau đây là những điểm khác biệt chính:

  1. Ngôn ngữ : Các ứng dụng tại chỗ có xu hướng được viết bằng các ngôn ngữ truyền thống như C/C++ và Java doanh nghiệp. Nếu trên máy chủ lớn, có khả năng là COBOL. Các ứng dụng gốc trên nền tảng đám mây có nhiều khả năng được viết bằng ngôn ngữ tập trung vào Web như Java, JavaScript, .Net, Node.js, PHP, Python và Ruby.
  2. Có thể cập nhật : Các ứng dụng gốc trên nền tảng đám mây được cập nhật thường xuyên và đều đặn hơn nhiều thông qua quy trình DevOps được gọi là Lặp lại liên tục và Phân phối liên tục (CI/CD). Các ứng dụng tại chỗ cũng cần thời gian ngừng hoạt động khi cài đặt các bản cập nhật, trong khi các ứng dụng gốc trên nền tảng đám mây luôn khả dụng.
  3. Khả năng phục hồi : Vì kiến ​​trúc microservices chia ứng dụng thành các chức năng cốt lõi, mỗi chức năng được gọi là một dịch vụ có thể được xây dựng và triển khai độc lập. Điều này có nghĩa là các dịch vụ riêng lẻ có thể hoạt động mà không ảnh hưởng tiêu cực đến các dịch vụ khác. Nếu một chức năng bị sập, nó không làm sập toàn bộ hệ thống như một ứng dụng tại chỗ.
  4. Tính đàn hồi : Các ứng dụng gốc trên nền tảng đám mây tận dụng tính đàn hồi của đám mây bằng cách tăng tài nguyên một cách linh hoạt khi có sự gia tăng đột biến về mức sử dụng. Nếu ứng dụng trên nền tảng đám mây của bạn gặp phải sự gia tăng đột biến về mức sử dụng, các tài nguyên tính toán bổ sung sẽ tự động được cung cấp cho đến khi sự gia tăng đột biến lắng xuống và các tài nguyên bổ sung đó sau đó sẽ được giải phóng. Một ứng dụng tại chỗ không thể làm được điều đó.
  5. Đa thuê bao : Ứng dụng gốc đám mây không gặp vấn đề gì khi hoạt động trong không gian ảo hóa và chia sẻ tài nguyên với các ứng dụng khác. Đó là mục đích chúng được thiết kế. Hầu hết các ứng dụng tại chỗ không hoạt động tốt trong môi trường ảo hoặc không hoạt động, do đó cần tất cả tài nguyên của máy chủ.
  6. Tài nguyên được kết nối : Ứng dụng tại chỗ thường có các kết nối được mã hóa cứng với các tài nguyên, chẳng hạn như mạng, bảo mật và lưu trữ. Điều đó có nghĩa là mọi thứ có thể bị hỏng nếu bất kỳ thứ gì bị di chuyển hoặc thay đổi. Ứng dụng gốc trên nền tảng đám mây có thể tự động tìm các tài nguyên đó mà không cần sự can thiệp của con người.
  7. Tự động : Không giống như các ứng dụng tại chỗ, phần lớn đám mây được tự động hóa và bao gồm cả quản lý ứng dụng. Các công cụ quản lý vùng chứa như Docker và Kubernetes tự động hóa mọi thứ, bao gồm tăng/giảm quy mô, tự phục vụ, khôi phục các ứng dụng có vấn đề và kiểm tra hiệu suất của ứng dụng. Với ứng dụng tại chỗ, điều này thường được thực hiện thủ công.

Những thách thức

Vì cloud-native và on-premises rất khác nhau, nên sai lầm lớn nhất là làm cái gọi là “nâng và chuyển”. Đây là nơi các ứng dụng on-premises cũ chỉ đơn giản được chuyển sang AWS hoặc Azure mà không thay đổi. Điều này hoàn toàn không tận dụng được mọi thứ mà cloud cung cấp, chẳng hạn như khả năng mở rộng và dễ dàng cập nhật.

Quyết định thực sự là có nên di chuyển một ứng dụng tại chỗ cũ lên đám mây hay chỉ cần viết lại từ đầu. Ở đây, nguyên tắc chung là bạn phải viết lại càng nhiều thì việc viết lại từ đầu càng trở nên hấp dẫn.

Nguồn: https://www.linode.com/docs/guides/what-are-cloud-native-applications/