DevOps 1 — DevOps là gì & Văn hoá

13 thg 7, 2026 3 lượt xem
#co-ban
#ci-cd
#devops
#van-hoa

Mở đầu: vì sao bạn cần DevOps

Hãy tưởng tượng một cảnh quen thuộc. Đội phát triển (Dev) vừa hoàn thành một tính năng mới, đẩy code lên và tuyên bố "xong rồi". Vài ngày sau, đội vận hành (Ops) triển khai lên môi trường production và mọi thứ sập. Dev nhún vai: "Lạ nhỉ, trên máy mình chạy tốt mà" (it works on my machine). Ops cáu kỉnh: "Vậy thì đóng gói cả cái máy của anh mà giao cho tôi". Cuộc đổ lỗi qua lại bắt đầu.

Cảnh tượng này tóm gọn vấn đề mà DevOps ra đời để giải quyết. Bài viết này là điểm khởi đầu của chuỗi "zero to hero" về DevOps: chúng ta sẽ đi từ gốc rễ của vấn đề, hiểu DevOps thực sự là gì (không phải một chức danh, không phải một công cụ), nắm vòng lặp vô tận, nguyên tắc CALMS, và những chỉ số đo lường khoa học (DORA) để biết mình làm có hiệu quả không.

Thế giới trước DevOps: bức tường giữa hai bộ phận

Mô hình silo

Trong cách tổ chức truyền thống, Dev và Ops là hai vương quốc riêng biệt, mỗi bên có mục tiêu xung đột nhau:

  • Dev được thưởng vì giao tính năng mới thật nhanh. Thay đổi là bạn của họ.
  • Ops được thưởng vì giữ hệ thống ổn định. Thay đổi là kẻ thù của họ — mỗi lần thay đổi là một rủi ro sập.

Giữa hai bên là một "bức tường ném qua" (wall of confusion). Dev viết code rồi ném qua tường cho Ops triển khai, và phủi tay. Khi sự cố xảy ra, không ai chịu trách nhiệm trọn vẹn vì không ai sở hữu toàn bộ vòng đời của phần mềm.

Những triệu chứng điển hình

Triệu chứngHậu quả
"Works on my machine"Môi trường dev/test/prod khác nhau gây lỗi khi triển khai
Triển khai thủ công, hiếm khiMỗi lần release là một "đêm trắng" căng thẳng, dễ sai sót
Bàn giao bằng tài liệu WordKiến thức thất lạc, thao tác sai bước
Đổ lỗi qua lại khi sự cốKhông có cải tiến hệ thống, chỉ có người chịu trận
Phản hồi từ production rất chậmLỗi phát hiện muộn, sửa đắt gấp nhiều lần

Gốc rễ không phải do con người tệ, mà do cấu trúc tổ chức đặt hai nhóm vào thế đối đầu. DevOps giải quyết bằng cách thay đổi cấu trúc và văn hoá, không phải bằng cách mua thêm công cụ.

DevOps là gì?

Một định nghĩa ngắn gọn và chính xác:

DevOps là tập hợp các thực hành kết hợp phát triển phần mềm (Dev) và vận hành CNTT (Ops) nhằm rút ngắn vòng đời phát triển, giao phần mềm liên tục với chất lượng cao. Cốt lõi của nó là một thay đổi về văn hoá: chuyển từ silo và đổ lỗi sang sở hữu chung và cộng tác.

Hãy hiểu DevOps qua ba lớp, theo đúng thứ tự ưu tiên:

1. Văn hoá (quan trọng nhất)

DevOps trước hết là văn hoá. Dev và Ops chia sẻ mục tiêu chung: giao giá trị cho người dùng một cách nhanh và an toàn. Khi có sự cố, câu hỏi không phải "ai gây ra?" mà là "hệ thống nào đã cho phép sự cố này xảy ra, và ta sửa nó thế nào?". Đây là văn hoá blameless (không đổ lỗi).

Một câu nói nổi tiếng: "You build it, you run it" — đội xây dựng phần mềm cũng chịu trách nhiệm vận hành nó. Điều này tạo động lực tự nhiên để viết code dễ vận hành, dễ giám sát, dễ phục hồi.

2. Thực hành

Văn hoá được hiện thực hoá bằng các thực hành kỹ thuật: tích hợp liên tục (CI), giao hàng/triển khai liên tục (CD), hạ tầng dưới dạng mã (IaC), giám sát và phản hồi (observability), kiểm thử tự động, quản lý cấu hình.

3. Công cụ

