Register cái acc từ 2022 được duyệt viết bài mà chưa viết gì (Lúc ý còn có mail chào mừng tài khoản thứ 12,000 tạo thì phải giờ không biết bao nhiêu ta, thấy DevOps VietNam phát triển khá mạnh). Độ này rôm quá nên cũng lên bài chém gió chút :D
Mình cũng phỏng vấn kha khá bạn apply vị trí DevOps cho công ty. CV thì rất đẹp, toàn Jenkins, GitLab, Ansible, Kubernetes, Terraform, AWS… nhưng khi hỏi:
“Nếu bây giờ giao cho bạn một app microservice với Redis, PostgreSQL, frontend React, backend NestJS và yêu cầu triển khai staging và production HA, bạn làm gì?”
Thì câu trả lời thường là ậm ừ. Có bạn chỉ trả lời được phần CI, có bạn chỉ deploy được bằng Docker Compose, có bạn thì bảo: “Em cần clone repo về đã rồi em xem…” – Tức là chưa từng build một hệ thống nào hoàn chỉnh. Thậm trí cũng nhiều bạn Middle từ 4years+ exp, CV họ viết vậy thì biết vậy :D.
Học tool là một chuyện, deploy được hệ thống thật là chuyện khác
Mình thấy có một vấn đề cực lớn: đa phần các bạn đang học DevOps như học Word, Excel, tức là học từng công cụ rời rạc rồi nghĩ là mình biết. Docker biết, Git biết, Jenkins biết, Prometheus biết. Nhưng hỏi:
- Bạn có biết ghép pipeline từ code đến chạy không?
- Bạn có hiểu HA cho Redis thì cần Sentinel hay Cluster không?
- Bạn có config được HTTPS, cert renew tự động không?
- Bạn có quản lý secret production, rollback, logging tử tế không?
Thì… im lặng.
Cái thiếu ở đây không phải là kỹ năng dùng công cụ, mà là khả năng hiểu hệ thống từ đầu đến cuối, hiểu business cần gì, hiểu production khác dev ra sao, hiểu lỗi nào là nghiêm trọng và cần alert.
DevOps không phải là vai “ngồi chờ Dev đẩy code rồi deploy giúp”
Mình từng làm ở vài startup và cả công ty lớn. Tất cả những người DevOps giỏi mà mình gặp, đều có một điểm chung:
Họ deploy được một hệ thống thực tế từ con số 0, hoặc đủ hiểu biết để phối hợp trơn tru với team để hệ thống lên prod thành công.
Còn kiểu học xong 5-6 tool, đi phỏng vấn hỏi “em triển khai hệ thống thật nào chưa?” thì bảo chưa – thì đó chưa phải DevOps, đó chỉ là “DevOps intern tập dùng tool”.
Mà thực tế thì mình biết, nhiều bạn giỏi, nhưng học sai cách. Không phải lười, không phải gà, mà là học không có ngữ cảnh, không đặt câu hỏi: “Học cái này để giải quyết vấn đề gì trong hệ thống thực?”. Nên thành ra cứ quanh quẩn đọc tài liệu, làm bài lab, xong rồi… hết.
Mình góp ý chân thành
Nếu các bạn thật sự muốn theo DevOps mà không bị kẹt trong vòng lặp “biết tool mà không làm được hệ thống”, thì nên học theo hướng sau:
-
Tự build một hệ thống đơn giản
- Lấy một app open-source về, ví dụ một app blog có frontend/backend/database.
- Deploy dev/staging/prod – có domain, có HTTPS, có log, có alert.
- Gặp lỗi càng nhiều càng tốt – vì đó mới là kinh nghiệm thật.
-
Tư duy theo vòng đời hệ thống Đừng học CI/CD rồi mới học monitoring. Hãy học từ góc nhìn:
- Hệ thống có người dùng -> cần uptime -> cần HA.
- Có traffic -> cần scale, log, alert.
- Có dữ liệu -> cần backup, restore. Tức là… hãy học từ nỗi đau vận hành, chứ không phải học từ tool.
-
Tập tư duy kiến trúc và “trade-off” Khi deploy app, bạn sẽ bắt đầu thấy:
- Dùng Nginx hay Traefik?
- Secret để file hay dùng Vault?
- Logging để đâu? Có rotation không? Và chính lúc đó, bạn mới bắt đầu bước vào thế giới DevOps thật.
Tạm kết
Mình không chê bai gì cả. Mình thấy tiếc. Vì nhiều bạn hoàn toàn có khả năng trở thành DevOps giỏi, nhưng lại đi lạc hướng, học cái gì HOT chứ không học cái gì CẦN.
DevOps không phải là học danh sách công cụ. Mà là khả năng biến code thành một hệ thống hoạt động được ổn định, dễ mở rộng, dễ debug. Và để làm được điều đó, không có con đường nào khác ngoài triển khai thật.
Bắt đầu đi. Dù fail cũng được. Nhưng ít nhất, lúc đó bạn mới thật sự đang học DevOps. Nhỉ :D