Xin chào mọi người, nếu bạn đang muốn tìm hiểu về DevOps thì hãy bằng đầu cùng mình nhé!
DevOps là gì?
DevOps không phải là một công cụ, phần mềm hoặc một ngôn ngữ lập trình nào đó. Nếu search google bạn có thể thấy nó được định nghĩa như sau:
*DevOps is a set of practices that combines software development and IT operations.*
DevOps là một tập hợp các hoạt động để kết hợp software development và IT operations.
*It aims to shorten the systems development life cycle and provide continuous delivery with high software quality.*
Nó nhằm mục đích rút ngắn vòng đời phát triển phần mềm và cho phép phân phối phần mềm liên tục với chất lượng cao.
*DevOps is complementary with Agile software development; several DevOps aspects came from the Agile way of working*
DevOps bổ sung cho phương pháp Agile; một số khía cạnh DevOps đến từ cách làm việc Agile
Có thể nói một cách ngắn gọn DevOps là con đường để làm mọi thứ theo cách thông mình hơn khi phát triển phần mềm.
Dưới đây là 1 ví dụ cụ thể để tụi mình có thể hình dung vai trò của DevOps trong quy trình phát triển 1 phần mềm:
1 công ty sản xuất phần mềm có 2 bộ phận:
- Team Development: (Developer, Designer, BrSe, BA, QC,…) chịu trách nhiệm lên kế hoạch (planning), thiết kế và xây dựng sản phẩm từ con số 0
- Team Operation: (System Administrator, System Engineer, Network Engineer, Security Engineer,..) chịu trách nhiệm kiểm tra, đánh giá và triển khai sản phẩm (được develop từ team Development) đến cho người dùng. Ngoài ra Operation team cũng sẽ gửi feedback (bug, tính năng) cho team Development để tiếp tục fix hoặc cải tiến sản phẩm.
Vấn đề: Sẽ có 1 khoảng thời gian chờ để team Development nhận được feedback từ team Operation. Điều này sẽ làm quá trình phát triển sản phẩm bị gián đoạn và mất nhiều thời gian hơn.
Đây là lúc khái niệm DevOps xuất hiện để giải quyết vấn đề trên.
Như đã đề cập ở trên, DevOps bổ sung cho phương pháp Agile, một số khía cạnh DevOps đến từ cách làm việc Agile:
Bắt đầu sprint:
- Plan: Lên kế hoạch và thiết kế tính năng sẽ phát triển trong sprint
- Code: coding chức năng/fix bug theo kế hoạch ở trên
- Build: đóng gói các output của quá trình coding bằng cách build
- Test: kiểm thử trên bản build trên môi trường development (dev)
- Release (Integrate): sau khi bản build ở môi trường dev pass, bản release sẽ được gửi đến team Operation để build và test 1 lần nữa
- Deploy: triển code lên các môi trường STG/PRD
- Operate: duy trì và vận hành sản phẩm
- Monitor: đo lường và theo dõi sản phẩm để có được feedback cho sprint sau
Kết thúc sprint.
Bắt đầu sprint mới…
Một case study thực tế đó là Netflix. Năm 2007, Netflix ra mắt dịch vụ streaming video. Tại thời điểm năm 2014, họ đã ước tính rằng mỗi khi hệ thống bị sập trong khoảng 1 giờ thì sẽ tiêu tốn khoảng 200.000 USD. Nhưng giờ thì Netflix đã có thể giải quyết vấn đề đấy bằng cách chọn áp dụng DevOps để phát triển sản phẩm. Cụ thể là họ phát triển 1 tool có tên là Simian Army, cái sẽ liên tục tạo ra bugs trong 1 môi trường Dev. Điều này khiến các developer của Netflix có động lực để xây dựng một hệ thống không dễ bị đổ vỡ khi có bất kì điều gì xảy ra.
Trên đây là những gì mình rút ra được theo cách mình hiểu trong quá trình tự học DevOps. Nếu có chỗ nào chưa đúng hi vọng các bạn sẽ comment phía dưới để giúp mình học tốt hơn nhé. Cảm ơn mọi người đã xem!
Tham khảo
Nguồn: viblo.asia