Cuối cùng mới là công cụ: Git, Jenkins/GitHub Actions, Docker, Kubernetes, Terraform, Prometheus, Grafana... Công cụ chỉ hỗ trợ thực hành; mua đủ công cụ mà không đổi văn hoá thì vẫn thất bại. Đây là sai lầm phổ biến nhất: nghĩ rằng "cài Kubernetes là có DevOps".

Ghi nhớ: DevOps không phải một chức danh. Một công ty thuê "kỹ sư DevOps" rồi để người đó làm Ops thủ công như cũ thì chưa làm DevOps. DevOps là cách cả tổ chức vận hành.

Vòng lặp vô tận DevOps

Biểu tượng kinh điển của DevOps là một vòng lặp vô tận (hình số 8 nằm ngang), thể hiện rằng phát triển phần mềm không có điểm kết thúc — nó là một chu trình cải tiến liên tục, nơi đầu ra của vận hành (monitor) lại trở thành đầu vào của kế hoạch tiếp theo (plan).

Nửa bên trái thiên về Dev (Plan, Code, Build, Test), nửa bên phải thiên về Ops (Release, Deploy, Operate, Monitor). Điểm mấu chốt là hai nửa nối liền thành một vòng khép kín, không có "bức tường" ở giữa.

Bảng các giai đoạn

Giai đoạnMục tiêuVí dụ công cụ
Plan (Lập kế hoạch)Xác định tính năng, ưu tiên, chia việcJira, Trello, GitHub Issues
Code (Viết mã)Lập trình, quản lý phiên bảnGit, VS Code, IntelliJ
Build (Đóng gói)Biên dịch, tạo artifact/imageMaven, Gradle, Docker
Test (Kiểm thử)Kiểm thử tự động, đảm bảo chất lượngJUnit, Pytest, Selenium
Release (Phát hành)Chuẩn bị phiên bản sẵn sàng triển khaiGitHub Actions, GitLab CI
Deploy (Triển khai)Đưa lên môi trường productionKubernetes, Argo CD, Ansible
Operate (Vận hành)Giữ hệ thống chạy, scalingKubernetes, Terraform
Monitor (Giám sát)Thu thập metric, log, cảnh báoPrometheus, Grafana, ELK

Phản hồi từ Monitor quay về Plan chính là vòng phản hồi (feedback loop) — trái tim của DevOps. Vòng phản hồi càng ngắn, tổ chức học và sửa càng nhanh.

CALMS: năm trụ cột của DevOps

CALMS là khung tư duy giúp đánh giá mức độ trưởng thành DevOps của một tổ chức. Đây là từ viết tắt của năm trụ cột:

C — Culture (Văn hoá)

Cộng tác thay vì silo. Trách nhiệm chung. Văn hoá blameless. Đây là nền móng; thiếu nó thì bốn trụ còn lại sụp đổ.

A — Automation (Tự động hoá)

Tự động hoá mọi thứ lặp đi lặp lại: build, test, triển khai, cấp phát hạ tầng. Lý do sâu xa không chỉ là "nhanh hơn" mà là loại bỏ sai sót do con người và làm cho quy trình lặp lại được, kiểm tra được. Một thao tác thủ công thực hiện 100 lần sẽ sai ít nhất vài lần; một script chạy 100 lần luôn cho kết quả như nhau.

L — Lean (Tinh gọn)

Mượn từ sản xuất tinh gọn (Toyota): loại bỏ lãng phí, giảm hàng tồn kho (các tính năng làm xong nhưng chưa release), làm việc theo lô nhỏ (small batch). Lô nhỏ nghĩa là mỗi lần triển khai chỉ chứa ít thay đổi — nếu lỗi thì dễ tìm nguyên nhân và dễ rollback hơn nhiều so với một bản release khổng lồ tích tụ ba tháng.

M — Measurement (Đo lường)

"Bạn không thể cải thiện thứ bạn không đo được." Thu thập số liệu về cả quy trình (tần suất triển khai, lead time) lẫn hệ thống (độ trễ, tỉ lệ lỗi). Quyết định dựa trên dữ liệu, không dựa trên cảm tính.

S — Sharing (Chia sẻ)

Chia sẻ kiến thức, công cụ, trách nhiệm và cả thành công lẫn thất bại. Postmortem (báo cáo sau sự cố) được chia sẻ công khai để cả tổ chức học. Chia sẻ phá vỡ silo — nó là biểu hiện cụ thể của văn hoá.

CI/CD: trục xương sống kỹ thuật

