Container và kubernetes trong chuyển đổi số doanh nghiệp

ThS. PHẠM NGỌC DUY - NGUYỄN TRUNG QUÂN (Giảng viên Khoa Công nghệ thông tin, Trường Đại học Hàng hải Việt Nam)

TÓM TẮT:

Đại dịch COVID-19 khiến các tổ chức phải đổi mới và hiện đại hóa, bằng cách đẩy mạnh việc áp dụng các công nghệ số tân tiến. Các ứng dụng cloud-native, kiến trúc microservice, nền tảng container hóa và trình điều phối container như Kubernetes, cũng như các phương pháp tiếp cận dựa trên đám mây là những yếu tố không thể thiếu giúp doanh nghiệp thực hiện chuyển đổi số thành công. Bài viết nghiên cứu về sự mau lẹ, tính di động và khả năng mở rộng quy mô trong việc phát triển và vận hành các ứng dụng cloud-native, cũng như di trú và hiện đại hóa các ứng dụng kế thừa hiện có của doanh nghiệp.

Từ khóa: container hóa, kubernetes, microservice, cloud-native, chuyển đổi số.

1. Chuyển đổi số và ứng dụng công nghệ mới

Đại dịch COVID-19 đã và đang làm gián đoạn cuộc sống của mỗi cá nhân cho đến hoạt động kinh tế, xã hội toàn thế giới. COVID-19 đã trở thành một cú sốc kinh tế, ảnh hưởng đến hầu khắp các doanh nghiệp bất kể quy mô và công nghệ. Do vậy, để có thể cạnh tranh và tồn tại trên thị trường, các doanh nghiệp cần ứng dụng, tích hợp nhiều công nghệ khác nhau để giảm tác động của COVID-19. Có thể dự đoán rằng, tốc độ đổi mới công nghệ sẽ ngày càng nhanh sau đại dịch. Ngoài ra, còn có những lý do để các doanh nghiệp tiến tới quá trình chuyển đổi số, như đạt được sự hài lòng của khách hàng theo cách sáng tạo, cải thiện chất lượng dịch vụ và hoạt động, giảm các chi phí, thích ứng với các công nghệ mới và làm việc từ xa hiệu quả hơn.

Digital Transformation (viết tắt là DT hay DX) - Chuyển đổi kỹ thuật số, hoặc chuyển đổi số là một trong những ưu tiên hàng đầu của các CIO và CEO ngày nay. Theo khảo sát của Gartner,  năm 2018, 62% CEO có sáng kiến quản lý hoặc chương trình đổi mới để làm cho hoạt động kinh doanh của họ trở nên “kỹ thuật số” hơn. Các sáng kiến chuyển đổi số đang lan rộng tại các doanh nghiệp trên khắp thế giới với lý do chính đáng. Các xu hướng công nghiệp cho thấy các tổ chức đầu tư vào chuyển đổi số đang đổi mới nhanh hơn so với các tổ chức khác, và chuyển đổi số sẽ tạo đột phá ở mọi ngành trong vòng hai năm tới. Tốc độ đổi mới công nghệ đang ngày càng tăng lên và mở rộng, đáp lại, chuyển đổi số trở thành một mục tiêu được thiết lập đối với rất nhiều doanh nghiệp, và việc áp dụng các sáng kiến kỹ thuật số dần phổ biến.

Theo nghiên cứu của IDC [3], “Mặc dù chúng ta đang trải qua đại dịch toàn cầu, đầu tư vào chuyển đổi kỹ thuật số trực tiếp (DX) vẫn đang tăng, với tốc độ tăng trưởng kép hàng năm (CAGR) là 15,5% từ năm 2020 đến năm 2023, và dự kiến sẽ đạt 6,8 nghìn tỷ USD, khi các công ty xây dựng dựa trên các chiến lược và đầu tư hiện có, trở thành doanh nghiệp tương lai ở quy mô kỹ thuật số. Các tổ chức với cốt lõi là mô hình kinh doanh số mới đang thực hiện thành công các chiến lược toàn doanh nghiệp trên nền tảng số, sẽ có vị trí tốt để tiếp tục thành công trong kinh tế nền tảng số”.

Ngày nay, các ngành công nghiệp đang thay đổi đột phá (disrupt) bởi những cải tiến phần mềm. Có một sự chuyển dịch mô hình khi các công ty kỹ thuật số mới ra đời và các doanh nghiệp đã hoạt động lâu năm đều đang chuyển đổi thành công ty công nghệ. Các doanh nghiệp mà công nghệ là cốt lõi đang tác động đến hầu hết mọi ngành nghề, như khách sạn với Airbnb, vận tải với Uber, bán lẻ với Amazon, dịch vụ DTH, dịch vụ giải trí trên Internet với Netflix, âm nhạc phát trực tuyến với Apple Music hay Spotify, và ô tô với Tesla.

