DevOps là gì? Kỹ năng cần thiết cho DevOps Engineer

,

Với thời đại công nghệ số như hiện nay đòi hỏi việc phát triển phần mềm cần nhanh chóng, chính xác, tối ưu. Do vậy để đáp ứng sự thay đổi của thị trường, nhiều mô hình trong  ngành phát triển phần mềm ra đời với những cải tiến vượt bậc mang lại hiệu quả cao. Ngoài  phương pháp Agile  linh hoạt, nhanh nhạy thì phương pháp DevOps cũng được các doanh nghiệp quan tâm. 

Vậy DevOps là gì? DevOps Engineer cần có những kỹ năng và kiến thức gì để hoàn thành tốt các mục tiêu? Hãy cùng làm rõ qua bài viết dưới đây. 

DevOps là gì? 

DevOps được ghép bởi 2 từ tiếng anh Development (Dev) và Operations (Ops). Nghĩa là có sự kết hợp giữa kỹ sư phát triển phần mềm với bộ phận  Operator để  rút ngắn quá trình phát triển sản phẩm. 

 DevOps thực chất không phải là một tools hỗ trợ làm việc mà chính là sự tổng hợp của các nguyên lý, thực tiễn, quy trình cùng các tool và mang lại sự tự động hóa trong lập trình, chuyển giao phần mềm. 

Devops khác gì so với các hình thức trước đây? 

Xét về mục tiêu công việc: 

Theo cách làm truyền thống thì Bộ phận Dev và operations làm việc độc lập với những mục tiêu công việc khác nhau. Đối với Dev là mục đích xây dựng  function đúng với requirement và release cho khách hàng nhanh chóng. Còn đối với  operations mục đích chính là tạo ra một hệ thống ổn định. 

Trong một số trường hợp thì hai mục tiêu này có sự xung đột: Có thể function chạy tốt lúc release nhưng sau một thời gian phát sinh ra nhiều lỗi hoặc tốc độ chậm. Cũng có thể nếu sản phẩm suy nghĩ nhiều về maintaince system sẽ khiến kéo dài  thời gian release. 

Còn với DevOps là sự kết hợp  hài hòa giữa Dev và Ops  với những mục tiêu chung như: 

  • Fast time – to market (TTM): Code nhanh, deploy nhanh.
  • Few production failures: Có nghĩa là đảm bảo tính ổn định từ đầu.  
  • Immediate recovery from failures: Nếu có xảy ra lỗi thì với 1 team đầy đủ như thế sẽ nhanh chóng tìm ra được nguyên nhân để khắc phục lỗi ngay lập tức. 

Điều này đòi hỏi cả dev và operations phải làm việc cùng nhau, thống nhất trong mục tiêu, sử dụng những tools để kiểm tra tốc độ và sự ổn định của sản phẩm và mang lại sản phẩm hoàn hảo.

Xét về quy trình làm việc: 

Thông thường các công ty sẽ sử dụng mô hình làm việc truyền thống Traditional Silos với quy trình sau: 

Quy trình truyền thống của các công ty phần mềm

Với mô hình trên, chúng ta thấy được khi Dev hoàn thành việc code sẽ đưa sang QA test. QA sẽ có nhiệm vụ phát hiện bug và đưa cho dev fix lại rồi chuyển tiếp cho QA test. Quá trình này sẽ diễn ra liên tục cho đến khi sản phẩm không còn bug nữa thì được chuyển cho operation để deploy code lên môi trường. Tiếp đến QA sẽ test lại lần nữa. Nếu lúc này phát hiện bug thì có thể do 2 nguyên nhân : một là code của dev viết sai hai là do operation deploy sai. 

Như vậy, với mô hình làm việc truyền thống chúng ta thấy rõ những nhược điểm như: Mất thời gian vì tìm kiếm nguyên nhân lỗi, các bộ phận nghi ngờ lẫn nhau, hiệu quả không cao, tốn kém chi phí. 

Còn với với DevOps, dev QA và operations khi là 1 team thống nhất cùng làm 1 sản phẩm, và sử dụng các công cụ để tạo ra hệ thống automation từ khâu build code, test cho đến khâu deploy. Trong trường hợp bug thì cũng nhanh chóng  revert lại version cũ, cùng nhau tìm hiểu chính xác nguyên nhân là gì, fix bug rồi deploy code mới lên lại.  

Như vậy, Devops ra đời giúp cho việc tối ưu hóa chu trình phát triển phần mềm, đảm bảo  phần mềm được release nhanh chóng và thường xuyên hơn.

Lợi ích của DevOps là gì?

Cùng với phương pháp Agile, DevOps giúp hoàn thiện việc chuyển đổi quy trình phát triển và vận hành phần mềm một cách bài bản, nhanh chóng và hiệu quả hơn. 

DevOps giúp tạo ra sản phẩm nhanh hơn 

DevOps còn mang lại những lợi ích khác nhau: 

Giúp tăng cường sự liên kết giữa nhóm phát triển và vận hành. Đồng thời nâng cao khả năng làm việc liên chức năng. 

Gia tăng tốc độ release thường xuyên để cải tiến sản phẩm nhanh chóng và cho ra mắt các feature nhanh hơn cũng như fix bug kịp thời, phục vụ người dùng, phù hợp với thị trường và dễ dàng điều chỉnh hiệu quả kinh doanh. 

Tận dụng các công cụ tự động hóa, hạn chế rủi ro, giảm tỉ lệ thất bại, nâng cao độ tin cậy. 

Nếu có lỗi thì thời gian phục hồi sản phẩm nhanh hơn. 

Dễ dàng quản lý hệ thống phức tạp hay có thể mở rộng quy mô, nâng cấp môi trường thuận lợi hơn. 

