Bỏ qua nội dung

Ngày 4 - DevOps & Agile

Xin chào mọi người, cuối cùng thì sau một khoảng thời gian khắc phục sự cố liên quan đến thiết bị thì chặng hành trình của chúng ta lại tiếp tục với ngày thứ tư. Lần này chúng ta sẽ ghé thăm một điểm đến hoàn toàn mới, và cùng nhau chiêm nghiệm, so sánh sự khác biệt giữa hai trường phái khác nhau: DevOpsAgile. Thế rốt cuộc thì Agile nó khác DevOps chỗ nào, mà tại sao mình lại phải đi tham quan nó chứ? Phải chăng có một điều bí ẩn nào đang chờ đón mọi người?

Choose One

Nguồn: Linkedin

Nếu sự tò mò này đã lên đến đỉnh điểm, vậy thì sẵn sàng lên đường thôi! 🚙

Ấn tượng ban đầu 🛤

Agile

Nguồn: 9GAG

  1. Agile (hay Phương pháp Agile): Cách tiếp cận tập trung vào việc cung cấp các tính năng nhỏ và nhanh hơn thay vì phát hành một bản vá lớn của ứng dụng. Phần mềm được phát triển trong nhiều giai đoạn (iteration), các phiên bản mới sẽ được ra mắt trong các bản cập nhật hàng tuần hoặc hàng tháng. Mục tiêu cuối cùng của Agile là tối ưu trải nghiệm của người dùng cuối.
  2. DevOps: Các phương pháp phát triển và phân phối phần mềm dựa trên sự hợp tác chặt chẽ giữa nhóm phát triển phần mềm và nhóm vận hành. Lợi ích chính của DevOps là đơn giản hoá quy trình phát triển và giảm thiểu thông tin sai lệch giữa các bộ phận.

Phi thường làm nên khác biệt 🏕

Not same

Nguồn: Oracle Base

Để nói đến sự khác biệt giữa hai trường phái này, có lẽ sẽ là đối tượng mà hai nơi này hướng đến. Tuy vậy, giữa hai nơi này có một mối liên kết mà chỉ có khi kết hợp lại với nhau mới làm nên thành công cho một dự án du lịch hoàn hảo. Trong giới hạn của phần hai này, xin phép nêu ra những điểm khác nhau trước nhất giữa cả hai.

”Kênh quốc gia” và “Kênh khu vực” 📺

Thuật ngữ này được sử dụng trong phát thanh/truyền hình để nói đến một hệ thống gồm các kênh không chia theo vùng (VTV1, VTV2, VTV3) và kênh chuyên phục vụ theo vùng (VTV8, VTV9, VTV Cần Thơ). Nếu áp dụng cùng một hệ quy chiếu như truyền hình thì Agile thuộc nhóm Quốc gia (vì phục vụ trực tiếp từ nhóm phát triển đến khách hàng), trong khi đó DevOps lại thuộc nhóm Khu vực điển hình (phục vụ giữa nhóm phát triển và nhóm vận hành).

Bộ phận công tác 🏢

Agile tập trung vào nhánh trái của Vòng lặp DevOps (tức nhóm phát triển, quản lý dự án). Trong khi đó, DevOps lại đứng ở giữa vòng lặp, vì gần như tất cả mọi giai đoạn của dự án đều có DevOps tham gia cùng. DevOps có thể được xem là một phần của nhóm Agile.

Bộ khung làm việc 📃

Agile có nhiều bộ khung khác nhau để đạt sự linh hoạt và minh bạch, với một đường đi được vạch sẵn như hình dưới.

Agile

Nguồn: IWConnect

DevOps lại không có bất kỳ bộ khung nào cho quá trình phát triển. Cơ sở hạ tầng dưới dạng mã nguồn (IaC), giám sát và tự khắc phục lỗi, tự động hóa kiểm thử ứng dụng chỉ là các phương pháp chứ không được gọi là bộ khung, và các phương pháp này hỗ trợ cộng tác trong việc phát triển phần mềm.

Nhận xét và phản hồi ✅

Với Agile, các thành viên sẽ nhận phản hồi trực tiếp từ phía khách hàng. Trong khi đó, DevOps tập trung nhận phản hồi của các nơi khác liên quan hoặc nhóm có ưu tiên cao hơn.

Phạm vi công việc 📖

Agile tập trung chủ yếu vào nhánh trái của Vòng lặp DevOps, đồng nghĩa với việc phạm vi công việc sẽ chỉ xoay quanh phát triển ứng dụng là chủ yếu. DevOps, tuy cũng tập trung phát triển ứng dụng, nhưng nơi này lại có thêm những hoạt động khác như triển khai, giám sát, bảo trì, bảo mật dữ liệu và khắc phục sự cố để đảm bảo tính khả dụng cao cho ứng dụng.

”Kịch bản phát sóng” 📓

