Tại sao cần có DevOps và ai là chuyên gia DevOps?

Khi một ứng dụng không hoạt động, điều cuối cùng bạn muốn nghe từ đồng nghiệp của mình là cụm từ “vấn đề nằm ở phía bạn”. Kết quả là người dùng phải chịu thiệt hại – và họ không quan tâm bộ phận nào trong nhóm chịu trách nhiệm về sự cố. Văn hóa DevOps nổi lên chính xác là để mang lại sự phát triển và hỗ trợ cùng nhau xung quanh trách nhiệm chung đối với sản phẩm cuối cùng.

Khái niệm DevOps bao gồm những phương pháp thực hành nào và tại sao chúng lại cần thiết? Các kỹ sư DevOps làm gì và họ có thể làm gì? Các chuyên gia từ EPAM trả lời những câu hỏi này và các câu hỏi khác: Kirill Sergeev, kỹ sư hệ thống và nhà truyền giáo DevOps, và Igor Boyko, kỹ sư hệ thống hàng đầu và điều phối viên của một trong các nhóm DevOps của công ty.

Tại sao cần có DevOps và ai là chuyên gia DevOps?

Tại sao cần DevOps?

Trước đây, có một rào cản giữa nhà phát triển và bộ phận hỗ trợ (cái gọi là hoạt động). Nghe có vẻ nghịch lý nhưng họ có những mục tiêu và KPI khác nhau, mặc dù họ làm những việc giống nhau. Mục tiêu của sự phát triển là thực hiện các yêu cầu kinh doanh nhanh nhất có thể và thêm chúng vào một sản phẩm đang hoạt động. Bộ phận hỗ trợ chịu trách nhiệm đảm bảo rằng ứng dụng hoạt động ổn định - và mọi thay đổi đều gây nguy hiểm cho sự ổn định. Có xung đột lợi ích - DevOps xuất hiện để giải quyết nó.

DevOps là gì?

Đó là một câu hỏi hay - và là một câu hỏi gây tranh cãi: thế giới cuối cùng vẫn chưa đồng ý về vấn đề này. EPAM tin rằng DevOps kết hợp các công nghệ, quy trình và văn hóa tương tác trong một nhóm. Hiệp hội này nhằm mục đích liên tục cung cấp giá trị cho người dùng cuối.

Kirill Sergeev: “Nhà phát triển viết mã, người thử nghiệm xem xét mã và quản trị viên triển khai sản phẩm cuối cùng vào sản xuất. Trong một thời gian dài, những bộ phận này của nhóm có phần phân tán, và sau đó nảy sinh ý tưởng hợp nhất họ thông qua một quy trình chung. Đây là cách các hoạt động DevOps xuất hiện.”

Ngày đó đã đến khi các nhà phát triển và kỹ sư hệ thống bắt đầu quan tâm đến công việc của nhau. Rào cản giữa sản xuất và hỗ trợ bắt đầu biến mất. Đây là cách DevOps xuất hiện, bao gồm các hoạt động thực hành, văn hóa và tương tác nhóm.

Tại sao cần có DevOps và ai là chuyên gia DevOps?

Bản chất của văn hóa DevOps là gì?

Thực tế là trách nhiệm về kết quả cuối cùng thuộc về mỗi thành viên trong nhóm. Điều thú vị và khó khăn nhất trong triết lý DevOps là phải hiểu rằng một người cụ thể không chỉ chịu trách nhiệm về giai đoạn làm việc của riêng mình mà còn chịu trách nhiệm về cách thức hoạt động của toàn bộ sản phẩm. Vấn đề không nằm ở phía ai cả - nó được chia sẻ và mỗi thành viên trong nhóm sẽ giúp giải quyết.

Điều quan trọng nhất trong văn hóa DevOps là giải quyết vấn đề chứ không chỉ áp dụng các phương pháp thực hành DevOps. Hơn nữa, những hoạt động này không được thực hiện “từ phía ai đó” mà xuyên suốt toàn bộ sản phẩm. Một dự án không cần kỹ sư DevOps - nó cần một giải pháp cho một vấn đề và vai trò của kỹ sư DevOps có thể được phân bổ cho một số thành viên trong nhóm với các chuyên môn khác nhau.

