Halaman

    Social Items

DevOps là gì

Dev Ops là gì?

DevOps là từ viết tắt của Development(Dev) và Operation(Ops), thể hiện môi trường hợp tác, chia sẻ nhiệm vụ giữa các nhóm kỹ sư lập trình và nhóm phát triển ứng dụng của một công ty, doanh nghiệp. Thuật ngữ DevOps(có thể tìm thấy những điều tương tự trong ALM) được sử dụng theo nhiều cách: Theo nghĩa rộng nhất, DevOps là những văn hóa hoạt động nhằm thúc đẩy sự giao tiếp, cộng tác tốt hơn giữa các nhóm. Theo cách hiểu hẹp nhất, DevOps mô tả việc áp dụng tự động hóa và phát triển phần mềm lập trình, triển khai và bảo trì cơ sở hạ tầng.

Mặc dù DevOps không phải là một công cụ(Tools) nhưng có những công cụ thường được sử dụng trong môi trường DevOps để hỗ trợ DevOps bao gồm hệ thống giám sát, xử lí sự cố theo thời gian và nhiều nền tảng phụ trợ khác.

Patrick Debois, một nhà tư vấn phát triển phần mềm, được xem là đã đưa ra thuật ngữ DevOps đầu tiên vào năm 2009 bằng cách đặt tên cho một hội nghị tên là DevOps Days. Khái niệm về DevOps sau đó đã được phổ biến với cuốn sách Dự án Phoenix năm 2013. Dự án Phoenix là một cuốn tiểu thuyết về DevOps, sử dụng một câu chuyện hư cấu làm ví dụ để giúp các nhà quản lý CNTT hiểu các khái niệm và lợi ích của việc hợp tác và chia sẻ công nghệ. Nó minh họa các vấn đề đặc hữu trong CNTT mà DevOps giải quyết được, chẳng hạn như sự phân chia nhiệm vụ phi hợp lý hay thiếu lòng tin giữa các nhà phát triển và quản trị viên CNTT hay các nhóm với nhau, ngoài ra thiếu tự động hóa dẫn đến thời gian hoàn thành và phát triển kéo dài.

Phát triển DevOps trong mô hình thác nước(Waterfall)

Trong phát triển Waterfall, các nhóm phát triển kiểm tra mã mới trong môi trường biệt lập để đảm bảo chất lượng(QA) và - nếu đáp ứng yêu cầu thì sẽ cho mã đó hoạt động, thường là trong một phần nhỏ của các phiên bản phần mềm khác nhau để có thể kiểm soát chặt chẽ quá trình phát triển ứng dụng. Nhóm có nhiệm vụ vận hành, triển khai và bảo trì, duy trì chương trình bắt đầu làm việc từ thời điểm đó. Cách tiếp cận thác nước thường mất một thời gian dài giữa các bản phát hành phần mềm và bởi vì các nhóm phát triển và vận hành làm việc riêng biệt hơn nữa nhóm phát triển không phải lúc nào cũng nhận biết được các rào cản, lỗi, bug,... có thể ngăn mã hoạt động như dự đoán.

DevOps tìm cách kết hợp việc phát triển và triển khai ứng dụng thành một quy trình hợp lý hơn, điều chỉnh quy trình và tiến độ xây dựng và phát triển, công việc của nhóm hoạt động QA và nhóm phát triển được đảm bảo hiệu quả, chất lượng và luôn luôn liên tục không bị gián đoạn. DevOps chuyển một số nhiệm vụ của nhóm này lên nhóm khác để tạo điều kiện phát triển liên tục, tích hợp liên tục, phân phối liên tục và quy trình giám sát liên tục.

Phát triển DevOps trong Agile

Agile là một quy trình phát triển phần mềm tập trung vào tốc độ để đưa sản phẩm tới người dùng một cách nhanh nhất(tuy nhiên cần đảm bảo chất lượng và sự ổn định) qua một chu trình.

DevOps trong Agile đóng vai trò cực kỳ quan trọng đảm bảo tốc độ phát triển và phân phối phần mềm trong Agile, ta có thể thấy thiếu giao tiếp, trao đổi giữa các nhóm phát triển và vận hành sẽ gây cản trở đáng kể đến tốc độ hoàn thành và cung cấp sản phẩm tới người dùng.