CI/CD là bộ thực hành kỹ thuật trung tâm hiện thực hoá vòng lặp DevOps. Ba khái niệm dễ nhầm lẫn:

  • CI — Continuous Integration (Tích hợp liên tục): Mỗi lần lập trình viên đẩy code, hệ thống tự động build và chạy test. Mục tiêu là phát hiện xung đột và lỗi sớm, khi chúng còn rẻ để sửa. Nhiều người tích hợp nhiều lần mỗi ngày vào nhánh chung.
  • CD — Continuous Delivery (Giao hàng liên tục): Sau CI, code luôn ở trạng thái sẵn sàng để triển khai lên production bất cứ lúc nào. Bước đẩy lên production cuối cùng vẫn cần một người bấm nút (quyết định kinh doanh).
  • CD — Continuous Deployment (Triển khai liên tục): Tiến thêm một bước — mọi thay đổi qua được test sẽ tự động lên production, không cần can thiệp tay.

Chuỗi bài sau sẽ đào sâu CI/CD; ở đây chỉ cần nắm bức tranh tổng thể: đây là cái máy tự động đẩy code từ máy lập trình viên ra tới người dùng một cách an toàn.

Ba khái niệm sẽ đào sâu sau

DevOps dựa trên ba kỹ thuật nền tảng mà các bài sau sẽ trình bày chi tiết. Giới thiệu nhanh để bạn có bức tranh tổng:

Infrastructure as Code (IaC)

Thay vì cấu hình máy chủ bằng tay (click trên giao diện đám mây, gõ lệnh thủ công), bạn mô tả hạ tầng bằng (ví dụ file Terraform). Hạ tầng trở thành thứ có thể đưa vào Git, review, version, và tái tạo y hệt ở bất kỳ đâu. Đây là cách giết chết vĩnh viễn câu "works on my machine" ở tầng hạ tầng.

Container

Container (Docker) đóng gói ứng dụng cùng toàn bộ phụ thuộc của nó (thư viện, runtime, cấu hình) vào một đơn vị chạy giống hệt nhau trên mọi môi trường. Container giải quyết "works on my machine" ở tầng ứng dụng. Kubernetes sau đó điều phối hàng nghìn container.

Observability (Khả quan sát)

Gồm ba trụ: metrics (số đo như CPU, độ trễ), logs (bản ghi sự kiện), traces (dấu vết một request đi qua các dịch vụ). Observability cho phép bạn không chỉ biết "hệ thống có sập không" mà còn trả lời được "tại sao nó hành xử như vậy" với những câu hỏi chưa lường trước.

SRE và DevOps khác nhau thế nào?

SRE (Site Reliability Engineering) do Google khởi xướng, thường bị nhầm với DevOps. Cách hiểu chính xác nhất: SRE là một cách triển khai cụ thể của triết lý DevOps, tập trung vào độ tin cậy.

Khía cạnhDevOpsSRE
Bản chấtTriết lý/văn hoá rộngMột cách hiện thực hoá cụ thể
Trọng tâmTốc độ giao hàng + cộng tácĐộ tin cậy, đo bằng kỹ thuật
Công cụ đặc trưngĐa dạng, theo nguyên tắcSLI/SLO/SLA, error budget
Câu hỏi cốt lõi"Làm sao giao nhanh và an toàn?""Hệ thống cần tin cậy tới mức nào?"

SRE đưa ra các khái niệm rất hữu ích: SLI (chỉ số mức dịch vụ, ví dụ tỉ lệ request thành công), SLO (mục tiêu, ví dụ 99.9%), và error budget (ngân sách lỗi — phần "được phép sập" còn lại). Khi error budget cạn, đội phải ngừng đẩy tính năng mới và quay sang củng cố độ ổn định. Đây là cách dùng dữ liệu để cân bằng giữa tốc độ (Dev muốn) và ổn định (Ops muốn) — đúng tinh thần hoà giải của DevOps.

DORA: đo lường DevOps một cách khoa học

Nhóm nghiên cứu DORA (DevOps Research and Assessment, nay thuộc Google) qua nhiều năm khảo sát đã chứng minh bốn chỉ số dự báo tốt nhất hiệu suất của một tổ chức phần mềm. Đây là thước đo khách quan để biết bạn đang ở đâu:

Bốn chỉ số DORA

Chỉ sốĐo cái gìNhóm "tốc độ"/"ổn định"
Deployment FrequencyTần suất triển khai lên productionTốc độ
Lead Time for ChangesThời gian từ lúc commit code đến lúc lên productionTốc độ
Change Failure RateTỉ lệ % các lần triển khai gây sự cốỔn định
Time to Restore Service (MTTR)Thời gian phục hồi sau sự cốỔn định

Vì sao bốn chỉ số này cân bằng nhau

