DevOps là gì? DevOps thành công nhất định phải sở hữu 6 kỹ năng và tố chất này

DevOps là gì ? DevOps là một văn hóa truyền thống thao tác tôn vinh sự hợp tác, kéo hai quy trình tiến độ tăng trưởng ( development ) và quản lý và vận hành ( operations ) xích lại gần nhau hơn. DevOps cần học nhiều một số ít ngôn từ lập trình thiết yếu như : Python, Ruby, Lua Scripting và cả 1 số ít tool tùy theo nhu yếu việc làm đơn cử .
Nhằm “ giải thuật ” DevOps là gì, việc làm của DevOps là gì và DevOps Engineer cần thành thạo những kiến thức và kỹ năng gì, ITviec đã có buổi phỏng vấn với hai DevOps nhiều năm kinh nghiệm tay nghề :

  • Anh Nguyễn Đăng Phong, DevOps Manager tại Paradise Game Technology Ltd.
  • Anh Trần Minh Tấn, Lead Engineer kiêm DevOps Engineer tại Giao Hàng Nhanh

Xem việc làm DevOps Engineer tại ITviec

DevOps là gì?

Chu trình tăng trưởng ứng dụng ( Software Development Life Cycle ) gồm có hai quy trình tiến độ chính : tăng trưởng và quản lý và vận hành. Hai quy trình tiến độ này tương đối tách rời nhau, đặc biệt quan trọng là ở những công ty có quy mô trung bình trở lên .
Tuy nhiên, nhằm mục đích tối ưu hóa quy trình tăng trưởng ứng dụng, giúp loại sản phẩm IT được release nhanh và tiếp tục hơn, khái niệm DevOps sinh ra .

Định nghĩa DevOps là gì?

DevOps là tên gọi mới, là sự thừa kế và tăng trưởng của một ý niệm về tăng trưởng ứng dụng đã sống sót từ khá lâu .

DevOps là sự kết hợp của từ Development (phát triển tính năng sản phẩm) + Operations (vận hành):

  • Giai đoạn phát triển (development) bao gồm phần việc của designer, developer, QA QC…
  • Giai đoạn vận hành (operations) có sự tham gia của system engineer, system administrator, operation executive, release engineer, DBA, network engineer, security engineer…

devops-la-gi-1devops-la-gi-1DevOpsDevelopment (phát triển tính năng sản phẩm) + Operations (vận hành)Để cho dễ tưởng tượng, và cũng để vấn đáp rõ hơn cho câu hỏi “ DevOps là gì ”, ta cần ngược trở lại lịch sử vẻ vang ngành ứng dụng một chút ít :

  • Ở buổi ban sơ của kỷ nguyên máy tính:

Quy trình tăng trưởng ứng dụng không hề có sự phân tách rạch ròi giữa hai quá trình tăng trưởng ( development ) và quản lý và vận hành ( operations ), nhất là so với những loại sản phẩm vừa và nhỏ. Vì là người tăng trưởng loại sản phẩm, Developer sẽ hiểu rõ về mẫu sản phẩm để chọn cách quản lý và vận hành tương thích nhất nên anh ta sẽ đảm nhiệm việc develop, đồng thời cũng kiêm luôn việc test, deploy loại sản phẩm .

  • Sau đó, sự bùng nổ về quy mô của các công ty và sản phẩm công nghệ diễn ra:

Từ đó, kéo theo quy mô hệ thống phình ra theo cấp số nhân. Từ một vài server, hệ thống có thể phát triển lên đến hàng chục, hàng trăm, hàng nghìn, hoặc thậm chí hàng triệu server (ví dụ như trường hợp của Google, Facebook).
Yêu cầu chuyên môn hóa trở nên gắt gao, khiến quy trình phát triển phần mềm chia tách thành những giai đoạn riêng biệt. Đây là giai đoạn mà Dev và Ops tách bạch.

Khoảng một thập kỉ trở lại đây, trước nhu yếu tăng trưởng và nâng cấp cải tiến loại sản phẩm liên tục để cung ứng thị trường, sự chia tách này lại thể hiện những điểm yếu kém rõ ràng .

Ngoài ra, ngành phát triển phần mềm cũng dịch chuyển theo một hướng khác – microservices.

