DevOps là gì? Tổng quan về văn hóa DevOps

31 tháng 3, 2021 By DEVERA ACADEMY

Điểm chung của các công ty cực kỳ thành công như Amazon, Target, Esty, Netflix, Google và Walmart là gì? Họ sử dụng một giải pháp được gọi là DevOps trong các quy trình hàng ngày để tăng hiệu quả công việc.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu DevOps là gì? Tại DevOps lại được áp dụng rộng rãi? Tìm hiểu về lịch sử phát triển của DevOps, những lợi ích mà DevOps đem lại cho tổ chức và các tools được sử dụng trong DevOps.


1. DevOps là gì? Tại sao nó lại được sử dụng rộng rãi?

Đầu tiên để hiểu được DevOps là gì? Chúng ta hãy cùng đến với một ví dụ minh họa nhỏ. Giả sử có một công ty khởi nghiệp chế tạo robot dọn dẹp có sự hỗ trợ của AI. Việc chế tạo robot được phân ra cho 2 team: 3 developer (Đội D) là những người viết và thực thi code để tạo ra robot, 2 người vận hành (Đội O), những người duy trì cơ sở hạ tầng cho robot trong môi trường thế giới thực và hỗ trợ người dùng robot.

Đội D vừa trải qua 8 tháng để tạo ra một con robot có thể nhận diện mọi người, hiểu lệnh từ thiết bị Alexa và đảm bảo mọi thứ đã hoạt động trơn tru. Đội D đã dành hết thời gian tạo ra robot này trong môi trường dev dưới sự kiểm soát hoàn hảo. 

Sau đó, sản phẩm được giao lại cho Đội O để tiến hành đưa nó ra hoạt động trong thế giới thực - nơi các vấn đề bắt đầu xảy ra. Robot không thể nhận diện được tất cả mọi người, khi lệnh được đưa ra bởi những người khác nhau thì khả năng tuân theo các lệnh của Alexa bị phá vỡ và robot tạo ra không thể dọn dẹp sạch những kệ đồ phức tạp.

Đội O đã chờ đợi đội D hoàn thiện robot này trong một khoảng thời gian dài 8 tháng, họ không thể tin rằng thứ họ chờ đợi là một thảm họa gây ra sự thất vọng và có thể là tức giận. Mặt khác, đội D tin rằng mọi thứ đều hoạt động hoàn hảo bởi nó đã được thử nghiệm và kiểm soát, không thể tránh khỏi việc nghĩ rằng tình trạng lộn xộn chắc hẳn là do Đội O thực hiện không tốt.

Việc chia ra làm 2 nhóm như vậy tốn rất nhiều thời gian trước khi sản phẩm được tung ra thị trường, chưa kể đến có thể gây ra hiềm khích giữa các nhóm với nhau.


Tóm lại, đó là lý do DevOps được tạo ra và tại sao hơn 70% SMB (Doanh nghiệp vừa và nhỏ) đang áp dụng văn hóa DevOps trong công ty của họ. DevOps giúp công việc trở nên hiệu quả khi Đội D và Đội O đã làm việc với nhau ngay từ khi bắt đầu lên kế hoạch, thực hiện cho đến khi ra mắt sản phẩm đến người dùng và hỗ trợ họ. 


Có thể thấy trong ví dụ kể trên, họ đang làm việc một cách tách biệt với một ranh giới vô hình. Bởi Đội O không biết điều gì diễn ra khi code đang được viết và robot đang được chế tạo, trong khi Đội D hoàn toàn không có sự liên quan nào sau khi robot xuất xưởng để đưa vào thực tế sử dụng. Kết quả là một con robot chưa đủ điều kiện để đến với thị trường và nhóm developer chắc chắn vẫn chưa nắm được tình hình để đưa ra cách giải quyết.


Cứ tưởng tượng đến khi nâng cấp để cho ra một phiên bản robot có thể sẵn sàng đưa ra thị trường sẽ là nhiều lần lặp lại việc Đội D thực hiện thay đổi và Đội O lại đưa robot ra thế giới thực để tiếp tục kiểm tra. Và vấn đề tương tự này sẽ tiếp diễn khi robot cần được bảo trì và nâng cấp. Kết quả là gì? Cả quy trình trở nên chậm chạp và kém hiệu quả, khó có thể so sánh với các công ty đưa sản phẩm cao cấp ra thị trường nhanh hơn.