Muốn phát triển Agile trở nên hiệu quả hơn, rõ ràng việc các nhóm làm việc tách biệt với nhau là không hiệu quả. Trước khi có DevOps, các nhóm phát triển và vận hành đã làm việc với nhau tách biệt và hơn nữa họ đều có mỗi lãnh đạo riêng. Với DevOps cho Agile, giao tiếp giữa nhóm phát triển và vận hành sẽ đảm bảo mã(code) được quản lý bởi cả hai nhóm một cách trôi chảy mà không có thông tin sai lệch hoặc nhầm lẫn. DevOps không có mô tuýp chính thức, cũng không coi tốc độ là trọng tâm cốt lõi(tuy nhiên nếu thực hiện DevOps tốc độ sẽ được cải thiện rõ rệt).

Ưu điểm và nhược điểm của DevOps

Ưu điểm của DevOps

  • Tăng lượng thông tin liên lạc trao đổi giữa các nhóm phát triển.
  • Giảm thời gian cho toàn bộ lộ trình xây dựng và phát triển phần mềm.
  • Tập trung tự động hóa trong đường ống phân phối;
  • Sắp xếp hợp lý quy trình phát triển.

Tuy nhiên, DevOps có thể thất bại với những nhược điểm

  • Một số người nói Dev và Ops là không đủ, và nó nên bao gồm kinh doanh( BizDevOps), bảo mật(DevSecOps) và kiểm tra. DevOps phải bao gồm các nhóm khác quan trọng đối với thành công của ngành Công nghệ thông tin.
  • Những khó khăn về tổ chức khi chuyển sang tiến hành DevOps đòi hỏi những thay đổi lớn về văn hóa làm việc, đội ngũ, nhiệm vụ.... vậy nên cần có nhiều thời gian để làm quen.
  • DevOps khá vô dụng đối với những doanh nghiệp, công ty, nhóm,... 1 năm chỉ có vài sản phẩm.
  • DevOps hoạt động tốt thì cần các công cụ tự động hóa thông minh, chính xác.

Công cụ DevOps

Phần mềm tự động sẽ hỗ trợ các nhóm vận hành,phối hợp hiệu quả hơn và đáp ứng các yêu cầu thay đổi linh hoạt hơn. Tự động hóa là một trọng tâm phổ biến trong DevOps, từ bộ điều phối container đến phần mềm giám sát và thường được tìm thấy trong các quy trình tích hợp và phân phối (CI/CD) liên tục. Các loại công cụ phần mềm mới đã xuất hiện để giúp các tổ chức tự động hóa phát triển, thử nghiệm và triển khai để tạo ra một kế hoạch phát triển và phát hành hợp lý hơn.

Các kho lưu trữ mã nguồn được kiểm soát theo phiên bản mà các nhà phát triển từ nhiều nhóm có thể truy cập bất cứ khi nào cần. Các nhà phát triển có thể kiểm tra, thiết lập lại, cập nhật và hoàn nguyên về phiên bản mã trước đó nếu cần. Để giúp tự động hóa, các công cụ CI/CD có thể tự động trả lời những truy vấn của nhà phá triển. Các kho lưu trữ mã nguồn cho phép các nhà phát triển theo dõi các sửa đổi được thực hiện đối với mã nguồn và nếu không có, các nhà phát triển có thể gặp phải các vấn đề như theo dõi những thay đổi nào đã được thực hiện gần đây và có sẵn cho người dùng cuối. Các công cụ để lưu trữ mã được gọi là Git, nổi tiếng nhất là GitHub.

Các kho lưu trữ ảo cho phép các đầu ra dựa trên đối tượng kiểm soát phiên bản. Quản lý kho lưu trữ ảo là một cách thực hành tốt vì những lý do tương tự như quản lý kho mã nguồn được kiểm soát. Các công cụ phổ biến để quản lý kho lưu trữ ảo bao gồm Kho lưu trữ JFrog hoặc Nexus.