Microservices : Một mẫu sản phẩm lớn được chia tách làm rất nhiều service nhỏ, những service này link với nhau tạo thành một mẫu sản phẩm hoàn hảo .

Ví dụ, so với người dùng, một website thương mại điện tử là một loại sản phẩm hoàn hảo. Nhưng trên thực tiễn, website này được gộp lại từ rất nhiều feature như đăng kí, đăng nhập, tìm kiếm. v.v … Mỗi feature này là một service riêng, hoàn toàn có thể sử dụng ngôn từ lập trình và database riêng .

Tham khảo thêm : Sự tăng trưởng và tương lai của DevOps

Lợi ích của DevOps

Khi được hỏi “ Lợi ích của DevOps là gì ? ”, anh Minh Tấn san sẻ, “ Cùng với chiêu thức Agile, DevOps giúp hoàn thành xong việc quy đổi quá trình tăng trưởng và quản lý và vận hành ứng dụng từ quy mô thác nước ( waterfall ) sang quy mô tăng trưởng / phát hành liên tục ( continuous development / releases ) ” .
Ngoài ra, những quyền lợi chính của DevOps là :

  • Tăng cường sự cộng tác chặt chẽ giữa nhóm phát triển (development) và nhóm vận hành (operation), cũng như khả năng làm việc liên chức năng (cross-functional).
  • Nâng cao tần suất triển khai (deployment), giúp rút ngắn thời gian phát triển/cải tiến sản phẩm.
  • Tận dụng các công cụ tự động hóa, giúp hạn chế rủi ro, giảm tỉ lệ thất bại.
  • Thời gian phục hồi sản phẩm nhanh hơn.

Tất cả đều Giao hàng cho mục tiêu ở đầu cuối là cải tổ năng lực cung ứng dịch vụ IT một cách nhanh gọn. Từ đó, tăng năng lực cạnh tranh đối đầu của loại sản phẩm / doanh nghiệp .

Công việc của DevOps Engineer là gì?

Theo anh Đăng Phong, DevOps Engineer là sự tích hợp theo công thức :

DevOps Engineer = Tư tưởng mới + Công cụ mới + Kỹ năng mới

Anh diễn giải thêm, nếu ta hiểu được DevOps là gì – Là một văn hóa truyền thống thao tác mới, một phương pháp tiếp cận để thu hẹp khoảng cách giữa quy trình tăng trưởng và quản lý và vận hành ứng dụng thì ta sẽ hiểu được DevOps Engineer là một vị trí phát sinh do nhu yếu thực tiễn việc làm, hoàn toàn có thể tạm định nghĩa gồm tư tưởng, công cụ và kĩ năng mới .
devops-engineer-la-gidevops-engineer-la-giVậy việc làm của một người làm DevOps là gì ?

  • Về mặt quy trình, DevOps cần đảm bảo làm thế nào để các bộ phận hợp tác trơn tru thuận lợi hơn
  • Về mặt sản phẩm, DevOps cần làm thế nào để các service kết nối và giao tiếp với nhau theo rules hiệu quả, cũng như đảm bảo việc scaling được “êm ái”

Anh Đăng Phong san sẻ, dựa trên công thức trên, ta có :

1. Tư tưởng mới:

Tư tưởng mới ở đây chính là DevOps Engineer cần cần đặt quyền lợi doanh nghiệp, quyền lợi loại sản phẩm lên số 1, đồng thời thấy rằng hàng loạt những team thực ra là cùng một “ phe ”, cùng san sẻ quyền lợi cũng như rủi ro đáng tiếc .
Vậy thì, người làm DevOps Engineer là phải có tư tưởng – mindset đúng tiên phong .

Trong hầu hết những công ty / dự án Bất Động Sản ứng dụng, đội ngũ tăng trưởng và quản lý và vận hành bị chia tách thành nhiều team thao tác tương đối độc lập với nhau : Developer, Tester, Sysadmin. v.v … Cũng từ đó, kiểu tư duy “ tất cả chúng ta ” – “ chúng nó ” hình thành, tạo nên nhiều xung đột không đáng có, gây tác động ảnh hưởng xấu đến doanh nghiệp / mẫu sản phẩm .

