7 mảng chính trong DevOps
Thông thường, DevOps sẽ xoay quanh 7 phần sau:
- Configuration Management
- Continuous Integration
- Automated Testing
- Infrastructure as Code
- Continuous Delivery
- Continuous Deployment
- Continuous Monitoring
Configuration Management
Phần này liên quan đến việc quản lý source code và cách team làm việc với code.
Hiện tại gần như công ty nào cũng dùng Git. Đi kèm với đó là một số quy chuẩn như:
- mỗi feature làm trên một branch riêng
- tạo Pull Request
- phải được review trước khi merge
Phần này khá cơ bản, nhưng lại rất quan trọng vì nó là nền tảng của toàn bộ quy trình phía sau.
Continuous Integration
Continuous Integration (CI) là bước tiếp theo sau khi developer viết xong code.
Khi code được push lên Git, hệ thống sẽ tự động chạy các pipeline để kiểm tra.
Ví dụ một pipeline cơ bản sẽ gồm:
- build project
- chạy unit test
- chạy integration test
- check quality code (ví dụ dùng SonarQube)
Nếu pass thì code mới được đi tiếp, còn fail thì phải sửa lại.
Automated Testing
Sau CI, code thường sẽ được đưa qua bước testing tự động.
Ngày xưa tester sẽ ngồi click từng chức năng để test.
Bây giờ phần đó được tự động hóa bằng tool.
Một số loại test phổ biến:
- Unit test
- Integration test
- End-to-end test
- Performance test
- Security test
Tool thường dùng:
- Cypress
- Cucumber
Mức độ test nhiều hay ít tùy vào project, nhưng với hệ thống lớn thì phần này gần như bắt buộc.
Infrastructure as Code
Đây là phần mình thấy thú vị nhất trong DevOps.
Infrastructure as Code (IaC) nghĩa là dùng code để tạo và quản lý hạ tầng.
Ví dụ một hệ thống web sẽ có:
- frontend
- backend
- database
- network
- firewall
- HTTPS
Trước đây bạn phải tạo từng thứ bằng tay, click từng bước.
Bây giờ bạn có thể viết code để tạo toàn bộ hệ thống đó.
Công cụ phổ biến
- Terraform
- AWS CloudFormation
- Pulumi
Ngoài ra còn có:
- Docker (container)
- Kubernetes (orchestration)
IaC giúp bạn:
- tái tạo môi trường dễ dàng
- deploy nhanh hơn
- giảm lỗi do thao tác tay
Continuous Delivery
Sau khi code đã pass test, bước tiếp theo là chuẩn bị để deploy.
Ở bước này:
- code được build thành artifact
- push lên registry
- deploy lên staging
Điểm quan trọng là:
code luôn ở trạng thái sẵn sàng để deploy production, nhưng chưa tự động deploy.
Continuous Deployment
Continuous Deployment là bước đi xa hơn.
Nếu hệ thống đủ ổn định, bạn có thể cho phép:
- code pass test → tự động deploy lên production
Không cần thao tác thủ công.
Cách này giúp release nhanh hơn, nhưng cũng yêu cầu hệ thống test rất tốt để tránh lỗi.
Continuous Monitoring
Sau khi deploy xong, công việc vẫn chưa kết thúc.
Bạn cần theo dõi hệ thống:
- CPU, RAM
- log
- error
- uptime
Một số tool phổ biến:
- Prometheus
- Grafana
- ELK stack
- Datadog
Monitoring giúp bạn phát hiện vấn đề sớm và hiểu hệ thống đang hoạt động như thế nào.
DevOps có cần code không?
Có, nhưng không giống developer.
DevOps thường code:
- script (bash, python)
- pipeline
- infrastructure
Mục tiêu là tự động hóa, không phải build feature.
DevOps có phải System Admin không?
Không hẳn.
System Admin chủ yếu quản lý server.
DevOps thì rộng hơn:
- build pipeline
- automate deploy
- manage infrastructure
- monitor system
Nói đơn giản là DevOps quản lý toàn bộ vòng đời của software, từ lúc viết code cho tới khi chạy production.