Đặc biệt khi công nghệ ngày càng tiên tiến, thì đây chính là vấn đề mà các công ty phải nhìn nhận thấy. Việc tách biệt nhóm vận hành và nhóm phát triển (operations and development teams) dẫn đến việc phân phối chậm các sản phẩm và dịch vụ. Hơn nữa, do hoạt động riêng rẽ nên việc tự động hóa quy trình hoạt động là rất ít, do nhóm phát triển gồm những developer hoàn toàn không nắm được cách thức hoạt động của toàn bộ quy trình.

Để khắc phục những điều đó, khái niệm DevOps xuất hiện và bắt đầu được áp dụng rộng rãi. DevOps là sự kết hợp giữa các nguyên lý, thực tiễn và công cụ giúp cho một tổ chức hiệu quả hơn trong quá trình phát triển sản phẩm bằng cách tích hợp giữa phát triển sản phẩm và vận hành sản phẩm giúp các công ty tạo ra được lợi thế cạnh tranh.

2. DevOps đã phát triển như thế nào?

DevOps, cũng giống như hầu hết các nguyên lý và công cụ có tính ứng dụng thực tế. Nó bắt đầu từ một loạt các ý tưởng và nguyên tắc được tập hợp lại, sau đó trở thành một khái niệm chính thức cùng với những quy trình và công cụ đặc trưng.

Năm 2007, một người quản lý dự án tên là Patrick Debois làm việc với chính phủ Bỉ để giúp di chuyển trung tâm dữ liệu. Anh ta cảm thấy thấy toàn bộ quá trình vô cùng khó chịu vì bức tường ngăn giữa developer và nhóm vận hành khiến công việc trở nên khó khăn. Và Debois là một người đặt sự tin tưởng lớn vào phương pháp agile - phương pháp lặp đi lặp lại liên tục của quá trình phát triển và thử nghiệm trong suốt vòng đời phát triển sản phẩm, giúp các nhóm phát triển và vận hành làm việc đồng bộ với nhau.

Năm 2008, Andrew Schafer (người sau này được biết đến như một nhà truyền bá DevOps) cùng Debois tham dự một hội nghị để thảo luận về ý tưởng và những nguyên tắc ban đầu, xung quanh thứ được gọi là “agile systems administration”. Họ cũng thành lập một nhóm agile administrator và đây chính là khởi đầu của DevOps.


Một sự kiện mang tính bước ngoặt trong lịch sử phát triển của DevOps là bài thuyết trình nổi tiếng hiện nay của Flickr, John Allspaw (Phó Giám đốc hoạt động kỹ thuật) và Paul Hammond (Giám đốc Kỹ thuật) tại hội nghị O'Reilly Velocity năm 2009. Với một màn trình diễn nhập vai vui nhộn, Hammond và Allspaw đưa ra thực tế về sự thua lỗ kinh doanh lớn với nguyên nhân là bức tường giữa phát triển và vận hành sản phẩm và một lối thoát duy nhất là sự hợp nhất giữa hai bên.

Bài thuyết trình này được coi là "thời khắc lịch sử" của DevOps, nó giúp thế giới công nghệ nhận ra sự tích hợp là rất cần thiết và truyền cảm hứng cho Debois tổ chức một hội nghị DevOps có tên là Devopsdays ở Bỉ.


Một thời điểm cũng không kém quan trọng khác trong sự phát triển của DevOps là hội nghị DevOps đầu tiên ở Hoa Kỳ được tổ chức vào năm 2010 tại Mountain View, California - nơi được mệnh danh là Thánh địa của công nghệ, như một sự khẳng định chắc chắn cho sự tồn tại và phát triển của DevOps. 


Tính đến năm 2018, đã có hơn 30 hội nghị DevOps trên khắp thế giới.


3. Việc sử dụng DevOps mang lại lợi ích như thế nào cho một tổ chức?

DevOps thực sự tạo ra sự khác biệt lớn đối với cách một công ty công nghệ hoạt động. 

Tăng tốc quá trình đổi mới

DevOps cho phép các công ty phát triển và triển khai sản phẩm nhanh hơn. Trong ví dụ trước, thời gian của một chu kỳ trở nên dài hơn đáng kể khi có một bức tường giữa phát triển và vận hành sản phẩm. Khi cả hai được tích hợp, các vấn đề cần giải quyết mỗi lần được chia nhỏ và cũng ít phức tạp hơn. Hơn nữa, các thành viên trong nhóm có thể thực hiện các thay đổi một cách dễ dàng vì họ chỉ cần xem những đoạn code mới nhất vừa được thêm. 

