DevOps là gì

DevOps ngày càng phát triển, hiện nay đang được rất nhiều người quan tâm đến lĩnh vực này. Cùng mình tìm hiểu về DevOps là gì? DevOps Engineer là gì? nhé.

Tìm hiểu về các định nghĩa về DevOps

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

DevOps( viết tắt của cụm từ “software DEVelopment” và “information. Devops là một thuật ngữ để chỉ một tập hợp các hành động trong việc phát triển phần mềm để chỉ mối liên quan giữa quá trình phát triển và quá trình vận hành ở phần mềm:

Quá trình phát triển (development): Quá trình viết mã lệnh(code) được thực hiện bởi các lập trình viên để tạo ra ứng dụng cho người sử dụng… bao gồm phần việc của designer, developer, QA QC.

Giai đoạn vận hành (operations): Các công việc như xác định bao nhiêu máy chủ cần thiết và cách cấu hình các máy chủ để có thể vận hành được phần mềm…Có sự tham gia của system engineer, system administrator, operation executive, release engineer, DBA, network engineer, security engineer…

Mục đích chính của DevOps là để thay đổi và cải tiến tốt hơn mối quan hệ giữa hai quá trình này. Với sự hỗ trợ của DevOps, các công ty có thể “release” các tính năng nhỏ rất nhanh.

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

DevOps Engineer là những người có kinh nghiệm về cả bên phát triển sản phẩm, phần mềm lẫn vận hành hệ thống. Hiện nay, nhu cầu tìm kiếm những người có kĩ năng này là rất lớn. Vì để các chuyên gia về DevOps phụ trách về lĩnh vực này sẽ đảm bảo toàn bộ quá trình phân phối sản phẩm diễn ra hiệu quả và tự động hoá ổn định.

DevOps Engineer là gì
DevOps Engineer là gì

Công việc chính của DevOps Engineer cũng gần giống so với công việc của sysadmin, bao gồm: deploy, optimizing, analysis, monitoring,… Điểm khác biệt là:

  • DevOps Engineer đòi hỏi nhiều kĩ năng mềm hơn như phải có coding skill, scripting để automation hệ thống.
  • Ngoài ra, đôi khi họ còn có kỹ năng kinh doanh và giao tiếp tốt với cả khách hàng.
  • DevOps Engineer cần tìm hiểu về tech stack mà sản phẩm công ty đang sử dụng. Họ cũng có thể cùng review bug, viết những unit test cơ bản.

DevOps Engineer hiện nay thường phải tham gia ngay vào giai đoạn phát triển nhằm mục đích:

  • Chuẩn hóa môi trường làm việc từ local cho đến production.
  • Hiểu sản phẩm hơn, để tối ưu hóa sản phẩm tốt hơn.
  • Nắm được cơ bản logic code, nắm được tiến trình của code chạy như thế nào.v.v…

Azure devops là gì?

Azure DevOps là dịch vụ dành cho các nhà phát triển để hỗ trợ các đội ngũ của họ lên kế hoạch làm việc, kết hợp phát triển code, cũng như xây dựng và triển khai các ứng dụng.

Các nhà phát triển phần mềm có thể làm việc trực tiếp trên đám mây bằng cách sử dụng Azure DevOps Service hoặc làm việc tại on-premise bằng cách sử dụng Azure DevOps Server.

Azure DevOps cung cấp các tính năng tích hợp mà bạn có thể truy cập thông qua trình duyệt web hoặc ứng dụng IDE. Các dịch vụ mà Azure devops hỗ trợ như là:

  • Azure Repos: Dịch vụ cung cấp kho kiểm soát phần mềm Git hoặc Team Foundation Version Control (TFVC) để kiểm soát nguồn mã của bạn.
  • Azure Pipelines: Cung cấp dịch vụ xây dựng và phát hành để hỗ trợ khả năng tích hợp và chuyển giao liên tục ứng dụng của bạn.
  • Azure Boards: Cung cấp một bộ công cụ Agile để hỗ trợ lập kế hoạch và theo dõi công việc, các lỗi mã và nhiều vấn đề khác bằng phương pháp Kanban và Scrum.
  • Azure Test Plans: Cung cấp một số công cụ để kiểm tra ứng dụng của bạn.
  • Azure Artifacts: Cho phép chia sẻ các gói Maven, npm và NuGet từ các nguồn công khai và cá nhân.
  • Các công cụ cộng tác bao gồm các dashboard có thể tùy chỉnh với các tiện ích có thể định cấu hình để chia sẻ thông tin, tiến trình và xu hướng, thông báo cấu hình và nhiều tiện ích khác.

DevOps Engineer làm gì?

Kỹ sư DevOps họ sẽ làm việc với lập trình viên và với nhân viên IT để giám sát việc release code.

Họ có thể là người quản trị hệ thống có niềm đam mê viết script và coding, chuyển sang mảng phát triển nơi họ có thể cải thiện việc lập kế hoạch kiểm thử và triển khai. Cũng có thể xuất phát là các lập trình viên, quan tâm đến việc triển khai và vận hành mạng. Có khi, người làm DevOps là developer hay sysadmin kiêm nhiệm luôn trọng trách của một DevOps trong khi vẫn tiếp tục với vai trò chính của mình.

DevOps Engineer làm gì?
DevOps Engineer làm gì?

Tham gia cộng đồng DevOps cần học gì?

Các công nghệ, công cụ mới liên tục xuất hiện trong bối cảnh DevOps để hộ trợ tót hơn. Nếu  theo nghề devops bạn phải biết khá nhiều thứ về system cũng như coding và những kỹ năng sau đây:

  • Học thêm về ngôn ngữ lập trình. Biết một số ngôn ngữ của hệ thống như bashscript, java, javascipt , python, Php…
  • Sử dụng thành thạo linux, window, macOS. Biết dùng lệnh Terminal trong linux, CMD và POWERCELL trong window và lệnh trong Linux hoặc Macos.
  • Có kiến thức cơ bản về: Process Management, Threads and Concurrency, Sockets, I/O Management, Virtualization, Memory storage and File systems.
  • Nên có kiến thức cơ bản về: DNS, HTTP, HTTPS, FTP, SSL.Tìm hiểu về các lỗ hổng bảo mật thường gặp.
  • Biết cài đặt và sử dụng vài Web Server phổ biến như: Apache và Nginx.
  • Biết và sử dụng một số dịnh vụ cloud như AWS của amazon, google cloud, và azure của microsoft.
  • Biết sử dụng 1 số tool để truyển khai CI&CD như jenkins, jira , git (Gitlab, Bitbucket…).
  • Biết sử dụng các tool monitoring server như: Nagios, Zabbix, Icing, Datadog…
DevOps cần học gì
DevOps cần học gì

Lộ trình học để làm DevOps Engineers cần gì?

Tìm hiểu về lộ trình để trở thành 1 DevOps Engineer. Bạn cần học theo những bước dưới đây:

Học ngôn ngữ lập trình

Bạn cần học, tìm hiểu ít nhất 1 trong ba ngôn ngữ lập trình cơ bản: Java, Python, JavaScript.

Việc học thêm một ngôn ngữ lập trình sẽ giúp bạn rèn luyện tư duy lập trình. Giúp đỡ rất nhiều trong việc tạo ra các đoạn script một cách dễ dàng hơn, hỗ trợ cho việc trở thành 1 DevOps .

Xem thêm: Web học lập trình online

Hiểu về các OS khác nhau

Không nhất thiết cần hiểu sâu về OS và hardware như một Sysadmin. Nhưng  cũng nên có những kiến thức cơ bản về: Process Management, Threads and Concurrency, Sockets, I/O Management, Virtualization, Memory storage and File systems.

Nên bắt đầu với Ubuntu (a Linux distribution). Vì nó là Open Source, giao diện thân thiện, có cộng đồng người dùng lớn.

Học cách dùng terminal

Với một DevOps Engineer thì gần như đây là một điều bắt buộc.

Vì CLI thì mạnh mẽ hơn rất nhiều so với GUI. Mặc dù GUI thì dễ sử dụng nhưng việc có thêm GUI sẽ làm cho OS trở nên nặng nề hơn nhiều.

Bạn có thể bắt đầu làm quen với một số Linux shell: Bash, Ksh hay là một vài tool phổ biến như: awk, find, grep, sed, lsof, nslookup, netstat.

Lộ trình học để làm DevOps Engineers
Lộ trình học để làm DevOps Engineers

Học về Networking and Security

Hiện nay, các hệ thống thường có sự tương tác qua lại với nhau. Vạn vật đều có thể kết nối, tương tác được với nhau do đó Network và Security ngày càng trở lên quan trọng.

Vì thế bạn nên tìm hiểu thêm các kiến thức cơ bản về: DNS, HTTP, HTTPS, FTP, SSL. Hoặc tìm hiểu thêm về những lỗ hổng bảo mật thường gặp.

Thiết lập, cài đặt hệ thống

Hãy bắt đầu làm quen và thử cài đặt một vài Web Server phổ biến như: Apache và Nginx.

Tìm hiểu những khái niệm, chức năng thường được sử dụng như: Caching Server, Load balancer, Reverse Proxy, and Firewall. Hay bắt đầu với một vài practice với Docker đơn giản như:

  •  Setup thử một vài cache server
  • Giả lập có nhiều servers dưới local bằng cách dùng các Docker container. Thực hiện cân bằng tải cho server bằng chức năng Load balancer của Web server.

Tìm hiểu về cơ sở hạ tầng dưới dạng code

Theo ý kiến của mình, đây là một trong những vấn đề quan trọng nhất của một DevOps.  Một DevOps Engineer nên biết:

  • Containers: Docker, Kubernetes
  • Các công cụ quản lý cấu hình: Ansible, Pupet, Chef,..

Tìm hiểu về một số công cụ (CI/CD)

Điều này cũng quan trọng không kém việc Tìm hiểu về cơ sở hạ tầng dưới dạng code. Nó sẽ giúp giảm thiểu sự nhàm chán khi bạn cứ phải lặp đi lặp lại các thao tác mà mình hoàn toàn có thể làm một cách tự động.

Một vài CI/CD tool phổ biến như: TeamCity, Jenkins, Drone..

Học cách giám sát, theo dõi phần mềm, hạ tầng

Ngoài những việc là setup và deploy lên server thì một phần không thể thiếu đó là việc monitoring server. Bạn không thể ngồi cả ngày, cả tháng chỉ để biết con server còn sống hay đã chết. Các service của nó có còn hoạt động hay không? Hay là việc Server của bạn đang dùng những tài nguyên thế nào?

Có nhiều công cụ tốt bạn có thể áp dụng như: Datadog, Nagios, Zabbix, Icing,… Khi có hệ thống monitoring đã hoạt động ổn định. Bạn có thể dành thời gian đó để làm những việc khác, tìm hiểu thêm một số cái khác. Khi có điều gì đó không ổn định từ hệ thống thì monitoring system sẽ gửi thông báo cho bạn thông qua mail hoặc điện thoại…

Tìm hiểu thêm về Cloud Provides

Nhắc đến Cloud Provides phải kể đến 3 ông lớn là: AWS, Google Cloud và Microsoft Azure.

Hiện nay, các doanh nghiệp hiện nay lại dùng Cloud Server cho các ứng dụng mà họ phát triển vì những ưu điểm vượt trội như sau:

  • Dynamic computing resources: Khả năng mở rộng resource của hệ thống nhanh, hiệu quả, tiết kiệm. Chỉ cần 1 cú click chuột là bạn có thể thay đổi cấu hình hệ thống của bạn.
  • Giảm chi phí: Doanh nghiệp sẽ có khả năng cắt giảm chi phí để mua bán, cài đặt và bảo trì tài nguyên.
  • Giảm độ phức tạp trong cơ cấu của doanh nghiệp: Doanh nghiệp sẽ giảm được nhân sự bên vận hành, bảo trì máy chủ.

Những cơ hội nghề nghiệp DevOps

Ngành nghề DevOps có rất nhiều tiềm năng phát triển trong tương lai. DevOps đã tạo ra một cuộc cách mạng trong ngành công nghiệp 4.0 này. Bất kì ai có kinh nghiệm hay có kiến thức cơ bản trong các lĩnh vực dưới đây có thể học để tiếp cận DevOps:

  • Lập trình (bất kỳ ngôn ngữ nào)
  • Shell scripting
  • Quản trị hệ thống
  • Các dịch vụ IT – Ops và Hỗ trợ
  • Xây dựng và phát hành (Build and release)
  • QA hoặc Testing

Để trở thành 1 kỹ sư Devops là không phải là điều dễ dàng. Ngoài việc bạn cần hiểu biết tường tận các ngôn ngữ, công cụ lập trình và vận hành, công việc Devops còn đòi hỏi bạn những kỹ năng mềm cần thiết. Đòi hỏi bạn cần có quyết tâm, học hỏi nhiều kiến thức để phát triển bản thân trong lĩnh vực này.

Tham khảo thêm tại: https://aws.amazon.com/vi/devops/what-is-devops/

Leave a Reply