Phỏng vấn vị trí DevOps Engineer hoặc Backend Developer đòi hỏi ứng viên không chỉ giỏi coding mà còn phải có tư duy hệ thống vững chắc. Bài viết này sẽ hệ thống hóa những khái niệm quan trọng nhất mà nhà tuyển dụng thường xuyên dùng để đánh giá năng lực của ứng viên.
CI/CD: Integration, Delivery và Deployment khác nhau ở đâu?
Nhiều ứng viên thường nhầm lẫn giữa Continuous Delivery và Continuous Deployment. Cốt lõi của CI/CD là giảm thiểu xung đột khi tích hợp code và tự động hóa quy trình đưa sản phẩm đến tay người dùng.
Người phỏng vấn thường bắt đầu bằng việc hỏi cách bạn thiết kế một pipeline tiêu chuẩn. Hãy tập trung vào việc làm thế nào để đảm bảo tính an toàn (safety) và sự tin cậy (reliability) trong pipeline đó.
- Continuous Integration (CI): Tự động build và test khi có code mới (merge request).
- Continuous Delivery (CD): Code luôn trong trạng thái sẵn sàng để deploy lên production sau khi đã qua các bài test tự động.
- Continuous Deployment (CDP): Tự động deploy lên production mà không cần sự can thiệp thủ công nếu vượt qua các bài kiểm tra chất lượng.
Containerization và Orchestration: Tại sao dùng Kubernetes?
Thay vì hỏi lý thuyết suông, nhà tuyển dụng thường muốn nghe bạn phân tích khó khăn khi quản lý hàng trăm container thủ công. Kubernetes (K8s) trở thành tiêu chuẩn công nghiệp vì khả năng tự phục hồi và quản lý tài nguyên linh hoạt.
Bạn cần làm rõ sự khác biệt giữa Docker (đóng gói ứng dụng) và K8s (quản lý, điều phối các container đó ở quy mô lớn).
- Self-healing: Khả năng tự khởi động lại các container bị lỗi hoặc crash.
- Auto-scaling: Điều chỉnh số lượng bản sao (replicas) dựa trên tải của ứng dụng.
- Service Discovery & Load Balancing: Tự động phân phối traffic đến các pod phù hợp.
Infrastructure as Code (IaC): Terraform hay Ansible?
Đây là câu hỏi kinh điển để kiểm tra tư duy quản lý hạ tầng ổn định. Terraform được ưa chuộng nhờ mô hình Declarative (khai báo trạng thái dự kiến), trong khi Ansible thường thiên về Procedural (các bước thực thi tuần tự).
Hãy nhấn mạnh vào khả năng tái sử dụng (reusability) và 'immutability' (đặc tính không thay đổi) của hạ tầng khi sử dụng công cụ như Terraform.
- Terraform: Phù hợp để khởi tạo hạ tầng (Provisioning) như VPC, EC2, Database trên Cloud.
- Ansible: Phù hợp để cấu hình hệ điều hành (Configuration Management) hoặc deploy ứng dụng bên trong VM.
- State management: Vấn đề quản lý file state trong Terraform khi làm việc nhóm.
Observability vs Monitoring: Bạn đang quản lý hệ thống như thế nào?
Monitoring chỉ trả lời câu hỏi: 'Hệ thống có đang hoạt động không?'. Còn Observability trả lời câu hỏi: 'Tại sao hệ thống đang gặp lỗi đó?'.
Một hệ thống hoàn thiện cần kết hợp cả ba trụ cột dữ liệu để đảm bảo khả năng quan sát toàn diện.
- Metrics: Dữ liệu số liệu thống kê (CPU, RAM, Request rate).
- Logs: Ghi chép chi tiết các sự kiện xảy ra trong ứng dụng.
- Tracing: Theo dõi hành trình của request qua các microservices (ví dụ: Jaeger, OpenTelemetry).
Horizontal vs Vertical Scaling trong Cloud
Hầu hết các hệ thống Cloud hiện đại đều ưu tiên Horizontal Scaling vì tính linh hoạt và khả năng chịu lỗi cao hơn. Vertical Scaling (nâng cấp phần cứng của một server) luôn có giới hạn vật lý.
Hãy đưa ra ví dụ về khi nào nên dùng cái nào, ví dụ: database nhỏ có thể vertical, nhưng web service phục vụ hàng triệu traffic phải là horizontal.
- Horizontal (Scaling out): Thêm nhiều server/instance mới vào hệ thống.
- Vertical (Scaling up): Tăng RAM, CPU cho server hiện tại.
- Stateful vs Stateless: Tại sao ứng dụng Stateless lại dễ dàng scaling hơn.
Ghi nhớ nhanh
- Hiểu rõ sự khác biệt giữa CI, CD và CDP để giải thích cách tối ưu quy trình phát triển.
- Nắm vững lợi thế của K8s trong việc quản lý quy mô thay vì chỉ biết dùng Docker.
- Chọn công cụ IaC dựa trên mục đích: tạo mới hạ tầng (Terraform) hay cấu hình máy chủ (Ansible).
- Luôn ưu tiên tư duy Observability để debug hệ thống thay vì chỉ nhìn vào dashboard Monitoring.