Quá trình chuyển đổi số có thể khác nhau ở mỗi ngành nghề và công ty, dựa trên quy trình và mô hình kinh doanh. Tuy nhiên, một điều không thay đổi là: mục tiêu chính nhằm cách mạng hóa giá trị mang lại cho khách hàng bằng cách thu thập dữ liệu khách hàng và phân tích dữ liệu đó để phục vụ họ tốt hơn và nhanh hơn, từ đó cải thiện tăng trưởng kinh doanh. Lý do để các doanh nghiệp tiến hành chuyển đổi số khá rõ ràng: (a) Tạo các ứng dụng mới thu hút khách hàng theo những cách thức sáng tạo và hấp dẫn. (b) Cải thiện hoạt động để cung cấp một cách hiệu quả hơn các sản phẩm và dịch vụ tốt hơn với chi phí thấp hơn cho doanh nghiệp. (c) Tạo ra các dòng doanh thu mới bằng cách nhanh chóng thích ứng với những thay đổi của điều kiện thị trường và sở thích của người tiêu dùng.

Để bắt kịp với tốc độ thay đổi, theo Docker [6], mọi công ty đều phải trở thành công ty phần mềm. Đây là thực tế, khi ngày nay, phần mềm đã trở thành nền tảng để đạt được các mục tiêu kinh doanh cốt lõi cũng như lợi thế cạnh tranh - đó là thứ cho phép cung cấp và mở rộng quy mô đổi mới trong toàn doanh nghiệp. Gartner Research [6] cho biết: “Tương lai sẽ thuộc về các công ty có thể tạo ra các giải pháp phần mềm hiệu quả, thông minh và tự chủ nhất”. Để trở nên hiệu quả trong thời kỳ này, các ứng dụng yêu cầu một kiến trúc thúc đẩy sự phát triển và triển khai linh hoạt, nhanh chóng, đáp ứng nhanh trong khi vẫn duy trì tính bảo mật, hiệu suất và hiệu quả chi phí của các mẫu đã thiết lập. Container cung cấp cơ sở cho một kiến trúc ứng dụng mới hỗ trợ chuyển đổi số và đặt nền tảng cho sự đổi mới.

Báo cáo “CIO toàn cầu 2020” của Dynatrace [7] dựa trên cuộc khảo sát toàn cầu với 700 CIO tại các doanh nghiệp lớn với hơn 1.000 nhân viên, do Vanson Bourne thực hiện. 89% trong số các CIO cho biết quá trình chuyển đổi số của họ đã tăng tốc trong 12 tháng qua, 58% khẳng định sẽ việc chuyển đổi số sẽ tiếp tục được tăng tốc. Các CIO cũng cho biết nhóm của mình phải chịu nhiều áp lực hơn từ: tăng nhu cầu về các dịch vụ CNTT (64%), cần tăng tốc chuyển đổi số (56%) và CNTT trở thành một mục tiêu kinh doanh (56%). Thống kê cũng cho thấy, 86% các tổ chức đang sử dụng nền tảng và công nghệ cloud-native như Kubernetes, microservices và container. Microservice (70%), container (70%), Kubernetes (54%), PaaS (71%), SaaS (92%), IaaS (87%), đám mây lai (81%) và đa đám mây (78%).

2. Các công nghệ Cloud-native

2.1. Ứng dụng Cloud-native, kiến trúc microservice

Dưới góc độ kỹ thuật, chìa khóa của sự chuyển đổi nằm ở các giải pháp cloud-native, tận dụng kiến trúc hiện đại, phát triển các ứng dụng được container hóa dựa trên microservice, khả năng xây dựng và cung cấp chúng nhanh chóng, đáng tin cậy và có khả năng tái lập, thông qua tích hợp/phân phối liên tục (CI/CD) và DevOps. Các doanh nghiệp đang mong muốn chuyển đổi quy trình kinh doanh của họ, nhưng phải đối mặt với những thách thức cùng một loạt các ứng dụng bao gồm cả các công nghệ kế thừa lẫn tân tiến. Nhiều ứng dụng hiện tại vẫn quan trọng đối với doanh nghiệp nhưng lại cứng nhắc và không linh hoạt để hiện đại hóa, và theo thời gian, chúng vừa hoạt động kém hiệu quả lại tốn kém để duy trì. Giải pháp để giúp các ứng dụng này bảo trì dễ dàng hơn là chuyển chúng lên đám mây công cộng bằng cách sử dụng các dịch vụ do Azure, AWS, Google, IBM, v.v cung cấp và từng bước hiện đại hóa chúng, không cần thiết kế lại toàn bộ ứng dụng. Quá trình chuyển đổi gồm các bước: (1) Container hóa ứng dụng trong một container duy nhất hoặc chia nó thành nhiều container được cân đối theo các cấp ứng dụng và triển khai nó thành cluster Kubernetes trên nền tảng đám mây; (2) Thiết lập quy trình phân phối và tích hợp liên tục CI/CD; (3) Phân chia các chức năng của ứng dụng dựa trên kiến trúc microservice và triển khai từng dịch vụ như một container riêng lẻ; (4) Phát triển các dịch vụ mới trong mô hình không máy chủ (serverless).