Kịch bản phát sóng” đối với DevOps là một trong những thành phần cực kỳ quan trọng. Ngược lại, Agile lại coi kịch bản này chỉ là một bộ khung để biến tấu sao cho phù hợp với các mục tiêu và giai đoạn khác nhau. Điều này khá giống với hình ảnh đối lập của một đạo diễn và một biên kịch - một người muốn mọi thứ phải theo đúng tiến trình của chương trình, còn một người lại chủ trương sáng tạo nội dung dựa trên kịch bản để giúp chương trình trở nên đáng theo dõi hơn.

Movie

Nguồn: Reddit

Rủi ro đi kèm ⚠

Chính sự biến tấu của Agile lại biến thành rủi ro, với sự thay đổi liên tục về thứ tự ưu tiên cho từng đầu việc khiến các thành viên rất khó xác định mức độ an toàn của việc thay đổi.

Trong khi đó, nếu DevOps bị “phế võ công” hoặc “dùng sai chiêu thức”, rất có thể nhiều dự án sẽ bị bỏ hoang do không có tính thay đổi để thích nghi với điều kiện mới. Điều này xuất phát từ sự ngộ nhận không cần thiết liên quan đến việc coi DevOps là tập hợp phần mềm để triển khai vận hành liên tục.

”Công cụ truyền dẫn” 🖥

Agile tập trung nhiều ở nhánh trái Vòng lặp, có nghĩa các công cụ quản lý, phản hồi có dạng vé (ticket) sẽ được ưu tiên hơn như Jira, Trello, Zoom, SurveyMonkey,…

DevOps lại có những bộ công cụ khác để giao tiếp và phát triển phần mềm như Bitbucket, Jenkins, Github Actions, … Dù có sự khác biệt nhưng cả hai nơi vẫn có những điểm chung mà có thể cộng tác với nhau và cho ra một hành trình tuyệt vời.

Combo hoàn hảo cho một ngày diệu kỳ 🗃

Combination

Nguồn: Netsmartz

Kết hợp Agile và DevOps trong một chuyến hành trình duy nhất sẽ mang lại những lợi ích to lớn như:

  • Lộ trình được quản lý linh hoạt với các công cụ mạnh mẽ.
  • Phương pháp Agile giúp các nhóm DevOps giao tiếp, trao đổi về các nhiệm vụ ưu tiên một cách hiệu quả hơn.
  • Tối ưu chi phí phát sinh từ quá trình tự động hóa, giúp hành trình trở nên nhanh chóng hơn và tăng tỷ lệ “tái thực hiện chuyến đi” hơn.
  • Quá trình giao tiếp, hợp tác của các thành viên trong nhóm Agile trở nên tốt hơn, tăng động lực cho nhóm và giúp giảm tỷ lệ “trốn về nước”.
  • Kết quả là sản phẩm ra mắt người dùng cuối có chất lượng và trải nghiệm tốt hơn.

Agile cho bạn quay lại các quá trình phát triển sản phẩm trước đó để sửa lỗi và tránh việc mắc quá nhiều sai sót kỹ thuật (technical debt). Để ghé thăm Agile và DevOps cùng lúc, chúng ta cần lên trước một bản kế hoạch như sau:

  1. Tích hợp các nhóm phát triển và vận hành lại thành một nhóm, tức là “Non sông liền một dải”. Đây là cách người ta gọi là “yêu nước trong từng hành động nhỏ nhất 💖
  2. Các thành viên trong nhóm chung cần có tinh thần kiến tạo, xây dựng, sẵn sàng thảo luận và cùng đồng hành trong tất cả các vấn đề liên quan tới phát triển cũng như vận hành sản phẩm.
  3. Thay đổi cách tiếp cận với các điểm dọc đường (sprints), đánh giá các nhiệm vụ DevOps với mức độ ưu tiên tương đương với các nhiệm vụ phát triển phần mềm.
  4. Nhóm Kiểm định chất lượng cần có mặt trong tất cả các quy trình phát triển.
  5. Lựa chọn các công cụ công tác phù hợp, tránh tình trạng “lấy râu ông này, cắm cằm bà kia
  6. Tự động hoá mọi thứ có thể. Hãy thù ghét những ai thích làm bằng tay không vì lí do gì cả 🤣
  7. Đo lường và kiểm soát các bản cập nhật mới bằng những cách làm dễ hiểuđạt sự thống nhất giữa các thành viên.

Đây là những gì mà các kỹ sư cần phải làm. Còn bạn, bạn nghĩ sao về “Kế hoạch 7 bước” này? Hãy chia sẻ cùng mình nhé.

Tài liệu tham khảo 📚

Mời mọi người chuyển sang trang này để theo dõi tất cả tài liệu liên quan đến DevOps trong ngày thứ tư, để giúp bản thân có được những thông tin về DevOps và Agile.

Hẹn gặp mọi người ở những ngày tiếp theo! 🚀