Hợp tác

Bức tường giữa phát triển và vận hành thường dẫn đến vấn đề hai nhóm không tin tưởng lẫn nhau ảnh hưởng lâu dài đến tinh thần và động lực của mọi người. Phương pháp DevOps dẫn đến sự hợp tác giữa hai nhóm, nơi họ cùng một niềm đam mê để đạt được các mục tiêu chung. Tạo một môi trường làm việc tích cực, nơi có thể đạt được kết quả nhanh hơn và hiệu quả hơn giúp nâng cao sự hài lòng trong công việc.

Tin cậy

Trước khi DevOps xuất hiện, cập nhật một ứng dụng để đáp ứng nhu cầu thay đổi của người dùng là một cơn ác mộng. Với các công cụ DevOps dùng tích hợp và phân phối liên tục, chúng ta có thể dễ dàng kiểm tra chức năng cũng như lưu ý đến tính bảo mật và chất lượng của phần mềm. Các quy trình giám sát và theo dõi các số liệu hiệu suất thời gian thực giúp duy trì độ tin cậy của phần mềm.

Bảo mật

Nếu không có DevOps, bạn thường phải cân bằng giữa tốc độ và bảo mật, làm mất nhiều thời gian cho việc delivery. Với DevOps, bạn có thể sử dụng các chính sách tuân thủ tự động, kiểm soát chi tiết và kỹ thuật quản lý cấu hình để duy trì tốc độ mà không ảnh hưởng đến bảo mật.

Khả năng mở rộng

DevOps bắt đầu phát triển mạnh mẽ khi các công ty như Google, Amazon và Youtube bắt đầu cảm thấy khó khăn hơn trong việc quản lý công nghệ của họ trên quy mô lớn. Tính tự động hóa và tính nhất quán đi kèm với DevOps cho phép bạn quản lý và thay đổi các hệ thống phức tạp một cách hiệu quả.

4. Một vài DevOps Tools

Để triển khai các phương pháp của DevOps, một số công cụ nhất định đã được phát triển để tự động hóa và tạo điều kiện thuận lợi cho các quy trình DevOps khác nhau. Nhưng DevOps ở đây không phải là công cụ. 

Bằng sự phát triển trong vài năm qua, một số công nghệ không thuộc phạm vi khái niệm DevOps ban đầu giờ đã trở thành một phần không thể thiếu. Đã có sự bùng nổ của các công cụ DevOps cho các phương pháp DevOps khác nhau trong những năm gần đây: 

Release Tools

  • Jenkins

  • Travis

  • TeamCity

  • Bamboo

Configuration Management Tools

  • Puppet

  • Chef

  • Ansible

  • Cfengine

  • Saltstack

Orchestration Tools

  • Zookeeper

  • Noah

  • Mesos

Monitoring, Virtualization and Containerization Tools

  • AWS

  • OpenStack

  • Vagrant

  • Docker

  • New Relic

  • Sensu

  • Spunk

  • Nagios

Coding Tools

  • Jira

  • Git

  • Eclipse

Testing Tools

  • JUnit

  • Zephyr

  • Selenium

  • Vagrant

  • SoapUI

5. Chìa khóa của việc áp dụng hiệu quả DevOps

Việc áp dụng DevOps trên phạm vi tổ chức đòi hỏi sự thay đổi về mặt triết lý, văn hóa cộng tác và việc triển khai thực tế các công cụ và phương pháp. 


Nếu một tổ chức chỉ đơn giản là áp dụng triết lý cộng tác để nhận được hiệu quả từ DevOps mà không trải qua những khó khăn của việc đem nó vào thực tế thì DevOps sẽ vẫn là một triết lý không hơn không kém. Đồng thời, việc chỉ áp dụng các phương pháp và công cụ DevOps mà không có triết lý và văn hóa DevOps thì cũng vô ích.

Mấu chốt của việc áp dụng thành công DevOps trong một tổ chức là việc thúc đẩy sự hợp tác giữa nhóm phát triển sản phẩm và nhóm vận hành sản phẩm. Chỉ sau khi họ đã hoàn thành xác định mục tiêu chung thì các phương pháp và các công cụ DevOps mới trở nên cần thiết và tỏ ra hiệu quả.


Tác giả: Harsh Binani

Dịch bởi Devera Academy