Các loại thực hành DevOps là gì?

Thực hành DevOps bao gồm tất cả các giai đoạn của vòng đời phần mềm.

Igor Boyko: “Trường hợp lý tưởng là khi chúng tôi bắt đầu sử dụng các phương pháp thực hành DevOps ngay khi bắt đầu một dự án. Cùng với các kiến ​​trúc sư, chúng tôi lên kế hoạch về bối cảnh kiến ​​trúc mà ứng dụng sẽ có, vị trí của ứng dụng và cách mở rộng quy mô cũng như chọn nền tảng. Ngày nay, kiến ​​trúc microservice đang là mốt; vì nó, chúng ta chọn một hệ thống điều phối: bạn cần có khả năng quản lý từng thành phần của ứng dụng một cách riêng biệt và cập nhật nó một cách độc lập với những thành phần khác. Một cách thực hành khác là “cơ sở hạ tầng dưới dạng mã”. Đây là tên của một cách tiếp cận trong đó cơ sở hạ tầng dự án được tạo và quản lý bằng mã, thay vì thông qua tương tác trực tiếp với máy chủ.

Tiếp theo chúng ta chuyển sang giai đoạn phát triển. Một trong những cách thực hành lớn nhất ở đây là xây dựng CI/CD: bạn cần giúp các nhà phát triển tích hợp các thay đổi vào sản phẩm một cách nhanh chóng, theo từng phần nhỏ, thường xuyên hơn và dễ dàng hơn. CI/CD bao gồm việc đánh giá mã, tải bản gốc lên cơ sở mã và triển khai ứng dụng vào môi trường sản xuất và thử nghiệm.

Ở giai đoạn CI/CD, mã đi qua cổng chất lượng. Với sự giúp đỡ của họ, họ kiểm tra xem mã xuất ra từ máy trạm của nhà phát triển có đáp ứng các tiêu chí chất lượng đã chỉ định hay không. Kiểm tra đơn vị và giao diện người dùng được thêm vào đây. Để triển khai sản phẩm nhanh chóng, dễ dàng và tập trung, bạn có thể chọn loại triển khai phù hợp.

Những người thực hành DevOps cũng có một vị trí ở khâu hỗ trợ thành phẩm. Chúng được sử dụng để theo dõi, phản hồi, bảo mật và giới thiệu các thay đổi. DevOps xem xét tất cả các nhiệm vụ này từ góc độ cải tiến liên tục. Chúng tôi giảm thiểu các hoạt động lặp đi lặp lại và tự động hóa chúng. Điều này cũng bao gồm việc di chuyển, mở rộng ứng dụng và hỗ trợ hiệu suất.”

Lợi ích của việc thực hành DevOps là gì?

Nếu chúng ta viết một cuốn sách giáo khoa về thực tiễn DevOps hiện đại, sẽ có ba điểm trên trang đầu tiên: tự động hóa, tăng tốc độ phát hành và phản hồi nhanh chóng từ người dùng.

Kirill Sergeev: “Điều đầu tiên là tự động hóa. Chúng tôi có thể tự động hóa tất cả các tương tác trong nhóm: viết mã - triển khai - kiểm tra - cài đặt - thu thập phản hồi - quay lại từ đầu. Tất cả điều này là tự động.

Thứ hai là tăng tốc độ phát hành và thậm chí đơn giản hóa quá trình phát triển. Điều quan trọng đối với khách hàng là sản phẩm sẽ được tung ra thị trường càng sớm càng tốt và bắt đầu mang lại lợi ích sớm hơn so với các sản phẩm tương tự của đối thủ cạnh tranh. Quá trình phân phối sản phẩm có thể được cải tiến không ngừng: giảm thời gian, bổ sung thêm dấu kiểm soát, cải thiện việc giám sát.

Thứ ba là sự tăng tốc phản hồi của người dùng. Nếu anh ấy có ý kiến, chúng tôi có thể điều chỉnh và cập nhật ứng dụng ngay lập tức ”.

Tại sao cần có DevOps và ai là chuyên gia DevOps?

Các khái niệm “kỹ sư hệ thống”, “kỹ ​​sư xây dựng” và “kỹ sư DevOps” liên quan như thế nào?

Chúng chồng lên nhau, nhưng thuộc về các khu vực hơi khác nhau.