Jenkins là một công cụ phổ biến được sử dụng cho các đường ống CI/CD, cũng như Travis CI. CI/CD cho phép các nhóm DevOps thường xuyên xác nhận và cung cấp các ứng dụng cho người dùng cuối thông qua tự động hóa và di chuyển mã liên tục trong suốt vòng đời phát triển. Tích hợp liên tục cho phép các nhà phát triển tạo, kiểm tra và xác thực mã vào kho lưu trữ được chia sẻ hàng ngày, nếu không nhiều lần trong ngày. Các cặp phân phối liên tục với CI, cho phép kiểm tra mức sản xuất và thiết lập cấu hình nhiều hơn. Sau khi được phê duyệt, mã từ các đường ống CI/CD được triển khai vào môi trường sản xuất trực tiếp bởi các nhóm hoạt động. Việc triển khai liên tục gọi kiểm tra, cấu hình và cung cấp tự động, với quản lý phát hành và giám sát với khả năng khôi phục tự động.

Các container là các gói phần mềm có thể triển khai dựa biệt lập để chạy các ứng dụng trên HĐH chung. Các container cung cấp sự trừu tượng hóa cho phép mã chuyển từ phát triển sang thử nghiệm và sau đó là phân phối mà không cần quan tâm đến những thay đổi trong cơ sở hạ tầng bên dưới. Các công cụ container phổ biến bao gồm Docker, Microsoft Hyper-V và Windows Server container. Bộ điều phối container, chẳng hạn như Kubernetes, có thể giúp tự động hóa, triển khai, mở rộng và duy trì các container.

Các hệ thống quản lý cấu hình, như Puppet và Chef hỗ trợ cung cấp máy chủ và xác định cấu hình phần mềm, phần mềm trung gian và cơ sở hạ tầng. Ví dụ, quản trị viên có thể sử dụng các công cụ quản lý cấu hình để thiết lập và thực thi các chính sách trên máy chủ, tự động tạo thiết lập triển khai phù hợp cho các bản phát hành mã.

Ngoài ra, các công cụ giám sát như Nagios có thể được sử dụng để quan sát hiệu suất và bảo mật của việc phát hành mã trên các hệ thống, mạng và cơ sở hạ tầng. Các công cụ phân tích như Splunk có thể được sử dụng cho trí thông minh nhân tạo hoạt động.

DevOps với tư cách là một dịch vụ là một mô hình phân phối cho một bộ công cụ tạo điều kiện cho sự hợp tác giữa nhóm phát triển và nhóm vận hành phần mềm của tổ chức. Trong mô hình phân phối này, DevOps với tư cách là nhà cung cấp dịch vụ lắp ráp một bộ công cụ và xử lý tất cả các chức năng của chúng để bao quát liền mạch toàn bộ quá trình tạo, phân phối và bảo trì mã.

Kỹ năng DevOps

Kỹ sư DevOps chưa được xem là một ngành nghề và một chuyên gia DevOps có thể là những người không liên quan đến công nghệ thông tin. DevOps thường được coi là thiên về triết lý và văn hóa hợp tác trong IT. Chuyên môn CNTT có kiến thức rất rộng, vậy nên DevOps phù hợp với các chuyên gia CNTT hơn những chuyên gia không có chuyên môn IT.

Ví dụ, một kỹ sư DevOps có thể bắt đầu như một nhà phát triển phần mềm, thành thạo các kỹ năng trên toàn bộ từ mã(code) đến quản lí. Ngược lại, một kỹ sư DevOps có thể đi lên từ vai trò quản trị viên hệ thống vì họ có kiến ​​thức về mã hóa, quy trình, tích hợp và kiểm tra.

Trách nhiệm của các kỹ sư DevOps là thay đổi quy trình kinh doanh khi cần thiết để giải quyết các vấn đề tổ chức để cải thiện hiệu quả kinh đoan.

Chứng nhận kỹ năng DevOps ở đâu

Red Hat là một trong ít những tổ chức cung cấp chứng nhận DevOps. Các khóa học và bài kiểm tra của Red Hat được thiết kế để kiểm tra chuyên môn trong các công nghệ có liên quan như container, OpenShift và Puppet.