Ứng dụng cloud-native là những phần mềm được thiết kế để tận dụng chức năng đám mây ngay từ đầu. Chúng bao gồm các microservice - một mô hình kiến trúc - trong đó, mỗi ứng dụng là một tập hợp các dịch vụ nhỏ, có thể hoạt động độc lập với các dịch vụ khác trong ứng dụng. Các dịch vụ này được đóng gói trong các container. Các container, đóng gói các ứng dụng với các gói phụ thuộc của chúng để chạy được ở hầu hết mọi trường hợp. Container là một giải pháp để xây dựng, thử nghiệm, triển khai các ứng dụng độc lập với cơ sở hạ tầng; nền tảng cơ sở hạ tầng có thể là máy tính xách tay của nhà phát triển, trung tâm dữ liệu tại chỗ (on-premise), hoặc đám mây (on-cloud). Bằng cách áp dụng các ứng dụng cloud-native, doanh nghiệp có thể không chỉ đạt được tốc độ và sự mau lẹ trong việc phân phối ứng dụng, mà còn tăng tính linh hoạt trong phát triển ứng dụng, giảm độ phức tạp của hệ thống CNTT, trao quyền cho các nhóm phát triển để thực hiện công việc tốt hơn và sáng tạo hơn. Container cung cấp môi trường cô lập cho các microservice. Chúng có khả năng truy cập cao, có thể mở rộng, dễ dàng di chuyển từ môi trường này sang môi trường khác, tạo hoặc chia nhỏ một cách nhanh chóng. Những phẩm chất này khiến container trở nên lý tưởng để xây dựng và chạy các ứng dụng dựa trên microservice. Trong khi đó, CI/CD là một cách tiếp cận để nhanh chóng xây dựng, kiểm tra và cung cấp phần mềm ở chế độ liên tục. Các nhà phát triển phần mềm và nhóm vận hành CNTT (DevOps) cộng tác theo mô hình này để xây dựng, kiểm tra và phát hành các bản cập nhật phần mềm ngay khi chúng sẵn sàng mà không ảnh hưởng đến khách hàng hoặc nhà phát triển của các nhóm khác.

Cloud Native Computing Foundation, một dự án của The Linux Foundation [8], định nghĩa các ứng dụng cloud-native gồm 3 đặc điểm sau: (A) Được container hóa - Mỗi phần (ứng dụng, quy trình, v.v.) đóng gói trong container riêng. Điều này tạo điều kiện thuận lợi cho khả năng tái sản xuất, tính minh bạch và cô lập tài nguyên. (B) Được được điều phối động - Các container được lập lịch và quản lý chủ động để tối ưu hóa việc sử dụng tài nguyên. (C) Hướng đến microservice - Các ứng dụng được phân đoạn thành các microservice. Việc phân đoạn này làm tăng đáng kể tính linh hoạt và khả năng bảo trì tổng thể của các ứng dụng.

Cùng với các container, microservice đang ngày càng trở thành hình mẫu kiến trúc được lựa chọn để phát triển một ứng dụng mới. Kiến trúc này chia nhỏ các chức năng của một ứng dụng thành một tập hợp các tiến trình nhỏ, rời rạc, phi tập trung, hướng mục tiêu, mỗi tiến trình có thể được phát triển, thử nghiệm, triển khai, thay thế và mở rộng một cách độc lập. Một số lợi ích khi áp dụng kiến trúc microservice: (1) Tăng tính mô-đun; (2) Giúp ứng dụng dễ phát triển và thử nghiệm hơn; (3) Phát triển song song: Một nhóm có thể phát triển và triển khai một dịch vụ độc lập với các nhóm khác làm việc trên các dịch vụ khác; (4) Hỗ trợ tái cấu trúc mã lệnh liên tục để nâng cao lợi ích của microservice theo thời gian; (5) Thúc đẩy mô hình tích hợp liên tục và triển khai liên tục; (6) Cải thiện khả năng mở rộng; (7) Đơn giản hóa việc nâng cấp các thành phần ứng dụng.