Kỹ sư hệ thống tại EPAM là một vị trí. Họ có nhiều cấp độ khác nhau: từ cấp dưới đến chuyên gia trưởng.

Kỹ sư xây dựng là một vai trò có thể được thực hiện trong một dự án. Đây là cách gọi của những người chịu trách nhiệm về CI/CD.

Kỹ sư DevOps là chuyên gia triển khai các hoạt động DevOps trong một dự án.

Nếu tổng hợp tất cả lại, chúng ta sẽ nhận được một kết quả như thế này: một người ở vị trí kỹ sư hệ thống đóng vai trò là kỹ sư xây dựng trong một dự án và tham gia vào việc triển khai các hoạt động DevOps ở đó.

Chính xác thì kỹ sư DevOps làm gì?

Các kỹ sư DevOps tập hợp tất cả các phần tạo nên một dự án. Họ biết chi tiết cụ thể công việc của lập trình viên, người kiểm tra, quản trị viên hệ thống và giúp đơn giản hóa công việc của họ. Họ hiểu nhu cầu và yêu cầu của doanh nghiệp, vai trò của doanh nghiệp trong quá trình phát triển - và xây dựng quy trình có tính đến lợi ích của khách hàng.

Chúng tôi đã nói rất nhiều về tự động hóa - đây là điều mà các kỹ sư DevOps giải quyết đầu tiên và quan trọng nhất. Đây là một điểm rất lớn, trong số những thứ khác, bao gồm cả việc chuẩn bị môi trường.

Kirill Sergeev: “Trước khi triển khai các bản cập nhật cho sản phẩm, chúng cần được thử nghiệm trong môi trường của bên thứ ba. Nó được chuẩn bị bởi các kỹ sư DevOps. Họ thấm nhuần văn hóa DevOps vào toàn bộ dự án: họ giới thiệu các phương pháp thực hành DevOps ở tất cả các lớp trong dự án của họ. Ba nguyên tắc này: tự động hóa, đơn giản hóa, tăng tốc - họ có thể mang đến bất cứ nơi nào họ có thể tiếp cận.”

Kỹ sư DevOps nên biết gì?

Nhìn chung, anh ta phải có kiến ​​thức từ các lĩnh vực khác nhau: lập trình, làm việc với hệ điều hành, cơ sở dữ liệu, hệ thống lắp ráp và cấu hình. Chúng được bổ sung bởi khả năng làm việc với cơ sở hạ tầng đám mây, hệ thống điều phối và giám sát.

1. Ngôn ngữ lập trình

Các kỹ sư DevOps biết một số ngôn ngữ cơ bản để tự động hóa và chẳng hạn như có thể nói với một lập trình viên: “Sao bạn cài đặt mã không phải bằng tay mà sử dụng tập lệnh của chúng tôi, tập lệnh tự động hóa mọi thứ thì sao? Chúng tôi sẽ chuẩn bị một tệp cấu hình cho nó, nó sẽ thuận tiện cho cả bạn và chúng tôi đọc và chúng tôi có thể thay đổi nó bất cứ lúc nào. Chúng tôi cũng sẽ xem ai, khi nào và tại sao lại thực hiện những thay đổi đó.”

Kỹ sư DevOps có thể học một hoặc nhiều ngôn ngữ sau: Python, Groovy, Bash, Powershell, Ruby, Go. Không cần thiết phải biết chúng ở mức độ sâu - những điều cơ bản về cú pháp, nguyên tắc OOP và khả năng viết các tập lệnh đơn giản để tự động hóa là đủ.

2. Các hệ điều hành

Kỹ sư DevOps phải hiểu sản phẩm sẽ được cài đặt trên máy chủ nào, sản phẩm sẽ chạy trong môi trường nào và sản phẩm sẽ tương tác với dịch vụ nào. Bạn có thể chọn chuyên về Windows hoặc họ Linux.

3. Hệ thống kiểm soát phiên bản

Nếu không có kiến ​​thức về hệ thống kiểm soát phiên bản, kỹ sư DevOps sẽ chẳng ở đâu cả. Git là một trong những hệ thống phổ biến nhất hiện nay.

4. Nhà cung cấp đám mây