Thay vì đợi team Dev tăng trưởng xong mẫu sản phẩm, rồi team Ops mới tham gia quản lý và vận hành như trước kia. Thì nay, DevOps Engineer nên tham gia ngay từ đầu với đội ngũ tăng trưởng. Nhằm :

  • Hiểu sản phẩm hơn, để tối ưu hóa sản phẩm tốt hơn.
  • Học ngôn ngữ lập trình mà công ty sử dụng, để nắm được logic code, mài sắc khả năng tư duy, nắm được tiến trình của code chạy như thế nào.v.v…

Khi deploy code, nếu gặp yếu tố ở chỗ nào, DevOps Engineer sẽ hoàn toàn có thể dữ thế chủ động tìm lỗi và fix luôn mà không cần phải chờ developer .

2. Công cụ mới:

Nhiệm vụ quan trọng của DevOps Engineer là tự động hóa mạng lưới hệ thống. Cũng nghĩa là, DevOps Engineer cần liên tục tìm hiểu và khám phá, chọn, và sử dụng những công cụ mới, hoặc thậm chí còn tự tăng trưởng những automation tool cho công ty. Ví dụ :

  • Để hỗ trợ Agile/Scrum thì sử dụng các công cụ như: JIRA, Redmine …
  • Để chuẩn bị cho Infrastructure as code, và xây dựng CI/CD process thì sử dụng công cụ như: Terraform, Ansible, Jenkins, hay Github, Gitlab…

3. Kỹ năng mới:

Nhìn chung, việc làm chính của DevOps Engineer rất gần với việc làm của Sysadmin, gồm có : deploy, optimizing, monitoring, analysis … Điểm độc lạ là :

  • DevOps Engineer đòi hỏi nhiều kĩ năng mềm hơn, đồng thời phải biết dùng coding, scripting để automate hệ thống.
  • Người làm DevOps Engineer cũng cần tìm hiểu về stack mà sản phẩm công ty đang sử dụng, để có thể cùng review bug, viết những unit test thông thường, và để khi phát triển tiến trình CI/CD thì deploy “êm ái” hơn.

Cho nên, nếu coi DevOps Engineer là Sysadmin “ kiểu mới ” thì cũng không sai .

Tham khảo thêm : DevOps Engineer vs System Engineer có phải là một vị trí ?

Tuy nhiên, Sysadmin “ kiểu cũ ” rất lười code. Nhưng trong toàn cảnh lúc bấy giờ, để liên tục theo đuổi ngành System thì họ cần phải biết automation .

Cũng có nghĩa, họ cần rèn luyện kỹ năng coding, scripting, và thậm chí học cả những ngôn ngữ lập trình mới theo công nghệ/stack mà nhóm phát triển sản phẩm sử dụng.

DevOps-la-gi-2Những kĩ năng và công cụ cần cho DevOps – bấm vào đây để xem hình phóng lớn

DevOps cần thành thạo những kỹ năng và tố chất gì?

Dựa trên những san sẻ của anh Minh Tấn và Đăng Phong, một DevOps muốn thành công xuất sắc cần phải chiếm hữu những kỹ năng và kiến thức và năng lực sau :

  • Kỹ năng lập trình “cứng” là điều bắt buộc

Anh Minh Tấn san sẻ rằng DevOps Engineer thường là vị trí kiêm nhiệm ( Developer kiêm nhiệm thêm phần việc operations, hoặc là System Engineer kiêm nhiệm thêm một phần việc của dev, v.v … ) chính cho nên vì thế một DevOps cần phải có kỹ năng và kiến thức lập trình cứng .

Ví dụ, Tấn là System Engineer kiêm DevOps Engineer. Tấn muốn deploy version mới của mẫu sản phẩm lên 100 server. Nếu triển khai việc này bằng tay thủ công thì sẽ mất rất nhiều thời hạn, và không tránh khỏi sai sót .Trong trường hợp deploy thành công xuất sắc 50 con server, còn 50 con thất bại, thì cũng có nghĩa là mẫu sản phẩm của mình thất bại. Bởi vì cùng lúc mẫu sản phẩm sẽ chạy 2 version khác nhau, mà mình lại không trấn áp 2 version này được. Muốn khắc phục thì cũng phải có thời hạn .

Như vậy, để deploy nhanh hơn, hỗ trợ việc back-up, restore, đồng thời giảm thiểu rủi ro, thì với vai trò DevOps Engineer, Tấn sẽ viết automated script để ship code tự động lên server.