2.2. Công nghệ công nghệ container hóa

Containerization - container hóa là một phương pháp ảo hóa mức hệ điều hành để triển khai và chạy các ứng dụng phân tán mà không cần khởi chạy toàn bộ máy ảo (VM - virtual machine) cho mỗi ứng dụng. Nó cho phép nhiều ứng dụng hoặc dịch vụ riêng biệt chạy trên một host duy nhất và truy cập vào nhân hệ điều hành của host đó. Container bao gồm toàn bộ môi trường runtime của một ứng dụng/dịch vụ, cộng với tất cả các gói phụ thuộc (dependency), các thư viện (lib) và các tệp binary (bin) khác của nó, cùng với các tệp cấu hình cần thiết để chạy nó, tất cả chúng được đóng thành một gói.

Có nhiều công nghệ nền tảng container, Docker hiện là một trong những công nghệ phổ biến nhất. Docker là một nền tảng phát triển mã nguồn mở giúp đóng gói các ứng dụng vào các container. Có nhiều use case cho container như ứng dụng cloud-native, ứng dụng stateless, di trú đám mây và hiện đại hóa các ứng dụng kế thừa. Một số lợi ích của Docker như: (1) Tối ưu hóa tài nguyên - Ứng dụng dựa trên container yêu cầu ít tài nguyên hệ thống hơn các phương pháp truyền thống và so với công nghệ ảo hóa. (2) Các gói phụ thuộc và tính di động - Ứng dụng dựa trên container chứa các gói phụ thuộc của nó; nó dễ dàng triển khai nhiều nền tảng và không bị khóa cứng với nhà cung cấp. (3) Hiệu quả hoạt động và tính nhất quán khi triển khai; nhóm DevOps biết được cách ứng dụng chạy trên nền tảng sản xuất, cũng như thực hiện các tác vụ trong một triển khai từng phần mà không có thời gian chết. Các container hỗ trợ phương pháp Agile để nâng cao vòng đời triển khai.

Trung tâm của việc cấp phát các container ứng dụng, quản lý nhiều container như một thực thể duy nhất, quản lý tính khả dụng, mở rộng và kết nối mạng của các container, tất cả nằm trong Container orchestrator - trình điều phối container. Có rất nhiều công nghệ điều phối container, và Kubernetes hiện được coi là tiêu chuẩn trong thực tế. Kubernetes là một nền tảng mã nguồn mở di động, có thể mở rộng để quản lý tải công việc và dịch vụ được chứa trong container, tạo điều kiện thuận lợi cho cả cấu hình khai báo và tự động hóa. Về cơ bản, Kubernetes quản lý và điều phối hoạt động của nhiều container cùng nhau. Nó có một hệ sinh thái lớn, phát triển nhanh chóng. Một số tính năng của Kubernetes như: (1) Khám phá dịch vụ và cân bằng tải; (2) Tự động phát hành (rollout) và quay lui (rollback); (3) Điều phối lưu trữ; (4) Đóng gói tự động; (5) Tự phục hồi; (6) Quản lý cấu hình và thông tin bí mật.

Mỗi nhà cung cấp dịch vụ đám mây hàng đầu như AWS (EKS- Amazon Kubernetes Cluster), Azure (AKS-Azure Kubernetes Cluster), GCP (GKS- Google Kubernetes Cluster), IBM hay RedHat đều cung cấp, hỗ trợ nền tảng container Docker cũng như điều phối container Kubernetes.

3. Vai trò của Container và Kubernetes trong chuyển đổi số

3.1. Sự kết hợp giữa nền tảng và điều phối container

Docker giúp tạo các container và Kubernetes cho phép quản lý chúng trong runtime. Sử dụng Docker để đóng gói và vận chuyển ứng dụng, sử dụng Kubernetes để triển khai và mở rộng ứng dụng. Các công ty khởi nghiệp hoặc công ty nhỏ có ít container, nên họ có thể quản lý chúng mà không cần phải sử dụng Kubernetes. Nhưng khi các công ty phát triển, nhu cầu cơ sở hạ tầng của họ sẽ tăng lên, do đó số lượng container cũng tăng lên, dẫn đến khó quản lý. Đây là lúc Kubernetes phát huy tác dụng của mình. Khi được sử dụng cùng nhau, Docker và Kubernetes đóng vai trò là công cụ kích hoạt và hỗ trợ chuyển đổi số cho kiến trúc đám mây hiện đại. Việc ứng dụng đồng thời cả hai đã trở thành một tiêu chuẩn mới trong ngành để triển khai và phát hành ứng dụng nhanh hơn. 