Hai chỉ số đầu đo tốc độ, hai chỉ số sau đo ổn định. Phát hiện quan trọng nhất của DORA là: các đội xuất sắc (elite) giỏi cả bốn cùng lúc — họ triển khai nhiều lần mỗi ngày VÀ vẫn ít gây sự cố VÀ phục hồi rất nhanh. Điều này bác bỏ quan niệm cũ rằng "nhanh thì phải đánh đổi ổn định". Tốc độ và ổn định không mâu thuẫn nếu bạn có tự động hoá và văn hoá tốt.

Một mẹo dùng bốn chỉ số: nếu bạn tối ưu chỉ hai chỉ số tốc độ, bạn có thể đẩy ẩu và làm sập hệ thống. Bốn chỉ số đi cùng nhau tạo thành một bộ hãm tự nhiên, không cho phép gian lận.

Một ví dụ ứng dụng thực tế

Giả sử nhóm bạn đang ở trạng thái "tiền DevOps": triển khai 1 lần/tháng vào đêm thứ Bảy, mỗi lần mất 4 tiếng làm thủ công, cứ 3 lần thì 1 lần lỗi phải rollback. Lộ trình áp dụng DevOps điển hình:

  1. Đo trước (Measurement): ghi nhận 4 chỉ số DORA hiện tại để có baseline.
  2. Đưa code vào Git với quy trình review (bài 2 của chuỗi).
  3. Dựng CI: mỗi commit tự động build + test, lỗi báo ngay.
  4. Container hoá ứng dụng để hết "works on my machine".
  5. Tự động hoá triển khai (CD) lên staging rồi production.
  6. Thêm observability: dashboard metric + cảnh báo.
  7. Đo lại: so sánh với baseline, lặp lại cải tiến.

Sau vài tháng, mục tiêu thực tế: từ 1 lần/tháng lên nhiều lần/tuần, lead time từ vài ngày xuống vài giờ, và quan trọng là không còn "đêm trắng" căng thẳng. Đó là DevOps tạo ra giá trị cụ thể.

Tóm tắt

  • Vấn đề gốc: silo Dev–Ops với mục tiêu xung đột, "bức tường ném qua", và hội chứng "works on my machine".
  • DevOps là văn hoá trước, rồi mới đến thực hành và công cụ. Không phải một chức danh, không phải một sản phẩm mua được.
  • Vòng lặp vô tận (Plan → Code → Build → Test → Release → Deploy → Operate → Monitor → quay lại Plan) nhấn mạnh cải tiến liên tục và vòng phản hồi ngắn.
  • CALMS (Culture, Automation, Lean, Measurement, Sharing) là năm trụ cột đánh giá độ trưởng thành.
  • CI/CD là trục xương sống kỹ thuật; IaC, container, observability là ba nền tảng sẽ đào sâu sau.
  • SRE là một cách triển khai cụ thể của DevOps, tập trung độ tin cậy với SLI/SLO/error budget.
  • DORA đưa ra 4 chỉ số khoa học (Deployment Frequency, Lead Time, Change Failure Rate, MTTR) cân bằng tốc độ và ổn định.

Tự kiểm tra

  1. Hãy giải thích vì sao DevOps gọi "works on my machine" là một vấn đề cấu trúc/tổ chức chứ không chỉ là lỗi kỹ thuật của một cá nhân.
  2. Phân biệt Continuous Delivery và Continuous Deployment. Khác biệt cốt lõi nằm ở bước nào?
  3. Trong năm trụ cột CALMS, vì sao "Culture" được coi là nền móng mà thiếu nó thì bốn trụ còn lại vô nghĩa?
  4. Một đội triển khai rất thường xuyên (Deployment Frequency cao) nhưng Change Failure Rate cũng cao. Theo tư duy DORA, điều này nói lên điều gì và họ nên làm gì?
  5. SRE dùng "error budget" để làm gì, và nó giúp hoà giải mâu thuẫn cổ điển giữa Dev và Ops như thế nào?

Đọc tiếp

DevOps 2 — Git

Bài viết liên quan

Continuous Integration/Delivery/Deployment, cấu trúc pipeline, ví dụ GitHub Actions và chiến lược release.

13 thg 7, 2026 3

Container vs máy ảo, image/layer, Dockerfile, volume, network, Docker Compose và best practices.

13 thg 7, 2026 3

Ba trụ cột logging–metrics–tracing, Prometheus/Grafana, alerting, SLI/SLO/SLA và golden signals.

13 thg 7, 2026 3

Bài mở đầu series Linux cho data engineer: vì sao mọi hạ tầng dữ liệu đều chạy Linux, triết lý Unix, phân biệt terminal/shell/kernel, cấu trúc một lệnh, chuẩn thư mục FHS và cách đăng nhập server qua SSH.

13 thg 7, 2026 3