AWS, Google, Azure - đặc biệt nếu chúng ta đang nói về hướng đi của Windows.

Kirill Sergeev: “Các nhà cung cấp đám mây cung cấp cho chúng tôi các máy chủ ảo hoàn toàn phù hợp với CI/CD.

Việc cài đặt mười máy chủ vật lý đòi hỏi khoảng một trăm thao tác thủ công. Mỗi máy chủ phải được khởi chạy, cài đặt và định cấu hình hệ điều hành cần thiết theo cách thủ công, cài đặt ứng dụng của chúng tôi trên mười máy chủ này và sau đó kiểm tra kỹ mọi thứ mười lần. Các dịch vụ đám mây thay thế quy trình này bằng mười dòng mã và một kỹ sư DevOps giỏi sẽ có thể vận hành chúng. Điều này giúp tiết kiệm thời gian, công sức và tiền bạc – cho cả khách hàng và công ty.”

5. Hệ thống điều phối: Docker và Kubernetes

Kirill Sergeev: “Các máy chủ ảo được chia thành các vùng chứa, trong mỗi vùng đó chúng ta có thể cài đặt ứng dụng của mình. Khi có nhiều container, bạn cần quản lý chúng: bật cái này, tắt cái khác, sao lưu ở đâu đó. Điều này trở nên khá phức tạp và đòi hỏi một hệ thống điều phối.

Trước đây, mỗi ứng dụng được xử lý bởi một máy chủ riêng biệt - mọi thay đổi trong hoạt động của ứng dụng đều có thể ảnh hưởng đến khả năng sử dụng của ứng dụng. Nhờ các bộ chứa, các ứng dụng trở nên tách biệt và chạy riêng biệt - mỗi ứng dụng trên một máy ảo riêng. Nếu xảy ra lỗi thì không cần tốn thời gian tìm kiếm nguyên nhân. Việc phá bỏ thùng chứa cũ và thêm thùng chứa mới sẽ dễ dàng hơn ”.

6. Hệ thống cấu hình: Chef, Ansible, Puppet

Khi cần bảo trì toàn bộ nhóm máy chủ, bạn phải thực hiện nhiều loại hoạt động giống nhau. Việc này mất nhiều thời gian và khó khăn, đồng thời việc làm thủ công cũng làm tăng nguy cơ xảy ra lỗi. Đây là lúc các hệ thống cấu hình ra tay giải cứu. Với sự giúp đỡ của họ, họ tạo ra một tập lệnh dễ đọc cho các lập trình viên, kỹ sư DevOps và quản trị viên hệ thống. Tập lệnh này giúp tự động thực hiện các hoạt động tương tự trên máy chủ. Điều này làm giảm các thao tác thủ công (và do đó giảm thiểu lỗi).

Kỹ sư DevOps có thể xây dựng loại nghề nghiệp nào?

Bạn có thể phát triển theo cả chiều ngang và chiều dọc.

Igor Boyko: “Từ quan điểm phát triển theo chiều ngang, các kỹ sư DevOps hiện có triển vọng rộng lớn nhất. Mọi thứ liên tục thay đổi và bạn có thể xây dựng kỹ năng trong nhiều lĩnh vực khác nhau: từ hệ thống kiểm soát phiên bản đến giám sát, từ quản lý cấu hình đến cơ sở dữ liệu.

Bạn có thể trở thành kiến ​​trúc sư hệ thống nếu nhân viên quan tâm đến việc tìm hiểu cách thức hoạt động của ứng dụng ở tất cả các giai đoạn trong vòng đời của nó - từ phát triển đến hỗ trợ.”

Làm thế nào để trở thành kỹ sư DevOps?

  1. Đọc Dự án Phoenix và Cẩm nang DevOps. Đây là những trụ cột thực sự của triết lý DevOps, trong đó trụ cột đầu tiên là một tác phẩm hư cấu.
  2. Tìm hiểu các công nghệ từ danh sách trên: tự học hoặc thông qua các khóa học trực tuyến.
  3. Tham gia với tư cách là kỹ sư DevOps cho một dự án nguồn mở.
  4. Thực hành và đưa ra các phương pháp thực hành DevOps cho các dự án cá nhân và công việc của bạn.

Nguồn: www.habr.com

Thêm một lời nhận xét