DevOps là gì? Tại sao lại cần cho doanh nghiệp phần mềm

DevOps là gì

Dev Ops là gì?

DevOps là từ viết tắt của Development(Dev) và Operation(Ops), thể hiện môi trường hợp tác, chia sẻ nhiệm vụ giữa các nhóm kỹ sư lập trình và nhóm phát triển ứng dụng của một công ty, doanh nghiệp. Thuật ngữ DevOps(có thể tìm thấy những điều tương tự trong ALM) được sử dụng theo nhiều cách: Theo nghĩa rộng nhất, DevOps là những văn hóa hoạt động nhằm thúc đẩy sự giao tiếp, cộng tác tốt hơn giữa các nhóm. Theo cách hiểu hẹp nhất, DevOps mô tả việc áp dụng tự động hóa và phát triển phần mềm lập trình, triển khai và bảo trì cơ sở hạ tầng.

Mặc dù DevOps không phải là một công cụ(Tools) nhưng có những công cụ thường được sử dụng trong môi trường DevOps để hỗ trợ DevOps bao gồm hệ thống giám sát, xử lí sự cố theo thời gian và nhiều nền tảng phụ trợ khác.

Patrick Debois, một nhà tư vấn phát triển phần mềm, được xem là đã đưa ra thuật ngữ DevOps đầu tiên vào năm 2009 bằng cách đặt tên cho một hội nghị tên là DevOps Days. Khái niệm về DevOps sau đó đã được phổ biến với cuốn sách Dự án Phoenix năm 2013. Dự án Phoenix là một cuốn tiểu thuyết về DevOps, sử dụng một câu chuyện hư cấu làm ví dụ để giúp các nhà quản lý CNTT hiểu các khái niệm và lợi ích của việc hợp tác và chia sẻ công nghệ. Nó minh họa các vấn đề đặc hữu trong CNTT mà DevOps giải quyết được, chẳng hạn như sự phân chia nhiệm vụ phi hợp lý hay thiếu lòng tin giữa các nhà phát triển và quản trị viên CNTT hay các nhóm với nhau, ngoài ra thiếu tự động hóa dẫn đến thời gian hoàn thành và phát triển kéo dài.

Phát triển DevOps trong mô hình thác nước(Waterfall)

Trong phát triển Waterfall, các nhóm phát triển kiểm tra mã mới trong môi trường biệt lập để đảm bảo chất lượng(QA) và - nếu đáp ứng yêu cầu thì sẽ cho mã đó hoạt động, thường là trong một phần nhỏ của các phiên bản phần mềm khác nhau để có thể kiểm soát chặt chẽ quá trình phát triển ứng dụng. Nhóm có nhiệm vụ vận hành, triển khai và bảo trì, duy trì chương trình bắt đầu làm việc từ thời điểm đó. Cách tiếp cận thác nước thường mất một thời gian dài giữa các bản phát hành phần mềm và bởi vì các nhóm phát triển và vận hành làm việc riêng biệt hơn nữa nhóm phát triển không phải lúc nào cũng nhận biết được các rào cản, lỗi, bug,... có thể ngăn mã hoạt động như dự đoán.

DevOps tìm cách kết hợp việc phát triển và triển khai ứng dụng thành một quy trình hợp lý hơn, điều chỉnh quy trình và tiến độ xây dựng và phát triển, công việc của nhóm hoạt động QA và nhóm phát triển được đảm bảo hiệu quả, chất lượng và luôn luôn liên tục không bị gián đoạn. DevOps chuyển một số nhiệm vụ của nhóm này lên nhóm khác để tạo điều kiện phát triển liên tục, tích hợp liên tục, phân phối liên tục và quy trình giám sát liên tục.

Phát triển DevOps trong Agile

Agile là một quy trình phát triển phần mềm tập trung vào tốc độ để đưa sản phẩm tới người dùng một cách nhanh nhất(tuy nhiên cần đảm bảo chất lượng và sự ổn định) qua một chu trình.

DevOps trong Agile đóng vai trò cực kỳ quan trọng đảm bảo tốc độ phát triển và phân phối phần mềm trong Agile, ta có thể thấy thiếu giao tiếp, trao đổi giữa các nhóm phát triển và vận hành sẽ gây cản trở đáng kể đến tốc độ hoàn thành và cung cấp sản phẩm tới người dùng.

