Trong bài viết này, dựa vào kinh nghiệm triển khai của chúng tôi trong thực tiễn DevOps , TSG sẽ giúp các bạn xác định lý do để bắt đầu áp dụng văn hóa DevOps, xem xét giá trị của nó mang lại và các bước thực hiện kế hoạch triển khai DevOps.
Các thực trạng của doanh nghiệp trước khi triển khai DevOps
Dưới đây, chúng tôi sẽ kể ra các sai lầm cơ bản và phổ biến của các công ty khi phát triển và vận hành phần mềm của họ. Đây cũng là các lý do khiến nhiều công ty phát triển phần mềm muốn chuyển đổi sang DevOps.
1. Phát triển phần mềm sử dụng đội lập trình của công ty, thuê ngoài hoặc thuê ngoài một phần.
Thông thường, doanh nghiệp lập trình thường có 3 lựa chọn chính:
- Phần mềm được phát triển bởi đội lập trình của công ty với nhiều nguồn tài nguyên và nhân lực dành riêng cho quá trình phát triển.
- Phần mềm được phát triển bởi một đơn vị thuê ngoài, trường hợp này thường có ở các doanh nghiệp thiếu các tài nguyên về IT cho lập trình.
- Phát triển phần mềm được định hướng bởi đội lập trình của công ty, tuy nhiên phần quản lý chất lượng QA được giao cho một bên cung cấp dịch vụ QA để kiểm tra đánh giá.
2. Không có sự phối hợp nhiệm vụ giữa các phòng ban.
Đội Dev, Test, QA, đội cung cấp hạ tầng, đội hiện đại hóa có các nhiệm vụ khác nhau. Đội lập trình thì viết code, đội test thì tìm lỗi, đội vận hành thì quản lý môi trường sản phẩm và đảm bảo độ ổn định hiệu suất ứng dụng. Nhiệm vụ giữa các phòng ban thường tách biệt với nhau, do đó sự hợp tác giữa họ thường rất ít. Các quản trị viên bảo mật thường được coi là rào cản trong quá trình phát triển phần mềm vì họ luôn tìm thấy các điểm yếu bảo mật trong ứng dụng và yêu cầu đội dev sửa lại. Do đó gây ra sự chậm trễ về tiến độ của dự án.
3. Đội test không kiểm tra được toàn bộ
Đội lập trình viết các unit test để kiểm tra riêng chức năng của từng phần nhỏ nhất của phần mềm trong giai đoạn đầu phát triển. Vì unit test dùng dể xác minh các đơn vị phần mềm độc lập, do đó các lỗi tích hợp hoặc các vấn đề về hiệu suất phần mềm không được chú ý. Để kiểm tra sự kết nối giữa các thành phần ứng dụng cũng như toàn bộ chức năng phần mềm. Các tester sẽ thực hiện kiểm tra thủ công và tự động thông qua UI. Tuy nhiên, tỉ lệ tự động hóa đủ không cao để quét được toàn bộ mọi chức năng.
4. Xác suất lỗi sau phát hành cao
Các tester tiến hành thử nghiệm các chức năng, hiệu suất, tích hợp, bảo mật, tính khả dụng và các loại thử nghiệm khác. Tuy nhiên, kiểm tra liên tục không thực hiện ở mỗi giai đoạn của quy trình phát triển phần mềm. Do các lỗ hổng kiểm tra kết qua, người sử dụng phần mềm thường phát hiện ra nhiều lỗi nghiêm trọng sau khi phát hành. Hơn nữa, các tester có thể không tạo được các lỗi đã xác định trong môi trường thử nghiệm. Điều này có thể xảy ra vì các sự khác biệt sau:
- Cấu hình của môi trường thử nghiệm và môi trường sản xuất khác nhau.
- Các phiên bản được triển khai khác nhau trong môi trường sản xuất và thử nghiệm.
5. Thiếu sự tin tưởng về chất lượng phần mềm của người dùng.
Do các lỗi nghiêm trọng thường xảy ra sau khi phát hành phần mềm. Người dùng sẽ cảm thấy không chắc chắn về chất lượng phần mềm và phải tiến hành kiểm tra tính ổn định thủ công. Và với những người dùng bận rộn với các công việc của họ, việc sử dụng và phản hồi thường rất ít.
6. Mất hàng tuần để cập nhật và sửa lỗi.
Vì sự hợp tác giữa các đội tham gia vào quá trình phát triển phần mềm kém hiệu quả, do đó thường tốn 2-4 tuần để phát hiện, sửa lỗi và đưa ra các bản cập nhật. Thời gian chờ đợi lâu sẽ ảnh hưởng nghiêm trọng tới khả năng hỗ trợ và vận hành các quy trình của doanh nghiệp, ví dụ như các ứng dụng quản lý chuỗi cung ứng, hoặc phần mềm CRM.
7. Tốn thời gian triển khai cơ sở hạ tầng
Các quản trị viên hệ thống phải dành nhiều ngày hoặc thậm chí cả tuần để chuẩn bị hạ tầng dev, test cho một dự án phát triển mới. Không kịp cấu hình hệ thống trước khi triển khai có thể sẽ khiến quản trị viên hệ thống tốn nhiều thời gian hơn để sửa đổi và điều chỉnh hệ thống cho ổn định.
Doanh nghiệp mong muốn gì sau khi triển khai DevOps?
Triển khai DevOps sẽ giúp doanh nghiệp khắc phục được các sai lầm cơ bản ở trên. Vơi một loạt các công cụ và công nghệ mới hỗ trợ quá trình phát triển phần mềm. DevOps giúp phát triển và cung cấp các ứng dụng ổn định với các chức năng được kiểm tra kỹ lưỡng và nhanh chóng hơn cách phát triển và vận hành truyền thống. Dưới đây là các lợi ích thực tiễn mà DevOps sẽ đem lại cho doanh nghiệp.
Lộ trình triển khai DevOps cho doanh nghiệp
Khi công ty bạn đã xem xét tất cả các yếu tố để bắt đầu triển khai DevOps. Bạn cần có kế hoạch từng bước để áp dụng văn hóa DevOps thuận lợi và suôn sẻ.
Bước 1: Khởi xướng văn hóa DevOps
CIO của công ty sẽ thường là người khởi xướng văn hóa DevOps. Vì khi áp dụng DevOps, phòng IT sẽ tạo ra các thay đổi về phát triển và vận hành các hoạt động ổn định hơn. Hơn nữa, CIO là người nắm bắt được tình hình tài chính và nguồn nhân lực hiện tại của công ty để ra các quyết định áp dụng DevOps. Họ cũng làm người lên kế hoạch và giám sát toàn bộ quá trình triển khai DevOps.
Bước 2: Xây dựng kế hoạch chuyển đổi
Xây dựng một kế hoạch hiệu quả, yêu cầu công ty bạn phải có những kinh nghiệm thực tiễn để giúp cải thiện khả năng hợp tác các phòng ban và cho phép áp dụng các cách thức mới về cung cấp hạ tầng, phát triển và kiểm tra phần mềm. Dưới đây là các kinh nghiệm thực tiễn để triển khai kế hoạch hiệu quả:
- Cho các đội Dev, Test, thiết kế, vận hành và các đội khác liên quan vào trong một môi trường DevOps để chia sẻ công việc. Nó giúp các thành viên tập trung vào kết quả của quá trình phát triển phần mềm và hiểu được nhiệm vụ và hoạt động của nhau. Đặt mục tiêu chung để đảy nhanh quá trình phát triển và đảm bảo chất lượng của phần mềm cho tất cả mọi người.
- Triển khai IaC để đảm bảo cung cấp kịp thời hạ tầng theo yêu cầu của đội lập trình hoặc đội Test, bất kể khi nào họ cần tạo một bản dựng mới. Cho phép các học viên DevOps có hạ tầng để phát triển và thử nghiệm, tránh các lỗi do cấu hình thủ công.
- Tự động hóa việc xây dựng, unit testing, kiểm tra ứng dụng qua UI, tích hợp phần mềm, triển khai và phát hành. Giúp đẩy nhanh quy trình dev-test-release phần mềm.
Bước 3: Containerizing
Thực hiện đóng gói phần mềm với các công cụ như Docker giúp giải quyết các vấn đề về độ tin cậy của phần mềm. Ví dụ, khi nó chuyển từ môi trường dev sang test và sau đó đến sản xuất. Các container chứa mọi thứ được yêu cầu để chạy ứng dụng, như các mục phụ thuộc, thư viện và các tập tin cấu hình. Việc tách phần được đóng gói của phần mềm với toàn bộ hạ tầng cho phép nó chạy ổn định bất kể môi trường nào mà chúng được đưa vào.
Ngoài ra, do các phần của ứng dụng được đưa vào container, nên nhóm vận hành sẽ dễ dàng quản lý ứng dụng hơn vì họ không phải xây dựng lại toàn bộ phần mềm khi cần thay đổi mộ trong các dịch vụ của nó.
Bước 4: Tích hợp tự động hóa hạ tầng với các công cụ CI/CD
Khi phần mềm được đưa vào các container, ứng dụng được chứa cần phải được quản lý đúng cách. Các công cụ tự động hóa hạ tầng như Kubernetes, Ansible, Chef hoặc Puppet được tích hợp với các công cụ CI/CD như Jenkins, Bamboo hoặc GoCD để quản lý cấu hình và triển khai phần mềm hiệu quả hơn.
Ví dụ, sử dụng Kubernetes cho hạ tầng lớn hoặc Ansible cho hạ tầng nhỏ hơn để quản lý các container cho khả năng chịu lỗi, theo dõi tình trạng và thực hiện cập nhật phần mềm. Dùng Jenkins để tạo, kiểm tra và triển khai các bản dựng mới trong Kubernetes.
Bước 5: Tăng cường tự động hóa test và điều chỉnh QA với phát triển
Để mang lại khả năng phân phối nhanh hơn với DevOps, cần phải đảm bảo kiểm tra tự động đầy đủ. Tuy nhiên, không phải loại kiểm tra nào cũng phải được tự động. Ví dụ như kiểm tra tìm kiếm, độ khả dụng và tính bảo mật nên được thực hiện thủ công. Tùy thuộc vào các yêu cầu mà tính năng kiểm tra thủ công vẫn nên được giữ lại một phần.
Các hoạt động phát triển và thử nghiệm được tiến hành song song để tránh các lỗi sau phát hành. Trong khi ứng dụng vẫn đang phát triển thì tiến hành kiểm tra tự động 1-2 lần một ngày là cách tốt nhất. Khi tìm thấy lỗi, đội lập trình sẽ làm việc trên phiên bản ổn định trước khi phát hành bản tiếp theo.
Bước 6: Đảm bảo hiệu suất toàn bộ ứng dụng
Giám sát hiệu suất ứng dụng cung cấp cho các đội liên quan đến DevOps tính minh bạch đối với tất cả các vấn đề về hiệu suất. Ví dụ: phản hồi chậm, rò rỉ bộ nhớ, lỗi thời gian chạy. Các vấn đề có thể được tiết lộ trong quá trình giám sát máy chủ ứng dụng, giám sát trải nghiệm người dùng...
Giám sát hiệu suất ứng dụng cho phép phát hiện, ưu tiên và tách các lỗi ứng dụng trước khi người dùng tìm thấy chúng, cũng như tìm thấy nguyên nhân gốc rễ gây ra lỗi với phần mềm giám sát ứng dụng đặc biệt như Zabbix, Nagios hoặc Prometheus.
Các lưu ý để triển khai DevOps thành công
Khi bắt đầu áp dụng văn hóa DevOps vào trong quy trình phát triển phần mềm của doanh nghiệp. Sẽ có nhiều quan niện sai lầm về phương pháp này. Do đó hãy hiểu rõ và chính xác bản chất của DevOps để triển khai nó thành công.
-
DevOps không phải hoàn toàn tự động hóa.
Nhân tố chính để xây dựng lên văn hóa DevOps là các IT, cũng như các sắp xếp quy trình phát triển phần mềm. Tự động hóa là công cụ quan trọng để thúc đẩy việc xây dựng phần mềm và kiểm tra. Giúp tăng tốc độ phát triển và giảm thiểu các lỗi do con người.
-
Chỉ sử dụng các công cụ DevOps không đủ để tạo lên văn hóa DevOps
Áp dụng các công cụ mới là rất tốt. Tuy nhiên, có hàng loạt công cụ để xây dựng lên văn hóa DevOps. Việc học cách sử dụng và định cấu hình các công cụ này yêu cầu tất cả các thành viên của dự án DevOps phải áp dụng Continuos Testing cũng như thực hành CI/CD để tăng tốc phân phối phần mềm và tăng chất lượng.
-
Không cần thiết kế lại cấu trúc tổ chức để chuyển sang DevOps.
Không cần một bộ phận riêng biệt để xây dựng DevOps. Việc thử nghiệm, hỗ trợ và vận hành được tiến hành trên đội ngũ các nhóm liên quan đến việc phát triển phần mềm hiện tại. Họ có thể tự cấu hình các công cụ để quản lý hạ tầng, giám sát hiệu suất ứng dùng và thử nghiệm CI/CD.