11/08/2018, 19:33

DevOps là gì? Liệu nó có phải là một văn hoá?

Đầu tiên, chúng ta phải xác định là sẽ không có câu trả lời dứt khoát. Tuy nhiên có rất nhiều ý kiến về việc có những gì chứa trong thuật ngữ DevOps. Liệu nó có phải là một văn hóa? Nó là một chức danh công việc? Nó là một cách tổ chức? Hay chỉ là một cách nghĩ? Chúng tôi nghĩ rằng ...

Đầu tiên, chúng ta phải xác định là sẽ không có câu trả lời dứt khoát. Tuy nhiên có rất nhiều ý kiến về việc có những gì chứa trong thuật ngữ DevOps. Liệu nó có phải là một văn hóa? Nó là một chức danh công việc? Nó là một cách tổ chức? Hay chỉ là một cách nghĩ? Chúng tôi nghĩ rằng nó là một phong trào vẫn còn đang phát triển nên chúng ta đừng nên bị mắc kẹt vào việc hạn chế nó quá nhiều ngay bây giờ. Thay vào đó, chúng ta có thể nói về một số trong những chủ đề phổ biến, cũng như các công cụ và ý tưởng.

Nảy sinh từ nhu cầu cần phải cải thiện khả năng cung cấp dịch vụ IT một cách nhanh chóng, phong trào DevOps nhấn mạnh tính chất giao tiếp, cộng tác và tích hợp giữa các nhà phát triển phần mềm và các IT operation. Thay vì nhìn thấy hai nhóm này luôn đi cùng với nhau nhưng không thực sự làm việc cùng nhau, DevOps nhận ra sự phụ thuộc lẫn nhau của phát triển phần mềm và IT operation và giúp một tổ chức sản xuất ra các phần mềm và dịch vụ IT một cách nhanh chóng hơn, với sự lặp lại thường xuyên.

Cơn bão hoàn hảo (Perfect Storm) xảy ra vào năm 2009

Một cơn bão hoàn hảo hội tụ các phương pháp có nhiều điểm chung bao gồm Agile, Operations Management (Systems Thinking & Dynamics), Theory of Constraints, LEAN và IT Service Management xuất hiện cùng nhau vào năm 2009 thông qua các hội nghị, buổi nói chuyện và trên mạng xã hội Twitter (#devops) được tranh luận trên một phạm vi rộng khắp thế giới mà cuối cùng đã trở thành triết lý đằng sau DevOps.

Phương pháp phát triển phần mềm Agile mở đường, chuyển từ phương pháp phát triển phần mềm kiểu thác nước (waterfall) hướng tới một chu kỳ phát triển liên tục (continuous development). Nhưng nó vẫn chưa bao gồm mặt operation vì vậy trong khi phát triển có thể được liên tục, nhưng triển khai vẫn còn theo hướng thác nước (waterfall).

Trong một môi trường DevOps, chức năng chéo, việc chia sẻ trách nhiệm và sự tin tưởng được đề cao. DevOps là sự mở rộng các mục tiêu phát triển liên tục của phong trào Agile để tích hợp và phát hành liên tục. Để thích ứng với việc phát hành liên tục (continuous releases), DevOps khuyến khích tự động hóa các quá trình thay đổi, cấu hình và phát hành.

Các ứng dụng hiện đại trong và ngoài đám mây

DevOps tìm thấy lực kéo ban đầu trong nhiều nhà cung cấp dịch vụ điện toán đám mây lớn. Với các ứng dụng hiện đại chạy trong đám mây (cloud), phần lớn những gì từng được coi là hạ tầng thì bây giờ là một phần của code. Các WebOps lớn như Google, Amazon, Twitter và Etsy được biết là phải triển khai nhiều lần trong một ngày. Để triển khai thường xuyên, bạn phải chắc chắn là mình sẽ không làm hỏng những gì đã làm việc ổn định trước đó. DevOps giúp đảm bảo triển khai thường xuyên với một tỷ lệ thất bại rất thấp.

Các công ty thuộc mọi quy mô đang bắt đầu thực hiện các practice DevOps, trong một cuộc khảo sát năm 2012 của Puppet Labs and IT Revolution Press cho thấy rằng 63% của hơn 4.000 công ty được hỏi đang thực thi các practice DevOps. Và rất nhiều công ty nhỏ, đặc biệt là các startup, đã “làm DevOps” mà không gọi nó là DevOps trong một thời gian dài.

Các công cụ DevOps

Bản tuyên ngôn Agile nhấn mạnh về các cá nhân và sự tương tác thông qua các quy trình và công cụ, nhưng DevOps đồng thời nhấn mạnh sự cộng tác và tích hợp, và cũng trông vào các công cụ tự động hóa để tận dụng một cơ sở hạ tầng có thể lập trình và năng động từ góc độ vòng đời sản phẩm. Việc kiểm soát phiên bản và tự động triển khai code là hai trong số những công cụ phổ biến và có ảnh hưởng mạnh nhất, nhưng còn có rất nhiều vấn đề khác bao gồm quản lý cấu hình, hệ thống ticket, theo dõi và dự phòng.

Tại sao lại cần DevOps?

Những lợi ích của phương pháp DevOps là rất nhiều, bao gồm:

  • Nâng cao tần suất triển khai, điều này có thể dẫn đến thời gian đưa sản phẩm ra thị trường nhanh hơn.
  • Tỷ lệ thất bại thấp hơn
  • Rút ngắn thời gian phát triển
  • Thời gian phục hồi nhanh hơn

Techtalk via Techmaster

0