Muốn phát triển Agile trở nên hiệu quả hơn, rõ ràng việc các nhóm làm việc tách biệt với nhau là không hiệu quả. Trước khi có DevOps, các nhóm phát triển và vận hành đã làm việc với nhau tách biệt và hơn nữa họ đều có mỗi lãnh đạo riêng. Với DevOps cho Agile, giao tiếp giữa nhóm phát triển và vận hành sẽ đảm bảo mã(code) được quản lý bởi cả hai nhóm một cách trôi chảy mà không có thông tin sai lệch hoặc nhầm lẫn. DevOps không có mô tuýp chính thức, cũng không coi tốc độ là trọng tâm cốt lõi(tuy nhiên nếu thực hiện DevOps tốc độ sẽ được cải thiện rõ rệt).

Ưu điểm và nhược điểm của DevOps

Ưu điểm của DevOps

  • Tăng lượng thông tin liên lạc trao đổi giữa các nhóm phát triển.
  • Giảm thời gian cho toàn bộ lộ trình xây dựng và phát triển phần mềm.
  • Tập trung tự động hóa trong đường ống phân phối;
  • Sắp xếp hợp lý quy trình phát triển.

Tuy nhiên, DevOps có thể thất bại với những nhược điểm

  • Một số người nói Dev và Ops là không đủ, và nó nên bao gồm kinh doanh( BizDevOps), bảo mật(DevSecOps) và kiểm tra. DevOps phải bao gồm các nhóm khác quan trọng đối với thành công của ngành Công nghệ thông tin.
  • Những khó khăn về tổ chức khi chuyển sang tiến hành DevOps đòi hỏi những thay đổi lớn về văn hóa làm việc, đội ngũ, nhiệm vụ.... vậy nên cần có nhiều thời gian để làm quen.
  • DevOps khá vô dụng đối với những doanh nghiệp, công ty, nhóm,... 1 năm chỉ có vài sản phẩm.
  • DevOps hoạt động tốt thì cần các công cụ tự động hóa thông minh, chính xác.

Công cụ DevOps

Phần mềm tự động sẽ hỗ trợ các nhóm vận hành,phối hợp hiệu quả hơn và đáp ứng các yêu cầu thay đổi linh hoạt hơn. Tự động hóa là một trọng tâm phổ biến trong DevOps, từ bộ điều phối container đến phần mềm giám sát và thường được tìm thấy trong các quy trình tích hợp và phân phối (CI/CD) liên tục. Các loại công cụ phần mềm mới đã xuất hiện để giúp các tổ chức tự động hóa phát triển, thử nghiệm và triển khai để tạo ra một kế hoạch phát triển và phát hành hợp lý hơn.

Các kho lưu trữ mã nguồn được kiểm soát theo phiên bản mà các nhà phát triển từ nhiều nhóm có thể truy cập bất cứ khi nào cần. Các nhà phát triển có thể kiểm tra, thiết lập lại, cập nhật và hoàn nguyên về phiên bản mã trước đó nếu cần. Để giúp tự động hóa, các công cụ CI/CD có thể tự động trả lời những truy vấn của nhà phá triển. Các kho lưu trữ mã nguồn cho phép các nhà phát triển theo dõi các sửa đổi được thực hiện đối với mã nguồn và nếu không có, các nhà phát triển có thể gặp phải các vấn đề như theo dõi những thay đổi nào đã được thực hiện gần đây và có sẵn cho người dùng cuối. Các công cụ để lưu trữ mã được gọi là Git, nổi tiếng nhất là GitHub.

Các kho lưu trữ ảo cho phép các đầu ra dựa trên đối tượng kiểm soát phiên bản. Quản lý kho lưu trữ ảo là một cách thực hành tốt vì những lý do tương tự như quản lý kho mã nguồn được kiểm soát. Các công cụ phổ biến để quản lý kho lưu trữ ảo bao gồm Kho lưu trữ JFrog hoặc Nexus.