Ngôn ngữ lập trình phổ cập cho DevOps Engineer là Python, shell script .
Ngoài ra, để Ops, DevOps Engineer cũng cần hiểu sâu, thông thuộc về hệ điều hành quản lý đang sử dụng ( Linux, Docker. v.v … )

  • Kỹ năng research tốt

Đặc biệt, người làm DevOps phải có khả năng research tốt để nhanh chóng tìm ra giải pháp, xử lý tình huống.
Anh Tấn đưa ra một ví dụ vô cùng trực quan, dễ hiểu:

Tấn tiến hành services trên nền tảng on premise. Một ngày “ đẹp trời ” nào đó, mạng lưới hệ thống gặp yếu tố, Tấn muốn move hàng loạt mẫu sản phẩm của mình lên cloud. Tuy nhiên, có rất nhiều cloud, nên chọn dùng cloud nào cho tương thích ?Rõ ràng, trong trường hợp này, nếu năng lực research không tốt, không nhanh gọn tìm ra cách để move hàng loạt mọi thứ đang chứa trên on premise lên cloud, thì mẫu sản phẩm của mình bị đình trệ rồi .Hoặc, trong DevOps có rất nhiều bài toán hóc búa tương quan đến phần network, I / O, infra system. v.v … Một anh cứng về develop nhưng không hiểu sâu về phía Infra thì khi làm DevOps sẽ gặp rất nhiều khó khăn vất vả. Anh ta buộc phải research về Infra để ship hàng cho việc làm .

  • Sự cẩn thận, tỉ mỉ là quan trọng nhất

Theo anh Tấn, DevOps Engineer thường sẽ đảm nhiệm những việc làm như migrate data cho công ty nên họ cần tôn vinh sự tỉ mỉ. Khi đó, chỉ cần xảy ra một sai sót nhỏ, ví dụ như sai 1 IP server, thì sẽ gây tác động ảnh hưởng đến toàn mạng lưới hệ thống .

  • Luôn đặt lợi ích tập thể lên hàng đầu

Đây là tiêu chuẩn quan trọng nhất, theo anh Đăng Phong, vì DevOps sinh ra là để xử lý xích míc .
Tiêu chí này bộc lộ qua những việc rất li ti đơn cử. Ví dụ như cách DevOps Engineer tâm lý, tổ chức triển khai, cấu trúc code / thư mục như thế nào, san sẻ những best practices, … để mọi người hoàn toàn có thể cùng nhau đọc và hiểu code đó, cùng tham gia được với mình .

  • Nhìn nhận mọi thứ từ nhiều khía cạnh

Mâu thuẫn giữa nhóm tăng trưởng và quản lý và vận hành thường phát sinh từ sự độc lạ về góc nhìn. Cho nên, anh Phong khẳng định chắc chắn rằng DevOps Engineer là người cần nhìn nhận mọi thứ từ nhiều góc nhìn, để khách quan, sáng suốt hơn, biết “ thông cảm ” hơn .
Cụ thể, khi deploy mà code không chạy, thì DevOps Engineer cần xem xét kĩ : yếu tố nằm ở phía code hay phía môi trường tự nhiên .

Ví dụ, trường hợp làm với Laravel ( PHP Framework ), file config là. env. Sysadmin không có kinh nghiệm tay nghề thì dễ mắc sai lầm đáng tiếc là chỉ lấy phần code đó xuống và chạy và lỗi thì loay hoay và thường nghĩ do code .Trong khi, lẽ ra cần phải hiểu những thông số kỹ thuật tương quan đến thiên nhiên và môi trường và phương pháp hoạt động giải trí của Laravel, và phải ảnh hưởng tác động vào file. env trước đã .

  • Giao tiếp và hợp tác tốt với các team khác

Trong việc làm, mối quan hệ tốt thì cái gì cũng thuận tiện, và ngược lại .
Để thiết kế xây dựng mối quan hệ tốt, anh Phong nghĩ nên gạt chức vụ lead / manager gì gì đó qua một bên, để tiếp xúc với họ như là bạn hữu bình đẳng .
Bạn tôn trọng họ, thì họ cũng sẽ tôn trọng, thuận tiện san sẻ với bạn hơn. Mà khi xảy ra chuyện, cần nhờ vả thì họ cũng thuận tiện chấp thuận đồng ý hơn .

