Góc phân tích: Tìm hiểu ý nghĩa của ứng dụng và phát triển cloud-native

Linh Le

Thuật ngữ ‘cloud-native’ thường gây ra nhầm lẫn khi nói đến sự phát triển ứng dụng hiện đại do định nghĩa không rõ ràng của nó. Ví dụ, việc sử dụng thuật ngữ này ở thời điểm hiện tại thường tương đương với các ứng dụng được tối ưu hóa cho cơ sở hạ tầng điện toán đám mây. Một cách dùng khác là xem thuật ngữ tương đương với các ứng dụng trên đám mây được trình duyệt web truy cập. Cả hai định nghĩa về ứng dụng cloud-native này đều không chính xác. Do đó, bài viết này sẽ mô tả chi tiết về các ứng dụng cloud-native và định nghĩa, theo Cloud Computing Foundation (một tổ chức phi lợi nhuận hỗ trợ các dự án nguồn mở trong và xung quanh hệ sinh thái Kubernetes), các ứng dụng trên nền tảng đám mây là ví dụ về kiến trúc microservices, quản lý & điều phối động (dynamic orchestration) và dựa theo container:

Container
Điều đầu tiên cần nhớ về các ứng dụng cloud-native đó là các ứng dụng này là các ứng dụng native container đầu tiên và tốt nhất, có nghĩa là chúng được cấu thành từ các container. Container là các gói phần mềm chứa tất cả những gì mà một ứng dụng cần chạy. Ví dụ, các container đóng gói mã, thời gian chạy, các toolchain, các thư viện và các thiết lập. Bằng cách đóng gói lại tất cả mọi thứ mà một ứng dụng cần chạy, các container cho phép developer tập trung vào thiết kế ứng dụng và logic và giao quyền triển khai và quản lý hoạt động của các container cho các người điều hành IT.

Các container trừu tượng hóa ứng dụng từ môi trường mà chúng được triển khai, từ đó cho phép viết ứng dụng duy nhất một lần sau đó triển khai ở tất cả mọi nơi khác. Chúng cũng cung cấp môi trường ứng dụng nhất quán để cải thiện sự hợp tác giữa các developer và người điều hành bằng cách đảm bảo rằng cùng một môi trường ứng dụng được sử dụng cho việc phát triển một ứng dụng sau đó được sử dụng trong vòng đời phát triển ứng dụng để triển khai. Riêng biệt với sự trừu tượng của các ứng dụng phụ thuộc và phân phối các môi trường ứng dụng nhất quán, các container cung cấp một loạt lợi ích liên quan đến hiệu suất ứng dụng, tính di động, phân biệt lỗi và bảo mật.

Microservices
Kiến trúc Microservices cấu trúc một ứng dụng như một bộ các dịch vụ thực hiện các năng lực kinh doanh (Business Capabilities). Các dịch vụ này có thể được triển khai độc lập trong một kiến trúc mô-đun mang lại cách tiếp cận phân cấp (decentralized approach) cho sự phát triển của phần mềm. Một ví dụ về cách tiếp cận phân cấp này là không chỉ mở rộng cho phân khúc ứng dụng và logic kinh doanh trong các microservice cụ thể, mà còn mở rộng cho các cơ sở dữ liệu. Nói cách khác, mỗi microservice độc lập trong một ứng dụng có xu hướng quản lý một cơ sở dữ liệu riêng biệt, ngay cả khi cơ sở dữ liệu đó là bản sao của cơ sở dữ liệu khác gắn với một microservice khác.

Container orchestration (Quản lý & điều phối  các container)
Container orchestration có nhiệm vụ tự động hóa việc triển khai, nhân rộng, mở rộng quy mô, cân bằng tải (load balancing) và tự sửa chữa các container-based app. Ngoài ra, container orchestration còn chịu trách nhiệm tự động hóa việc triển khai nâng cấp và khôi phục các phiên bản trước như mong muốn. Trong khi các nền tảng điện toán đám mây quản lý và điều phối công nghệ bằng cách tự động hóa việc cung cấp và mở rộng cơ sở hạ tầng thì, ví dụ, container orchestration tự động phân bổ tài nguyên cho các container-based app theo cách tương tự.

Kết luận
Sự kết hợp giữa các container, microservices và các framework quản lý & điều phối  các container cho phép các developer xây dựng các ứng dụng đặc trưng bởi khả năng mở rộng, khả năng thu hồi và cấp phát, khả năng phục hồi, sử dụng tài nguyên hiệu quả và tính di động. Nếu được kiến trúc đúng cách, các container orchestration có thể nâng cao độ sẵn sàng cho các ứng dụng như Kubernetes.

Trong khi đó, từ góc độ phát triển, các ứng dụng trên nền tảng đám mây cải thiện trải nghiệm phát triển bằng cách cho phép mức độ phát triển linh hoạt ngoài việc tăng cường sự hợp tác giữa các nhóm phát triển và nhóm điều hành. Hơn nữa, các ứng dụng trên nền tảng đám mây tự động hóa nhiều quy trình thủ công cần thiết để quản lý cơ sở hạ tầng cơ sở để chạy ứng dụng và tương ứng trao quyền cho các developer tập trung vào viết code, trái ngược với việc giải quyết thách thức về mặt hoạt động của quản lý cơ sở hạ tầng.

Tầm quan trọng của các ứng dụng cloud-native và sự phát triển tính linh hoạt và tự động hóa mang lại sự tương đồng đáng chú ý với tính linh hoạt và tự động hóa được cung cấp bởi các thực tiễn điện toán đám mây để quản lý cơ sở hạ tầng, mặc dù các thuộc tính của ứng dụng và phát triển đám mây không nhất thiết phải khớp với điện toán đám mây theo kiểu one-to-one, one-to-many, many-to-one hay many-to-many. Như vậy, các cloud native application và sự phát triển của nó đem lại một sự cách tân đáng kể cho các mô hình về thiết kếứng dụng, sự phát triển và phân phối trước đây, trong đó  có mượn các khái niệm thường được sử dụng trong các cuộc hội thoại về điện toán đám mây, mà không cần sao chép chúng hoặc thậm chí sử dụng chúng như một cơ sở hạ tầng cơ sở.

Chia sẻ bài viết ngay

Nguồn bài viết : https://sdtimes.com