Jenkins là một công cụ phổ biến được sử dụng cho các đường ống CI/CD, cũng như Travis CI. CI/CD cho phép các nhóm DevOps thường xuyên xác nhận và cung cấp các ứng dụng cho người dùng cuối thông qua tự động hóa và di chuyển mã liên tục trong suốt vòng đời phát triển. Tích hợp liên tục cho phép các nhà phát triển tạo, kiểm tra và xác thực mã vào kho lưu trữ được chia sẻ hàng ngày, nếu không nhiều lần trong ngày. Các cặp phân phối liên tục với CI, cho phép kiểm tra mức sản xuất và thiết lập cấu hình nhiều hơn. Sau khi được phê duyệt, mã từ các đường ống CI/CD được triển khai vào môi trường sản xuất trực tiếp bởi các nhóm hoạt động. Việc triển khai liên tục gọi kiểm tra, cấu hình và cung cấp tự động, với quản lý phát hành và giám sát với khả năng khôi phục tự động.

Các container là các gói phần mềm có thể triển khai dựa biệt lập để chạy các ứng dụng trên HĐH chung. Các container cung cấp sự trừu tượng hóa cho phép mã chuyển từ phát triển sang thử nghiệm và sau đó là phân phối mà không cần quan tâm đến những thay đổi trong cơ sở hạ tầng bên dưới. Các công cụ container phổ biến bao gồm Docker, Microsoft Hyper-V và Windows Server container. Bộ điều phối container, chẳng hạn như Kubernetes, có thể giúp tự động hóa, triển khai, mở rộng và duy trì các container.

Các hệ thống quản lý cấu hình, như Puppet và Chef hỗ trợ cung cấp máy chủ và xác định cấu hình phần mềm, phần mềm trung gian và cơ sở hạ tầng. Ví dụ, quản trị viên có thể sử dụng các công cụ quản lý cấu hình để thiết lập và thực thi các chính sách trên máy chủ, tự động tạo thiết lập triển khai phù hợp cho các bản phát hành mã.

Ngoài ra, các công cụ giám sát như Nagios có thể được sử dụng để quan sát hiệu suất và bảo mật của việc phát hành mã trên các hệ thống, mạng và cơ sở hạ tầng. Các công cụ phân tích như Splunk có thể được sử dụng cho trí thông minh nhân tạo hoạt động.

DevOps với tư cách là một dịch vụ là một mô hình phân phối cho một bộ công cụ tạo điều kiện cho sự hợp tác giữa nhóm phát triển và nhóm vận hành phần mềm của tổ chức. Trong mô hình phân phối này, DevOps với tư cách là nhà cung cấp dịch vụ lắp ráp một bộ công cụ và xử lý tất cả các chức năng của chúng để bao quát liền mạch toàn bộ quá trình tạo, phân phối và bảo trì mã.

Kỹ năng DevOps

Kỹ sư DevOps chưa được xem là một ngành nghề và một chuyên gia DevOps có thể là những người không liên quan đến công nghệ thông tin. DevOps thường được coi là thiên về triết lý và văn hóa hợp tác trong IT. Chuyên môn CNTT có kiến thức rất rộng, vậy nên DevOps phù hợp với các chuyên gia CNTT hơn những chuyên gia không có chuyên môn IT.

Ví dụ, một kỹ sư DevOps có thể bắt đầu như một nhà phát triển phần mềm, thành thạo các kỹ năng trên toàn bộ từ mã(code) đến quản lí. Ngược lại, một kỹ sư DevOps có thể đi lên từ vai trò quản trị viên hệ thống vì họ có kiến ​​thức về mã hóa, quy trình, tích hợp và kiểm tra.

Trách nhiệm của các kỹ sư DevOps là thay đổi quy trình kinh doanh khi cần thiết để giải quyết các vấn đề tổ chức để cải thiện hiệu quả kinh đoan.

Chứng nhận kỹ năng DevOps ở đâu

Red Hat là một trong ít những tổ chức cung cấp chứng nhận DevOps. Các khóa học và bài kiểm tra của Red Hat được thiết kế để kiểm tra chuyên môn trong các công nghệ có liên quan như container, OpenShift và Puppet.