Ngoài ra, một DevOps Engineer cũng cần có:

  • Kinh nghiệm với system và IT operations, quản lý dữ liệu.
  • Nắm vững các tiến trình (CI/CD) và công cụ tự động hóa.
  • Khả năng sử dụng nhiều công nghệ và mã nguồn mở, coding/scripting.
    Liệt kê ra thì dông dài như vậy, nhưng tóm gọn lại, tiêu chí để “chọn” DevOps Engineer của anh Phong là: những sysadmin-coder tài năng, có kinh nghiệm, đồng thời hiểu rõ:
  • Hai mục tiêu quan trọng của việc viết phần mềm là “kiếm tiền” và “giao hàng”.
  • Tất cả chúng ta – manager, dev, tester, DBA, Sysadmin.v.v… đều cùng một phe, cùng cố gắng để đạt mục tiêu chung: cung cấp phần mềm chất lượng tốt, đáng tin cậy, và đem lại lợi nhuận kinh doanh cho khách hàng.

Anh Đăng Phong nhấn mạnh vấn đề rằng DevOps trước hết là yếu tố mindset, nên bạn cần phải “ đả thông tư tưởng ” trước đã. Bạn hoàn toàn có thể khám phá “ DevOps là gì ” từ sách báo, qua những trao đổi trên forum, v.v …
Bạn cũng cần học một số ít ngôn từ lập trình thiết yếu cho DevOps như : Python, Ruby, Lua Scripting .
Tiếp đến, bạn hoàn toàn có thể lên những website tuyển dụng để đọc diễn đạt việc làm của DevOps. Từ đó, bạn sẽ biết thị trường đang cần những kĩ năng gì, xu thế dùng những tools gì .
devops-la-gidevops-la-giMột số tool thông dụng cho người làm DevOps.

Tham khảo thêm : 8 việc làm lương cao nhất ngành IT ( DevOps ! )

Tài liệu DevOps tham khảo

Anh Đăng Phong và Minh Tấn yêu cầu 1 số ít nguồn tài liệu DevOps sau :

  • Sách Devops – The Phoenix Project: Cuốn sách này rất nổi tiếng, cá nhân mình đặc biệt thích vì nó giúp mình có mindset đúng về công việc (luôn hướng đến lợi ích tập thể, lợi ích của doanh nghiệp).
  • Những khóa học DevOps của Edward Viaene trên Udemy – đặc biệt là Learn DevOps: Continuously Deliver Better Software: Đây là khóa học đầu tiên về DevOps mà mình theo. Mình thấy rất sáng rõ, dễ hiểu, và thiết thực trong công việc.
  • DevOps Tutorials: Cung cấp những kiến thức nền tảng cũng như những công cụ phục vụ cho công việc của DevOps.
  • DevOps Việt Nam: Hội nhóm mở trên Facebook, dành riêng cho các DevOps tại Việt Nam. Bạn có thể tìm thấy rất nhiều thông tin từ chia sẻ tài liệu, kinh nghiệm cho đến tuyển dụng DevOps tại đây.
  • What is DevOps: Bài viết rất thú vị về sự ra đời cũng như những nguyên lý của DevOps.

DevOps Engineer trong ngành nói gì?

Anh Minh Tấn vui tươi san sẻ về những sai lầm đáng tiếc mà anh đã từng gặp phải khi làm DevOps và bài học kinh nghiệm anh rút ra được. Anh còn giỡn vui “ Sai lầm thì nhiều lắm, Tấn húc đầu vào tường hoài chứ gì. Có lần còn “ trót dại ” húc suýt bể đầu luôn ( cười ) ” .

  • Phải tuân thủ nghiêm ngặt quy trình QA QC

Để rút ra được bài học kinh nghiệm này, anh Tấn đã phải “ nếm ” phải sai lầm đáng tiếc và trả giá đắt. Chỉ là sai sót nhỏ trong một dòng code, đã ảnh hưởng tác động nghiêm trọng đến hàng loạt workflow mẫu sản phẩm. Sau đó, cả team anh, gồm 7 người, đã phải cày cật lực 10 ngày để khắc phục hậu quả .