DevOps giúp di chuyển mà không chịu tổn thất về mặt bảo mật bởi những chính sách, kiểm soát và phương pháp quản lý configuration. 

DevOps là làm gì?

Mục đích của DevOps là cải thiện khả năng xây dựng phần mềm nhanh chóng. Sau đó tăng khả năng cạnh tranh của doanh nghiệp trong thị trường. 

Rất nhiều kỹ năng cần thiết cho DevOps 

DevOps cần thực hiện các công việc sau: 

CI (Continuous Integration): Đây là hình thức trong quá trình phát triển phần mềm. Developer phải merge code của họ thường xuyên và chạy auto test mục đích để detect những vấn đề khi merge code. Công đoạn CI thường được tự động hóa, và hỗ trợ bởi CI Server. Trường hợp khi developer commit source code thay đổi của họ lên, CI Server  sẽ tự động nhận diện sự thay đổi và bắt đầu build, test source code. Quá trình này xảy ra nhiều lần trong 1 ngày và nếu có vấn đề, CI serve sẽ hiển thị thông báo. CI giúp developer có thói quen tốt là thường xuyên commit để viết ra những đoạn code đơn giản và chuẩn. Mục tiêu của CI chính là tìm bug nhanh hơn, cải tiến phần mềm, giảm thiểu thời gian để cho ra đời các bản update mới nhanh nhất. 

CD (Continuous Deployment) : Chính là practice đảm bảo code thay đổi được deploy liên tục lên sản phẩm. Điều này có nghĩa là khi bạn  pull bản build mới nhất hoặc tìm repo mới nhất đã được test và đã được tiến hành deploy trên production. CD chính là cách tăng tốc quá trình  deploy sản phẩm một cách liên tục nhằm đáp ứng nhanh nhất các yêu cầu của khách hàng. 

Xây dựng kiến trúc (Infrastructure as code) là phương thức giúp  cho việc quản lý, xây dựng cơ sở hạ tầng cho sản phẩm. Với “xây dựng kiến trúc”, thay vì việc thực hiện thủ công theo manual thì bạn có thể viết code và chạy một cách tự động. IaC sẽ giúp cho việc tạo và quản lý  resource đúng tiêu chuẩn. Mọi việc được thực hiện tự động hóa nên hoàn toàn không có những sai sót như việc thực hiện bằng tay. Ngoài ra IaC khá linh hoạt nên cho phép thực hiện sự thay đổi giống nhau trên nhiều host hoặc sử dụng lại khi bạn cần.  

Communication và Collaboration: Đây là các yếu tố giúp cho doanh nghiệp phát triển, cũng như là yếu tố để đánh giá DevOps.Các nhân tố này  đem lại quá trình phát triển, vận hành và các team khác  tiến gần với mục tiêu chung của doanh nghiệp.   

DevOps Engineer cần học gì?

Một DevOps Engineer cần khá nhiều kỹ năng, vừa phải biết về system cũng như coding và nhiều kỹ năng như:

  • Am hiểu và sử dụng thành thạo  linux, window, macOS. Khả năng sử dụng  thành thạo lệnh Terminal trong linux, CMD và powercell trong window và lệnh trong Linux hoặc Macos. Đồng thời cần phải có kiến thức cơ bản về: Process Management, Threads and Concurrency, Sockets,  Memory storage and File systems, I/O Management, Virtualization.
  • Nắm chắc  kiến thức cơ bản về: DNS, HTTP, HTTPS, FTP, SSL. 
  • Có khả năng  cài đặt và sử dụng vài Web Server phổ biến như: Apache và Nginx. Nắm bắt được khái niệm và chức năng thường được sử dụng: Caching Server, Load balancer,  and Firewall, Reverse Proxy. 
  • Hiểu biết hoặc có sử dụng một số dịch vụ cloud như AWS của Amazon, Google cloud, và Azure của Microsoft.
  • Khả năng code một số ngôn ngữ hệ thống như bashscript, java, javascipt , python, Php…
  • Có thể sử dụng 1 số tool để triển khai CI&CD như jenkins, jira , git (Gitlab, Bitbucket…). Một DevOps Engineer nên am hiểu về Infrastructure as code):
  • Containers: Docker, Kubernetes.
  • Các công cụ quản lý cấu hình: Ansible, Pupet, Chef,…
  • Thuần thục với  các tool monitoring server như: Nagios, Zabbix, Icing, Datadog…

Ngoài những kỹ năng trên, DevOps Engineer cần phải có những yếu tố như: 

  •  Sự cẩn thận, tỉ mỉ trong từng công việc. Bởi chỉ cần một sai sót nhỏ có thể ảnh hưởng đến toàn hệ thống. 
  •  Luôn đặt lợi ích tập thể lên trên để giải quyết mọi công việc. 
  •  Nhìn nhận mọi thứ từ nhiều khía cạnh để khách quan, và nhận định sáng suốt hơn. 
  •  Khả năng hợp tác tốt với các team khác. Điều này sẽ đem lại sự thuận lợi trong công việc.

Trên đây là những giải đáp cho các thắc mắc về DevOps là gì? Muốn DevOps cần có những kỹ năng gì? Ngoài DevOps bạn có thể tìm hiểu đến phương pháp Agile. Mô hình này được nhiều công ty hàng đầu áp dụng như Apple, Microsoft, Facebook, Amazon, Spotify,… Đây là một khung tư duy làm việc linh hoạt giúp những người làm trong ngành công nghệ đạt được những hiệu quả trong công việc. 

Để tìm hiểu thêm về mô hình Agile, hãy xem thông tin qua bài viết: 

https://hocvienagile.com/kien-thuc-agile/