Làm thế nào để trở thành DevOps Engineer?
DevOps là gì?
DevOps là từ viết tắt của Development (phát triển - Dev) và Operations (vận hành - Ops), DevOps đơn giản là một tập hợp các kỹ năng thực hành từ quá trình phát triển tới quá trình vận hành như viết code, xây dựng hệ thống, xây dựng CI/CD, giám sát hệ thống, …
Mục đích của DevOps là giảm chi phí của việc phát triển và vận hành, đồng thời cung cấp sản phẩm tới người dùng một cách nhanh chóng và mượt mà nhất có thể.
Ai có thể trở thành DevOps Engineer?
Tất cả các bạn mà đang đọc bài này đều có thể trở thành DevOps Engineer, chỉ cần ta có quyết tâm và sự kiên trì là được.
Để trở thành DevOps Engineer không phải một sớm một chiều là được, đây là một quá trình học tập dài và cần sự kiên trì của các bạn. Dưới đây là lộ trình những gì ta cần học:
- Học Linux
- Học lập trình căn bản
- Học Networking căn bản
- Học Docker
- Học CI/CD (GitOps)
- Học Kubernetes
- Học Cloud và IaC
Không cần phải học hết toàn bộ thì ta mới đi làm được, chỉ cần học 4 phần đầu thì ta có thể đi kiếm công việc thực tập, cách học nhanh nhất là làm nên nếu có cơ hội thì các bạn cứ đi thực tập.
Học Linux
Thứ cơ bản nhất mà ta cần học để bắt đầu là Linux. Ta không cần phải trở thành Master Linux, các bạn chỉ cần nắm những vấn đề cơ bản như:
- Linux là gì? Linux Distro là gì?
- Cấu trúc thư mục của Linux
- Cách sử dụng các câu lệnh cơ bản như tạo thư mục, di chuyển tệp tin, mở tệp tin ở trên máy chủ
- Cách cài Linux Package lên máy chủ Linux
- Cách kiểm tra tài nguyên trên máy chủ
- Cách tạo người dùng và quản lý người dùng
- Cách để kết nối tới máy chủ Linux
- Cách sử dụng Git trên Linux, cách tải source code từ Git
Các hướng dẫn để học Linux căn bản:
- Tutorial - Linux - Getting Started
- Video - The Linux Command Line Bootcamp
- Book - Linux for Beginners
Học lập trình căn bản
Phần tiếp theo là học lập trình căn bản, khi làm DevOps thì ta không cần tham gia quá sâu vào quá trình code sản phẩm, nên ta chỉ cần học ngôn ngữ ở mức hiểu cách nó làm việc thế nào là được, ta cần học:
- Một số cú pháp đơn giản
- Cách cài ngôn ngữ lên máy chủ thế nào
- Làm sao để ta đóng gói và chạy source code của ngôn ngữ đó lên trên máy chủ
Ngôn ngữ mà mình gợi ý các bạn học là Golang, các tài liệu để học Golang căn bản:
- Turotial - A Tour of Go
- Turotial - Build your Go Image
Học Networking căn bản
Kế tiếp là phần Network, để học Network cho DevOps thì chủ đề ta cần tìm hiểu là Computer Networking, ta cần nắm một số khái niệm như:
- Network là gì? Host là gì? IP Address là gì? Port là gì?
- Mô hình giao tiếp giữa máy chủ và người dùng
- Các khái niệm như mạng LAN, MAN, WAN
- OSI Model
- Khái niệm Subnet, CIDR
- Các câu lệnh về Network trên Linux
Các hướng dẫn để học Computer Networking căn bản:
- Tutorial - Basics of Computer Networking
- Video - Networking Fundamentals
Học Docker
Đây là phần quan trọng để ta bước lên con đường trở thành DevOps, và là phần phải học để có thể đi thực tập.
Docker là công cụ giúp ta giao tiếp với các Container một cách dễ dàng. Trong quá trình phát triển và triển khai ứng dụng lên máy chủ thì Docker là một công cụ không thể thiếu (nếu ứng dụng của ta chạy bằng Container). Ta cần nắm các kiến thức như:
- Khái niệm Container
- Docker là gì? Nó giúp ta giải quyết vấn đề gì?
- Cách cài Docker lên máy tính cá nhân và lên máy chủ
- Các câu lệnh Docker để tạo, chạy và xóa Container
- Cách đóng gói ứng dụng thành Container Image bằng Docker
- Tìm hiểu Docker Volume
- Tìm hiểu Docker Networking
Các hướng dẫn để học Docker căn bản:
- Tutorial - Docker Tutorial
- Video - Docker Crash Course Tutorial
- Book - Docker In Action
Học CI/CD
CI/CD là một nền tảng mà tập họp các công cụ giúp nhà phát triển và DevOps đóng gói và phân phối phần mềm tới người dùng một cách tự động và dễ dàng nhất. CI/CD là phần mà DevOps sẽ phụ trách hoàn toàn, nên ta cần tìm hiểu kĩ về chủ đề này, và luôn luôn cập nhật kiến thức mới về các công cụ CI/CD.
Còn đối với căn bản thì ta cần học nhưng thứ sau:
- CI/CD là gì và giúp ta giải quyết vấn đề gì?
- CI/CD gồm những thành phần nào?
- Các công cụ CI/CD nào đang phổ biến trong ngành
- Chọn một công cụ CI/CD thích hợp (Gitlab CI, Jenkins, Github Action, AWS CodePipeline)
- Cách cài đặt hệ thống CI/CD
- Cách xây dựng CI/CD cho ứng dụng
Mình gợi ý các bạn học Jenkins, các hướng dẫn để học Jenkins:
- Tutorial - Jenkins Tutorial
- Book - Continuous Delivery with Docker and Jenkins
Học Kubernetes
Với kiến thức trên thì bạn đã có thể tự tin mình là một Fresher DevOps. Và để trở thành Junior DevOps ta cần nắm thêm các kiến thức về Container Orchestration, Monitoring và Cloud.
Kubernetes là phần tiếp theo ta cần học, đây là công cụ phổ biến nhất trong mảng Container Orchestration. Các kiến thức ta cần nắm về Kubernetes:
- Kubernetes là gì?
- Tại sao ta lại cần nó? Kubernetes giúp gì cho ta trong việc quản lý và chạy Container?
- Các thành phần cơ bản nhất của Kubernetes?
- Cách sử dụng Kubernetes để chạy ứng dụng
- Làm thế nào để sử dụng Kubernetes để xây dựng một hệ thống với tính khả dụng cao.
- Kubernetes Auto Scaling.
- Cách sử dụng Kubernetes Ingress
Tài liệu để học Kubernetes:
- Video - Kubernetes for the Absolute Beginners
- Book - Kubernetes in Action
Học Cloud và IaC
Cloud là tương lai và nếu ta muốn sống sót được trong giới DevOps thì ta cần phải học Cloud. Học Cloud là cách để ta nổi bật hơn so với các ứng viên DevOps còn lại.
Để học Cloud thì ta nên chọn các nhà cung cấp lớn nhất và nhiều người xài nhất, mình gợi ý các bạn học AWS. Các bạn cần nắm những kiến thức sau về AWS:
- AWS là gì?
- Các dịch vụ cơ bản của AWS
- Cách sử dụng nó các dịch vụ cơ bản
- Cách thiết kế một hệ thống chịu tải cao
- Cách thiết kế hệ thống dễ dàng mở rộng trên AWS
Tài liệu học AWS:
- Video - Ultimate AWS Certified Solutions Architect Associate 2022
- Book - Amazon Web Services in Action
Song song với Cloud thì ta cần phải học về Infrastructure as Code (IaC). IaC là cách ta dùng code để mô tả và tạo hạ tầng trên Cloud.
Tài liệu để học IaC:
- Tutorial - Chinh phục Terraform
- Book - Terraform in Action
All Rights Reserved