Đợt ấy, team Tấn ( ở công ty cũ ) đảm nhiệm migrate data loại sản phẩm, đơn cử là shipping data bằng automated tool .Do chủ quan “ code nhà mình ” thì chắc “ ngon lành cành đào ” rồi, nên Tấn review không thật sự kĩ lưỡng. Tấn cũng chỉ test một phần ( chứ không phải hàng loạt ) trên môi trường tự nhiên staging – server test mà thôi .Đến lúc đẩy code lên môi trường tự nhiên production thì, bùm, sự cố xảy ra !Đại khái là loại sản phẩm lúc đó có thực trạng 2-3 user sử dụng 2-3 số điện thoại thông minh riêng không liên quan gì đến nhau để đăng kí dùng chung 1 ID account. Khi những user này đăng nhập thành công xuất sắc, họ đều được redirect đến cùng 1 account .Sự cố đã ảnh hưởng tác động nghiêm trọng đến chuyện thanh toán giao dịch tiền tài của những ID account dùng chung, cũng như hàng loạt workflow của loại sản phẩm .

Từ sự cố kể trên, Tấn rút ra “ bài học kinh nghiệm nhớ đời ” là phải cực kỳ thận trọng, tuân thủ khắt khe quá trình QA QC trước khi release .

  • Phải giữ bình tĩnh trong mọi tình huống

Trong lúc thao tác, bạn cần phải giữ bình tĩnh trong mọi trường hợp, vì cuống lên cũng không xử lý được gì, mà chỉ thêm rối .

Có lần đồng đội team mình ở lại văn phòng thao tác khuya. Đến khoảng chừng 3 giờ sáng thì xảy ra sự cố. Cả team vừa mệt vừa hoảng, nên cứ cuống lên rồi bị cuốn theo cái “ hố đen ” sự cố đến tận ngày hôm sau. Nếu bình tĩnh hơn, có lẽ rằng bọn mình đã nhìn ra được giải pháp tốt nhất để giải quyết và xử lý trường hợp ngay lúc đó .

  • Làm việc nhóm thì phải biết thông cảm, an ủi người khác

Khi mẫu sản phẩm bị bug trên production, thì người chịu nghĩa vụ và trách nhiệm về những tính năng đó đang rất áp lực đè nén. Lúc này, nếu leader chỉ biết la lối, làm căng lên thì bạn đó sẽ không còn ý thức để liên tục thao tác / xử lý yếu tố .
Một leader tốt cần giữ bình tĩnh để trấn tĩnh niềm tin đồng đội, đồng thời phải cùng lao vào xử lý yếu tố, chứ không phải chỉ đứng đằng sau chỉ trỏ .

Tiểu sử:

nguyen-dang-phongnguyen-dang-phong

Anh Nguyễn Đăng Phong bắt đầu sự nghiệp với vị trí Network Engineer tại một công ty bất động sản, tiếp đến là công ty game Gloops. Sau đó, anh Phong dần chuyển sang hướng System.

Trải qua những vị trí System Infrastructure, System Infrastructure Leader, DevOps Lead lần lượt tại Pinetech, Hotdeal, Inspectorio ; hiện tại anh Phong là DevOps Manager ở Paradise trò chơi Technology Ltd .
Nếu muốn trao đổi thêm về DevOps, bạn đọc của ITviec hoàn toàn có thể ping anh Phong qua Skype cntt040, hoặc email cntt040@gmail.com. Anh rất vui được trò chuyện, san sẻ kinh nghiệm tay nghề cùng những bạn để học hỏi lẫn nhau .

***

tran-minh-tantran-minh-tan

Anh Trần Minh Tấn tốt nghiệp Thạc sĩ chuyên ngành Khoa học Máy tính, Đại học Kĩ thuật Công nghệ TP.HCM (Hutech) năm 2015. Anh bắt đầu sự nghiệp với vị trí Senior Software Engineer tại Tappy, sau đó là Chợ Tốt.

Hiện tại, anh Tấn đảm nhiệm vị trí Lead Engineer kiêm DevOps Engineer tại Giao Hàng Nhanh .

Đừng quên tham khảo việc làm DevOps Engineer tại ITviec!

Robby2Robby2

Source: https://wikifin.net
Category: Blog

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *