DevOps (1) - Tổng quan


1         DevOps là gì


1.1       Vòng đời phát triển hệ thống


Theo wiki, Vòng đời phát triển hệ thống (tiếng Anh: Systems Development Life Cycle, viết tắt: SDLC), hay còn được gọi là Vòng đời phát triển ứng dụng (tiếng Anh: Application Development Life Cycle), là một thuật ngữ được dùng trong Công nghệ hệ thống, Hệ thống thông tin và Công nghệ phần mềm nhằm mô tả quá trình lập kế hoạch, tạo ra, kiểm thử và triển khai một hệ thống thông tin.
Tùy thuộc vào mô hình phát triển hệ thống/phần mềm khác nhau, SDLC sẽ được chia thành các giai đoạn khác nhau. Ví dụ một số mô hình phát triển hệ thống phổ biến: mô hình thác nước (water fall), mô hình chữ V (V model), mô hình xoắn ốc (spiral model), mô hình Agile/Scrum (agile/scrum model).


1.2       Mô hình thác nước


Thông thường, SDLC theo mô hình thác nước sẽ gồm các pha (stage) sau:

– Phân tích/đặc tả yêu cầu

– Thiết kế

– Lập trình

– Kiểm thử

– Triển khai và bảo trì

Xem hình minh họa,



Ưu điểm của mô hình thác nước:

– Đơn giản, dễ sử dụng

– Dễ quản lý nhờ vào tính cố định của mô hình

– Nhờ việc kiểm duyệt tại mỗi pha nên khả năng xảy ra lỗi ít

– Mỗi thời điểm chỉ thực hiện một pha, nên không có hiện tượng chồng chéo trong công việc

– Thích hợp cho các dự án nhỏ

Nhược điểm của mô hình thác nước:

– Không chấp nhận việc thay đổi các yêu cầu của dự án

– Khó quay lại bước trước, nếu các bước sau phát hiện có vấn đề cần điều chỉnh

– Quy trình làm việc nhiều rủi ro vì ít có thông tin phản hồi giữa các pha

– Không có sản phẩm phần mềm được chuyển giao cho tới thời điểm cuối của dự án

– Không thích hợp cho các dự án lớn và phức tạp, vì tính rủi ro cao của mô hình


1.3       Mô hình Agile


Mô hình Agile được đưa ra để khắc phục một số nhược điểm của mô hình thác nước. Trong mô hình Agile/Scrum, mỗi chu kì làm việc (sprint) cũng tiếp cận theo các bước gần giống với mô hình thác nước. Tuy nhiên, Agile tiếp cận theo phương pháp lặp, thường xuyên chuyển giao kết quả và nhận phản hồi của các bên liên quan để điều chỉnh một cách linh hoạt.

Xem hình minh họa,


 
Ưu điểm:

– Nhanh chóng và liên tục chuyển giao từng phần của phần mềm cho khách hàng

– Tính tương tác trong đội dự án, giữa đội dự án và khách hàng được thực hiện thường xuyên, điều này giúp thông tin được minh bạch, hạn chế tình trạng hiểu sai yêu cầu công việc

– Tính thích nghi cao với các thay đổi

– Chấp nhận thay đổi yêu cầu trong suốt quá trình thực hiện dự án

– Phù hợp với các dự án có tính sáng tạo, tính khả mở cao

Nhược điểm:

– Ít tính dự báo, dự đoán

– Dự án gặp rủi ro nếu khách hàng không hiểu rõ về sản phầm mong muốn, hoặc khách hàng không hợp tác tốt trong quá trình thực hiện dự án

– Tài liệu, thiết kế của dự án ít được chú trọng

– Khó xác định được như thế nào gọi là hoàn thành chức năng/dự án

– Tốn nhiều thời gian cho quá trình trao đổi giữa các thành viên trong đội dự án, giữa đội dự án và khách hàng


1.4       Khái niệm DevOps


Mô hình Agile đã khắc phục được một số hạn chế của mô hình thác nước, giúp gắn kết khách hàng và nhóm phát triển dự án.

Tuy nhiên trong mô hình Agile, vẫn có những khó khăn trong việc kết hợp giữa nhóm phát triển dự án và nhóm triển khai/vận hành. DevOps ra đời sẽ khắc phục được vấn đề này.

Theo wiki, DevOps (kết hợp của cụm từ tiếng Anh "software DEVelopment" và "information technology OPerationS") là một thuật ngữ để chỉ một tập hợp các hành động trong đó nhấn mạnh sự hợp tác và trao đổi thông tin của các lập trình viên và chuyên viên tin học (nhóm triển khai/vận hành) khi cùng làm việc để tự động hóa quá trình chuyển giao sản phẩm phần mềm. Nhằm giúp quá trình biên dịch phần mềm (build), kiểm tra, và phát hành phần mềm diễn ra nhanh chóng, thường xuyên, và đáng tin cậy hơn.

DevOps là một phương thức vận hành mới, giúp quá trình trao đổi và làm việc giữa các phòng: Phát triển phần mềm, Quản lý chất lượng phần mềm (QA), và phòng IT diễn ra thuận lợi; bằng cách “nhúng” một chuyên viên phòng IT vào nhóm phát triển phần mềm tạo thành một đội đa chức năng.

Xem hình minh họa,



Ở hình trên, DevOps sẽ kết nối ba phòng: Phát triển phần mềm (Development/Software engineering), Quản lý chất lượng phần mềm (QA/Quality assurance) và IT (Information technology/Operations). Phòng IT ở đây có nhiệm vụ: phát hành, triển khai, vận hành và giám sát hệ thống/phần mềm.

So sách sự khác nhau giữa phương pháp Agile và DevOps

Phương pháp Agile
DevOps
Tập trung chủ yếu vào tính cộng tác, phản hồi của khách hàng và các thay đổi nhanh gọn
Gắn nhóm phát triển và nhóm vận hành lại với nhau
Không chú trọng vào quá trình “tự động hóa” (automation)
Mục đích chủ yếu là tự động hóa để tăng hiệu quả trong quá trình tạo ra phần mềm
Tập trung nhiều vào giai đoạn phát triển phần mềm (development process), ít tập trung vào quá trình kiểm thử và triển khai
Tập trung vào cả quá trình phát triển, kiểm thử và triển khai.
Gắn kết khách hàng và nhà phát triển
Gắn kết nhóm phát triển và nhóm triển khai


1.5       Vòng đời DevOps


Xem hình minh họa về Vòng đời Devops,



Vòng đời DevOps gồm có các bước sau[1]:

– Code: bước đầu tiên của vòng đời là lập trình, các lập trình viên viết mã cho chương trình

– Build: biên dịch và tạo ra một phiên bản của chương trình

– Test: kiểm thử phần mềm một cách tự động bằng các công cụ hỗ trợ (ví dụ Selenium).

– Release: phát hành

– Deploy: triển khai

– Operate: vận hành

– Monitor: giám sát hiệu xuất ứng dụng, phản hồi, trải nghiệm người dùng

– Plan: dựa trên các thông tin thu thập được của quá trình monitor, thực hiện các thay đổi để nâng cao hiệu năng của hệ thống

1.6       Các giai đoạn chính của DevOps


Các bước trong vòng đời của DevOps có thể chia thành các giai đoạn sau:

– Continuous development

– Continuous testing

– Continuous integration

– Continuous deployment

– Continuous monitoring


Xem hình minh họa[1],



-----
Cập nhật: [19/02/2020]
-----
Xem thêm: DevOps (2) -
Xem thêm: Danh sách bài học