Hình 1: Quy trình CI/CD với Docker và Kubernetes

quy_trinh_ci-cd_voi_docker_va_kubernetes

Một kịch bản đơn giản về thiết lập CI/CD bằng Docker và Kubernetes, được mô tả trong Hình 1, đề xuất bởi [9], bao gồm các bước như sau: (1) Mã (code) của nhà phát triển được đẩy lên Git. (2) Việc xây dựng và thử nghiệm được thực hiện ở Maven trong Jenkins với ngôn ngữ C. (3) Ansible được dùng làm công cụ triển khai, có thể viết Ansible playbook để triển khai trên AWS. (4) JFrog Artifactory được sử dụng như repository sau quá trình xây dựng từ Jenkins, các artifact sẽ được lưu trữ trong Artifactory. (5) Ansible có thể giao tiếp với Artifactory, lấy artifact và triển khai chúng trên phiên bản Amazon EC2. (6) SonarQube có thể giúp đánh giá mã và phân tích mã tĩnh. (7) Sau đó, sử dụng Docker như một công cụ container hóa. Cũng giống như cách thực hiện trên Amazon EC2, triển khai ứng dụng trên container Docker bằng cách tạo Dockerfile và Docker image. (8) Khi quá trình thiết lập hoàn tất, sử dụng Kubernetes để tạo một cluster Kubernetes, bằng cách sử dụng image Docker, có thể tiến hành triển khai. (9) Cuối cùng, sử dụng Nagios để giám sát cơ sở hạ tầng.

3.2. Đặc điểm của Kubernetes

Mô hình kiến trúc của Kubernetes được thể hiện trong sơ đồ Hình 2.

Hình 2: Kiến trúc Kubernetes

kien_truc_kubernetes

Như đã trình bày, Kubernetes quản lý các container, container đóng gói các ứng dụng và các phần phụ thuộc của chúng thành một image có thể phân phối và hoạt động hầu như trên mọi môi trường, hợp lý hóa việc phát triển và triển khai phần mềm. Bằng cách áp dụng các container, các tổ chức có thể thực hiện một bước quan trọng trong việc chuyển đổi thành các doanh nghiệp kỹ thuật số nhanh chóng, tập trung vào việc đẩy nhanh việc cung cấp các sản phẩm, dịch vụ sáng tạo và trải nghiệm khách hàng. Nhưng bản thân các container khiến nảy sinh các vấn đề về quản lý công nghệ, đặc biệt là khi các ứng dụng trong container cần được triển khai và quản lý trên quy mô lớn, và đó là lúc Kubernetes phát huy tác dụng. Kubernetes điều phối các ứng dụng trong container để quản lý và tự động hóa việc sử dụng tài nguyên, xử lý lỗi, tính khả dụng, cấu hình, khả năng mở rộng và trạng thái mong muốn.

Kubernetes điều phối các ứng dụng được container hóa, có tính phân tán để: (1) Tối ưu hóa việc sử dụng tài nguyên máy tính; (2) Cung cấp các chính sách cho việc lập lịch trình; (3) Duy trì trạng thái mong muốn; (4) Xử lý các lỗi và hỏng hóc bằng tự động hóa; (5) Cung cấp tính sẵn sàng cao; (6) Giám sát công việc trong thời gian thực; (7) Quản lý cấu hình của ứng dụng; (8) Tự động mở rộng quy mô để đáp ứng những thay đổi của nhu cầu.

Ưu điểm khi ứng dụng Kubernetes gồm: (1) Hợp nhất các máy chủ và giảm chi phí thông qua việc sử dụng tài nguyên hiệu quả (tương tự như ảo hóa). (2) Xử lý sự cố máy một cách nhẹ nhàng thông qua khả năng tự phục hồi và tính sẵn sàng cao. (3) Dễ dàng và đẩy nhanh việc triển khai, ghi nhật ký và giám sát ứng dụng. (4) Tự động hóa khả năng mở rộng cho các container và các ứng dụng được container hóa. (5) Tách các ứng dụng khỏi hạ tầng để có tính di động và linh hoạt. (6) Dễ dàng sửa đổi, cập nhật, mở rộng hoặc triển khai lại các ứng dụng mà không ảnh hưởng đến các công việc, ứng dụng khác.

3.3. Vai trò của container và Kubernetes

Hình 3: Kubernetes thúc đẩy kinh doanh

kubernetes_thuc_day_kinh_doanh

Có 5 năng lực kinh doanh căn bản (được thể hiện trong Hình 3) mà Kubernetes có thể thúc đẩy trong doanh nghiệp dù với quy mô lớn hay nhỏ [10] đó là: (1) Cung cấp nền tảng cho một chương trình đám mây cấp độ toàn doanh nghiệp; (2) Trợ giúp trong việc di trú ứng dụng và hoạt động kinh doanh cũ sang một đám mây container hiện đại; (3) Cho phép các ứng dụng Greenfield chuyển sang nền tảng cloud-native ngay từ đầu; (4) Hiện thực hóa tầm nhìn về một đám mây lai có khả năng tương tác thực sự, thúc đẩy mạnh mẽ sáng kiến chuyển đổi số; (6) Cho phép chuyển đổi số tổ chức.

Theo [3], container và Kubernetes đã ảnh hưởng đến chuyển đổi số theo cách có thể dự đoán được: (1) Rút ngắn thời gian đưa phần mềm ra thị trường: Một trong những lợi ích chính của Kubernetes và container là khả năng tăng tốc các giai đoạn phát triển, xây dựng, thử nghiệm và triển khai. Kubernetes cung cấp một số tính năng và các bản mẫu được tạo sẵn bằng những công nghệ mã nguồn mở kết hợp; (2) Cải thiện tính mau lẹ và năng suất của nhà phát triển: Container cho phép các nhà phát triển chạy các ứng dụng một cách nhất quán trên các môi trường. Tính năng này cho phép các nhà phát triển làm việc từ xa, giảm sự phụ thuộc vào công ty; (3) Phản ứng nhanh hơn với sự thay đổi: Các ứng dụng dựa trên container sử dụng kiến trúc microservice bao gồm một tập hợp các dịch vụ nhỏ, tự trị. Mỗi dịch vụ tự đóng kín và (chỉ nên) triển khai một năng lực kinh doanh duy nhất. Kiến trúc này tăng tốc vòng đời DevOps của một ứng dụng cụ thể; (4) Giảm thời-gian-gián-đoạn và chi phí tài nguyên: Ứng dụng dựa trên container yêu cầu ít tài nguyên hệ thống hơn các phương pháp truyền thống. Kubernetes hỗ trợ phương pháp Agile để nâng cao vòng đời triển khai. Kubernetes được thiết kế để triển khai và cung cấp các tính năng hữu ích như tự động triển khai/quay lui; (5) Khả năng mở rộng và tính mô-đun: Các container nhỏ nhẹ (lightweight). Tính chất này cho phép các nhà phát triển phát triển ứng dụng nhanh hơn, mở rộng quy mô chi tiết hơn và tiết kiệm chi phí hơn, để cung cấp đổi mới kỹ thuật số nhất quán một cách đáng tin cậy cho người dùng cuối của họ.

Ngày càng nhiều các doanh nghiệp áp dụng công nghệ container, coi đó là một cách nhanh chóng để xây dựng và triển khai các ứng dụng cloud-native và ứng dụng 12-yếu-tố (12-factor app). Kubernetes quản lý các ứng dụng container hóa trong một cluster phân tán, kết quả giúp thực hiện lời hứa kinh doanh về chuyển đổi số: (1) Kubernetes giúp chạy các ứng dụng trên các đám mây công cộng, riêng tư hoặc lai một cách dễ dàng và rẻ hơn; (2) Kubernetes tăng tốc phát triển và triển khai ứng dụng; (3) Kubernetes tăng tính mau lẹ, linh hoạt và khả năng thích ứng với sự thay đổi. Kubernetes làm cho các ứng dụng được container hóa hoạt động theo cách dễ quản lý trên quy mô lớn. Điểm thứ hai của định nghĩa về các ứng dụng cloud-native - chúng được điều phối động theo cách mà các container được lập lịch và quản lý chủ động nhằm tối ưu hóa việc sử dụng tài nguyên - và Kubernetes thực hiện chính xác điều này. Nó sắp xếp các container và tải công việc của chúng để tối ưu hóa việc sử dụng các máy ảo và máy chủ vật lý tạo nên các node trong một cluster.

Giá trị kinh doanh của container và Kubernetes không chỉ giới hạn ở doanh nghiệp nói chung hay đơn vị của CIO. Các nhà phát triển sử dụng container vì chúng cung cấp: (1) Khả năng di động: Các container cho phép các nhà phát triển chọn cách thức và nơi triển khai một ứng dụng. (2) Tốc độ: Container đẩy nhanh các luồng công việc như kiểm thử và tăng tốc độ các bước lặp. (3) CI/CD Pipeline: Kubernetes và container hỗ trợ tích hợp liên tục và triển khai liên tục. (4) Tính linh hoạt: Các nhà phát triển có thể viết mã trên máy tính xách tay của họ khi nào và ở đâu họ muốn bằng các công cụ họ thích.

4. Hiện trạng ứng dụng Kubernetes

Mặc dù Kubernetes đang phát triển hoàn thiện và các use case đang mở rộng với tốc độ nhanh chóng, công nghệ này vẫn còn rất non trẻ khi Kubernetes mới chỉ hơn 6 năm tuổi. VMware đã ủy quyền cho Dimensional Research thực hiện một cuộc khảo sát về “Tình trạng của Kubernetes năm 2020” [13] để hiểu cách các doanh nghiệp đang sử dụng Kubernetes ngày nay và xác định những thách thức mà họ phải đối mặt trong việc sử dụng công nghệ.

Hơn một nửa số người được hỏi (57%) đang vận hành ít hơn 10 cluster Kubernetes và 60% đang chạy dưới một nửa khối lượng công việc được container hóa của họ trên Kubernetes. 59% những người được hỏi đang chạy Kubernetes trong sản xuất, 1/5 trong số đó có từ 50 cluster trở lên. Trong số các công ty được khảo sát, phần lớn (64%) đã triển khai Kubernetes tại chỗ (on-premise). 42% sử dụng dịch vụ của một nhà cung cấp đám mây công cộng, 31% sử dụng dịch vụ của nhiều nhà cung cấp đám mây công cộng.

Trong số những người trả lời khảo sát, 95% cho biết họ thấy những lợi ích rõ ràng từ việc sử dụng Kubernetes. Hai lợi ích hàng đầu là cải thiện việc sử dụng tài nguyên (56%) và rút ngắn chu kỳ phát triển phần mềm (53%). Các lợi ích đáng kể khác bao gồm cho phép di trú lên đám mây (42%) và giảm chi phí đám mây công cộng (33%). Một trong những điểm mạnh của Kubernetes là có thể chạy các cluster tại chỗ và trên đám mây, đồng thời dễ dàng di chuyển tải công việc được container giữa chúng. Kubernetes chạy trong đám mây công cộng sử dụng tài nguyên một cách hiệu quả và co giãn, giúp kiểm soát chi phí. Hiệu quả về tài nguyên là một KPI quan trọng đối với các nhóm vận hành, trong khi việc phát triển nhanh hơn rõ ràng sẽ giúp các nhà phát triển, khiến Kubernetes trở thành một giải pháp mà các nhóm vận hành và phát triển có thể cùng hưởng lợi.

Tính dễ sử dụng đứng đầu danh sách các tiêu chí lựa chọn cho Kubernetes (64%). Các tiêu chí lựa chọn hàng đầu khác bao gồm khả năng và lộ trình của sản phẩm (57%), tránh sự khóa cứng (45%), dịch vụ và hỗ trợ (38%). Thiếu kinh nghiệm và chuyên môn tạo ra những thách thức đối với việc triển khai và quản lý Kubernetes. Và khoảng cách này được coi là thách thức hàng đầu đối với cả việc triển khai và quản lý Kubernetes, lần lượt được 70% và 67% người được hỏi chọn.

Có một sự thay đổi rõ ràng trong các ngành, đó là chuyển từ mối quan tâm đến cơ sở hạ tầng sang tập trung hội tụ vào phát triển ứng dụng. Các công ty bắt buộc phải tăng năng suất của nhà phát triển, rút ngắn lộ trình sản xuất, và tăng tốc độ phát triển của các tính năng và dịch vụ mới. 49% nhà điều hành và 29% nhà phát triển cho rằng tích hợp công nghệ mới là trở ngại lớn nhất đối với năng suất của nhà phát triển, vẫn 29% nhà phát triển và chỉ 6% nhà điều hành cho rằng tiếp cận cơ sở hạ tầng là trở ngại lớn nhất. Kubernetes giúp các nhà phát triển tiếp cận với cơ sở hạ tầng, đây là một trong những điều thu hút họ đến với công nghệ. Hơn một nửa số nhà phát triển được khảo sát (55%) có quyền truy cập tự phục vụ vào các tài nguyên của Kubernetes. Trong số đó, 43% nói rằng với Kubernetes, họ điều hành cơ sở hạ tầng độc lập của riêng mình.

5. Kết luận

