Quy trình của DevOps được gọi là “DevOps Loop” hoặc “DevOps Vòng số 8”, bao gồm tám bước chính:
Plan
Bước đầu tiên trong chu trình DevOps là Plan – Lên kế hoạch. Đây là bước quan trọng để đảm bảo rằng quá trình phát triển và triển khai ứng dụng được thực hiện một cách hiệu quả và đáp ứng được yêu cầu của khách hàng.
Trong bước này, các kỹ sư DevOps cùng với các thành viên của nhóm phát triển sẽ cùng thảo luận, đánh giá và lên kế hoạch cho quá trình phát triển ứng dụng. Các hoạt động trong bước lên kế hoạch bao gồm:
- Thu thập yêu cầu: Các kỹ sư DevOps sẽ thu thập thông tin về yêu cầu của khách hàng và nghiên cứu các yêu cầu về chức năng và hiệu suất của ứng dụng.
- Thiết kế kiến trúc: Sau khi thu thập yêu cầu, kỹ sư DevOps sẽ cùng với nhóm phát triển thiết kế kiến trúc của hệ thống. Kiến trúc hệ thống là cơ sở để triển khai ứng dụng một cách hiệu quả và đáp ứng các yêu cầu của khách hàng.
- Lên kế hoạch triển khai: Sau khi thiết kế kiến trúc, các kỹ sư DevOps sẽ lên kế hoạch triển khai ứng dụng. Kế hoạch triển khai bao gồm các bước cần thiết để phát triển, kiểm thử và triển khai ứng dụng lên môi trường sản xuất.
- Điều chỉnh kế hoạch: Kế hoạch triển khai có thể được điều chỉnh nếu cần thiết để đáp ứng các yêu cầu mới hoặc giải quyết các vấn đề phát sinh trong quá trình triển khai.
- Tạo kế hoạch triển khai: Kế hoạch triển khai sẽ được tạo ra để đảm bảo rằng quá trình triển khai ứng dụng được thực hiện một cách đáng tin cậy và hiệu quả.
- Xác định các tiêu chí thành công: Trong quá trình lên kế hoạch, các kỹ sư DevOps sẽ xác định các tiêu chí thành công để đánh giá kết quả cuối cùng của quá trình phát triển và triển khai ứng dụng.
Code
Bước code trong chu trình DevOps là bước tiếp theo sau bước Plan. Bước này liên quan đến việc phát triển mã nguồn cho các tính năng hoặc sửa lỗi được lên kế hoạch trước đó. Trong bước này, các nhà phát triển sẽ tạo ra mã nguồn cho ứng dụng hoặc tính năng, bao gồm cả mã nguồn cho các bản sửa lỗi và các bản vá bảo mật.
Khi phát triển mã nguồn, các nhà phát triển thường sử dụng các công cụ quản lý mã nguồn như Git hoặc SVN để quản lý các phiên bản khác nhau của mã nguồn. Các công cụ này cho phép các nhà phát triển làm việc đồng thời trên cùng một mã nguồn, xác định những thay đổi của mỗi người và hợp nhất các thay đổi lại với nhau để tạo ra phiên bản mới.
Sau khi các nhà phát triển đã hoàn thành việc phát triển mã nguồn, các bản thử nghiệm và kiểm tra phải được thực hiện để đảm bảo rằng mã nguồn hoạt động đúng như kỳ vọng và tương thích với các thành phần khác trong hệ thống. Các công cụ thử nghiệm và kiểm tra tự động giúp tối ưu hóa quá trình này, giảm thiểu các lỗi có thể xảy ra và tăng tốc độ phát triển.
Khi các thử nghiệm và kiểm tra đã hoàn tất và mã nguồn được xác nhận là hoạt động tốt, nó sẽ được đưa vào quá trình Release.
Build
Bước build trong chu trình DevOps là quá trình biên dịch và xây dựng các thành phần của ứng dụng để tạo ra phiên bản chạy được trên môi trường sản xuất. Bước này bao gồm các hoạt động như:
- Compile code: Chuyển mã nguồn thành mã máy, tạo ra các file nhị phân có thể chạy trên các môi trường khác nhau.
- Package: Đóng gói mã nguồn, các tài nguyên, thư viện và các thành phần khác cần thiết để triển khai ứng dụng trên các môi trường khác nhau. Đối với các ứng dụng web, quá trình này có thể bao gồm việc tạo file WAR hoặc JAR.
- Test: Kiểm tra chất lượng của mã nguồn sau khi đã được biên dịch và đóng gói để đảm bảo rằng nó hoạt động đúng như dự kiến và không có lỗi nào.
- Versioning: Gán một phiên bản cho ứng dụng sau khi đã được xây dựng và kiểm tra. Điều này giúp cho việc theo dõi các phiên bản, cập nhật và khắc phục sự cố trở nên dễ dàng hơn.
Quá trình build được thực hiện tự động bởi các công cụ và hệ thống quản lý mã nguồn như Jenkins, TeamCity, hay TravisCI. Khi quá trình build hoàn tất, các file được tạo ra sẽ được lưu trữ trong kho lưu trữ mã nguồn (source code repository) và có sẵn để tiếp tục các bước phía sau trong chu trình DevOps.
Test
Bước Test trong chu trình DevOps là quá trình kiểm thử phần mềm để đảm bảo rằng sản phẩm cuối cùng đáp ứng được các yêu cầu chức năng và chất lượng. Bước này bao gồm việc xác định các ca kiểm thử, tạo và thực thi các kịch bản kiểm thử và đánh giá kết quả kiểm thử.
Trong quá trình kiểm thử, các lỗi hoặc vấn đề có thể được phát hiện sớm, giúp cho các nhà phát triển và kiểm thử có thể sửa chữa và cải thiện sản phẩm trước khi phát hành cho khách hàng. Điều này giúp giảm thiểu chi phí và thời gian cho việc sửa lỗi sau khi sản phẩm đã được phát hành.
Các phương pháp kiểm thử thường được sử dụng trong bước Test bao gồm kiểm thử đơn vị (unit testing), kiểm thử tích hợp (integration testing), kiểm thử chấp nhận (acceptance testing), kiểm thử hệ thống (system testing) và kiểm thử chức năng (functional testing). Các công cụ kiểm thử cũng được sử dụng để tự động hóa quá trình kiểm thử và giảm thiểu thời gian kiểm thử thủ công.
Release
Release là quá trình cung cấp ứng dụng hoặc các tính năng mới đến cho người dùng cuối. Quá trình này bao gồm chuẩn bị và đóng gói phiên bản sản phẩm, sau đó phát hành phiên bản đó đến người dùng.
Trong quá trình release, các bản sửa lỗi hoặc cập nhật mới sẽ được tích hợp vào mã nguồn và được đóng gói thành phiên bản cập nhật. Sau đó, quá trình release sẽ bao gồm kiểm tra phiên bản cập nhật trên một môi trường giống với môi trường sản xuất, để đảm bảo tính ổn định của phiên bản trước khi phát hành cho người dùng cuối.
Việc phát hành phiên bản sản phẩm hoặc các tính năng mới phải được thực hiện một cách cẩn thận và có kế hoạch rõ ràng để tránh gây ra các vấn đề hoặc sự cố không mong muốn. Quá trình release có thể được tự động hóa để đảm bảo sự thống nhất và độ chính xác, giảm thiểu thời gian cần thiết cho việc phát hành và tăng khả năng phục hồi nhanh chóng trong trường hợp phát hiện lỗi sau khi phát hành.
Deploy
Bước này bao gồm việc triển khai phiên bản ứng dụng mới trên môi trường sản xuất. Các công cụ triển khai (deployment tools) được sử dụng để tự động hóa quá trình này và đảm bảo tính nhất quán và khả chuyển của ứng dụng.
Deploy là bước cuối cùng trong quy trình DevOps, trong đó ứng dụng được triển khai trên môi trường sản xuất để sử dụng bởi người dùng cuối. Trong giai đoạn này, những thay đổi đã được thử nghiệm, tích hợp và đóng gói thành một phiên bản ứng dụng mới, sẵn sàng để được triển khai.
Việc triển khai thường được thực hiện bằng cách sử dụng các công cụ tự động để giảm thiểu sự cố và thời gian gián đoạn. Một số công cụ phổ biến được sử dụng trong giai đoạn triển khai bao gồm Ansible, Puppet, Chef, SaltStack và Terraform.
Các bước cần thiết để thực hiện quá trình triển khai bao gồm chuẩn bị môi trường, cấu hình và triển khai ứng dụng trên các máy chủ, tải lên các tài liệu cần thiết và cập nhật các máy chủ DNS và bộ định tuyến cho phép người dùng cuối có thể truy cập vào ứng dụng.
Quá trình triển khai cũng bao gồm kiểm tra các bản vá lỗi và bản sửa lỗi, xác minh tính khả dụng và hiệu suất của ứng dụng và đảm bảo rằng tất cả các phần mềm và phần cứng được sử dụng để triển khai ứng dụng đều đáp ứng được yêu cầu về hệ thống. Sau khi triển khai thành công, ứng dụng sẽ được đưa vào sản xuất để phục vụ người dùng cuối.
Operate
Bước Operate trong vòng số 8 của DevOps là bước quan trọng để đảm bảo các ứng dụng được vận hành ổn định và đáp ứng được yêu cầu của người dùng cuối.
Trong bước này, các kỹ sư DevOps cần phải quản lý và vận hành các ứng dụng đã được triển khai trên môi trường sản xuất. Điều này bao gồm việc giám sát các thành phần của hệ thống để đảm bảo chúng hoạt động đúng cách và phát hiện và khắc phục sự cố nhanh chóng nếu có.
Các công cụ giám sát và quản lý được sử dụng để theo dõi hiệu suất của hệ thống, tìm kiếm các lỗi và vấn đề, và cung cấp thông tin chi tiết về các khối lượng dữ liệu, tình trạng các thành phần hệ thống, tài nguyên máy chủ, và hơn thế nữa. Những công cụ này cũng cho phép các kỹ sư DevOps giải quyết các vấn đề trong thời gian thực và đưa ra quyết định chính xác để tối ưu hóa hiệu suất của hệ thống.
Ngoài ra, trong bước Operate này, các kỹ sư DevOps cũng phải quản lý các phiên bản của ứng dụng, đảm bảo rằng phiên bản được phát hành đáp ứng được yêu cầu của người dùng cuối. Việc cập nhật và triển khai phiên bản mới cũng phải được thực hiện một cách an toàn và đáp ứng nhanh chóng đối với các yêu cầu của người dùng.
Tóm lại, bước Operate là bước quan trọng để đảm bảo hoạt động ổn định và hiệu suất cao của các ứng dụng đã được triển khai trên môi trường sản xuất. Các công cụ giám sát và quản lý giúp kỹ sư DevOps theo dõi hiệu suất của hệ thống và đưa ra quyết định chính xác để tối ưu hóa hiệu suất của hệ thống.
Monitor
Trong quá trình vận hành ứng dụng, việc giám sát là rất quan trọng để đảm bảo rằng các hệ thống đang hoạt động ổn định và đáp ứng yêu cầu của người dùng. Việc giám sát có thể được thực hiện bằng các công cụ như Prometheus, Grafana, Nagios, Zabbix, ELK stack, New Relic, và Splunk.
Các công cụ giám sát này giúp theo dõi các thông số quan trọng của hệ thống như lưu lượng mạng, tài nguyên CPU, RAM, disk space, thời gian phản hồi, số lượt truy cập trang web, số lỗi, v.v. Nếu các chỉ số này vượt quá ngưỡng giới hạn được thiết lập, các cảnh báo sẽ được kích hoạt và thông báo cho những người thích hợp để khắc phục vấn đề kịp thời.
Để đảm bảo rằng việc giám sát là hiệu quả, các kỹ sư DevOps cần xác định và thiết lập các chỉ số cần được giám sát và các ngưỡng giới hạn an toàn. Ngoài ra, các kỹ sư cần tổ chức các thông tin giám sát sao cho dễ dàng hiểu và dễ quản lý, cũng như phân tích dữ liệu giám sát để đưa ra những quyết định cải thiện hiệu suất và đáp ứng người dùng tốt hơn.