Các công nghệ cloud-native, kiến trúc microservice, nền tảng container hóa và trình điều phối container như Kubernetes, cũng như các công nghệ và phương pháp tiếp cận dựa trên đám mây là những yếu tố không thể thiếu giúp doanh nghiệp thực hiện chuyển đổi số thành công. Chúng cung cấp sự mau lẹ, tính di động và khả năng mở rộng quy mô trong việc phát triển và vận hành các ứng dụng cloud-native, cũng như di trú và hiện đại hóa các ứng dụng kế thừa hiện có của doanh nghiệp, từ đó thúc đẩy việc áp dụng nhanh chóng công nghệ và phương pháp luận trên nền tảng đám mây. Microservice giúp các công ty chuyển đổi các ứng dụng đơn khối lớn thành nhiều thành phần nhỏ để có thể đóng gói và triển khai chúng một cách riêng biệt mà không có bất kỳ sự phụ thuộc nào. Đó là nơi các công cụ như Docker và Kubernetes làm việc cùng nhau nhằm giúp các công ty triển khai và mở rộng các ứng dụng khi cần thiết. Trong khi, Docker hiện là nền tảng container hàng đầu, thì Kubernetes - công cụ điều phối container mã nguồn mở mạnh mẽ, tự động hóa việc triển khai và quản lý các container - ngày càng được nhiều tổ chức, doanh nghiệp đón nhận và áp dụng, trở thành một tiêu chuẩn xu thế của ngành CNTT.

 

Lời cảm ơn:

Nghiên cứu này được tài trợ bởi Trường Đại học Hàng hải Việt Nam trong đề tài mã số: DT20-21.55.

 

TÀI LIỆU THAM KHẢO:

  1. Phạm Ngọc Duy, Nguyễn Trung Quân (2020), Container hóa với Điện toán đám mây: Giải pháp xu thế trong phát triển và triển khai ứng dụng doanh nghiệp, Tạp chí Công Thương, số 01 tháng 01/2020, tr.191-200.
  2. Phạm Ngọc Duy, Nguyễn Thành Tuấn Anh (2020), Container hóa: Tổng hợp các khảo sát về hiện trạng và xu hướng áp dụng nền tảng container trong doanh nghiệp, Tạp chí Công Thương, số 02 tháng 02/2020, tr.64-73.
  3. Abdurrahim Yıldırım (2020), Digital Transformation with Containers and Kubernetes, Retrieved from: https://medium.com/@yildirimabdrhm/digital-transformation-with-containers-and-kubernetes-658af17b4cf4.
  4. Akhilesh Laddha, Containerization - A step forward for digital transformation, Retrieved from: https://www.wipro.com/applications/containerization-a-step-forward-for-digital-transformation/
  5. IDC (2020), IDC FutureScape: Worldwide Digital Transformation 2021 Predictions, IDC, <https://www.idc.com/getdoc.jsp?containerId=US46880818>
  6. Docker, The Digital Transformation Imperative, Docker, https://goto.docker.com/rs/929-FJL-<178/images/the-digital-transformation-imperative.pdf>
  7. Dynatrace, 2020 Global CIO Report, Dynatrace, <https://www.dynatrace.com/cio-report-automatic-and-intelligent-observability/>
  8. The Cloud Native Computing Foundation - The Linux Foundation, <https://www.cncf.io/>
  9. Pavan Belagatti, How Docker and Kubernetes Work Together, MediaOps Inc, <https://containerjournal.com/topics/container-ecosystems/how-docker-and-kubernetes-work-together/>
  10. Vamsi Chemitiganti, How Kubernetes Transforms Your Business, JaxEnter, <https://jaxenter.com/kubernetes-transforms-business-150723.html>
  11. VMware, Driving Digital Transformation with Containers and Kubernetes, VMware Inc, <https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/cloud/VMW_17Q3_WP_Driving-Digital-Transformation-with-Kubernetes_FINAL2_081617.pdf>
  12. Jay Lyman, Cloud Native, Kubernetes Drive Digital Transformation, 451 Research, <https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/products/vmware-twenty-twenty-cloud-native-kubernetes-drive-digital-transformation.pdf>
  13. VMware, The State of Kubernetes 2020, VMware Inc, <https://k8s.vmware.com/state-of-kubernetes-2020/>
  14. Steve Hoenis, Accelerating Digital Transformation with Containers and Kubernetes, VMware Inc, <https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/ebook/vmware-press-ebook-on-containers-and-kubernetes.pdf>

 

CONTAINERS AND KUBERNETES IN DIGITAL TRANSFORMATION 

OF ENTERPRISES

Master. PHAM NGOC DUY
NGUYEN TRUNG QUAN

Lecturers, Faculty of Information Technology, Vietnam Maritime University

 

ABSTRACT:

The Covid-19 pandemic has forced organizations to innovate and modernize their operations by accelerating the adoption of advanced digital technologies. Applications of cloud-native, microservice architecture, containerization platforms, and container orchestrators like Kubernetes, as well as cloud-based approaches are essential elements for enterprises to make a successful digital transformation. This paper analyzes the agility, mobility, and scalability in developing and operating cloud-native applications, as well as migrating and modernizing legacy applications of enterprises.

Keywords: containerization, Kubernetes, microservices, cloud-native, digital transformation.