Tổng hợp 76 câu hỏi phỏng vấn DevOps Essentials kèm đáp án chi tiết, song ngữ Việt–Anh — sắp xếp từ cơ bản đến nâng cao. Ôn luyện miễn phí, tự động lưu tiến độ.
Cả hai giảm rủi ro khi release và tránh downtime: - Blue-green: chạy hai môi trường song song — "blue" (đang live) và "green" (bản mới). Test xong thì chuyển toàn bộ traffic sang green một lần; nếu lỗi thì switch ngược tức thì. Rollback…
- Image: gói chỉ đọc (read-only) chứa mã, runtime, thư viện và cấu hình — bản thiết kế để chạy ứng dụng. Image gồm nhiều layer xếp chồng. - Container: một instance đang chạy của image, thêm một lớp ghi (writable layer) ở trên cùng.…
Dockerfile là file văn bản mô tả từng bước build một image. Docker đọc tuần tự các instruction để tạo layer. - FROM: image nền (base image). - WORKDIR: thư mục làm việc trong image. - COPY / ADD: chép file từ context vào image.…
Mỗi instruction trong Dockerfile tạo một layer bất biến. Khi build lại, Docker tái dùng cache cho một layer nếu instruction và input của nó không đổi. - Cache mất hiệu lực từ layer đầu tiên có thay đổi trở đi — mọi layer phía…
Multi-stage build dùng nhiều FROM trong một Dockerfile: stage đầu để build (có compiler, dev dependency), stage cuối chỉ COPY --from phần artifact cần thiết sang một base image gọn. - Kết quả: image cuối không chứa toolchain, source hay dev dependency → nhỏ hơn…
Container có filesystem tạm — xoá container là mất dữ liệu ghi bên trong. Để giữ dữ liệu (persistent) và chia sẻ giữa các container, dùng mount. - Volume: do Docker quản lý (lưu trong vùng riêng của Docker). Là cách khuyến nghị cho dữ…
- bridge (mặc định): mạng riêng ảo trên một host. Container trong cùng bridge (user-defined) gọi nhau qua tên container (DNS nội bộ). Ra ngoài qua NAT. - host: bỏ cách ly mạng, container dùng thẳng network stack của host (nhanh hơn, nhưng đụng port…
Compose định nghĩa và chạy ứng dụng nhiều container bằng một file YAML (compose.yaml). Thay vì gõ nhiều lệnh docker run, khai báo toàn bộ stack rồi docker compose up. - Mỗi service = một container (web, api, db, redis...), khai báo image, port, env,…
- Base image nhỏ: dùng alpine, -slim, hoặc distroless thay cho image full OS. - Multi-stage build: chỉ copy artifact runtime, bỏ toolchain/dev dependency. - Gộp lệnh RUN và dọn cache trong cùng layer (apt-get ... && rm -rf /var/lib/apt/lists/) — vì mỗi RUN là…
Pod là đơn vị triển khai nhỏ nhất của Kubernetes — không phải container đơn lẻ. Một pod bọc một hoặc nhiều container dùng chung: - Network: chung một IP và cổng, các container trong pod gọi nhau qua localhost. - Storage: chung volume. Các…
- ReplicaSet: đảm bảo luôn có đúng số bản sao (replicas) của một pod đang chạy. Pod chết → tạo lại. Nhưng ReplicaSet không xử lý cập nhật phiên bản. - Deployment: lớp quản lý cao hơn, sở hữu ReplicaSet và thêm khả năng rollout/rollback.…
Pod có IP thay đổi khi bị tạo lại. Service cung cấp một địa chỉ ổn định (virtual IP + DNS) và load-balance tới nhóm pod khớp label selector. Các loại: - ClusterIP (mặc định): IP nội bộ, chỉ truy cập trong cluster. - NodePort:…
Ingress quản lý truy cập HTTP/HTTPS từ ngoài vào cluster ở tầng 7 (L7), định tuyến theo host và path. - Một Ingress có thể route nhiều tên miền/đường dẫn tới nhiều Service khác nhau qua một điểm vào duy nhất — thay vì mỗi…
Cả hai tách cấu hình khỏi image để cùng một image chạy ở nhiều môi trường. Đưa vào pod qua biến môi trường hoặc mount thành file. - ConfigMap: dữ liệu cấu hình không nhạy cảm dạng plaintext (URL, feature flag, tên host). - Secret:…
Namespace phân vùng logic một cluster thành nhiều không gian tách biệt — như nhiều "thư mục" chia sẻ cùng một cluster vật lý. - Tách môi trường/team: dev, staging, prod, hoặc theo nhóm. - Tránh trùng tên: cùng một tên resource (vd Service api)…
HPA tự động tăng/giảm số replica của một Deployment/StatefulSet dựa trên tải quan sát được. - Đọc metric (mặc định CPU/memory qua metrics-server; hoặc custom/external metric như request/giây). - So với ngưỡng mục tiêu đã đặt (vd giữ CPU ~60%). Vượt → thêm pod; dưới…
Cả hai là health check kubelet chạy định kỳ trên container, nhưng phản ứng khác nhau khi fail: - Liveness probe: "container còn sống không?" Fail → kubelet restart container (dùng khi app treo/deadlock). - Readiness probe: "container sẵn sàng nhận traffic chưa?" Fail →…
Rolling update (chiến lược mặc định): Deployment thay pod cũ bằng pod mới từng phần, không downtime. - Điều khiển bằng maxUnavailable (tối đa bao nhiêu pod được thiếu) và maxSurge (tối đa bao nhiêu pod dư tạm thời). - Deployment tạo ReplicaSet mới, tăng…
Pipeline là chuỗi bước tự động đưa mã từ commit tới môi trường chạy — thay cho quy trình thủ công. Các giai đoạn (stage) điển hình: 1. Source: trigger khi push/merge (webhook từ Git). 2. Build: biên dịch, đóng gói (vd build Docker image).…
- Continuous Integration (CI): mỗi lập trình viên merge thường xuyên vào nhánh chung; mỗi lần merge tự động build + test để phát hiện xung đột/lỗi sớm. Trọng tâm là chất lượng code khi tích hợp. - Continuous Delivery (CD): mở rộng CI để…
Artifact là sản phẩm đầu ra bất biến của bước build, sẵn sàng để deploy hoặc test tiếp — vd Docker image, file .jar/.war, binary, gói npm, hay thư mục dist. - Build once, deploy many: build một lần ra artifact rồi dùng chính artifact…
EC2 (Elastic Compute Cloud) cung cấp máy chủ ảo (instance) theo yêu cầu — dạng IaaS: bạn quản lý OS và phần mềm, AWS lo phần cứng. - Instance type: chọn theo CPU/RAM/GPU cho workload (t/m general, c compute, r memory...). - AMI: image mẫu…
S3 (Simple Storage Service) là object storage — lưu file dạng object trong bucket, truy cập qua HTTP API/URL, không phải filesystem hay block storage. - Object = data + metadata + key (tên duy nhất trong bucket). Không có thư mục thật, chỉ là…
IAM quản lý ai được làm gì trên AWS. - Policy: tài liệu JSON khai báo quyền (Effect allow/deny, Action, Resource, Condition). Chỉ là "danh sách quyền", tự nó không thuộc về ai — được gắn vào user/group/role. - Role: một identity không gắn credential…
VPC (Virtual Private Cloud) là mạng ảo riêng của bạn trong AWS, cô lập về mặt logic, nơi bạn đặt các tài nguyên (EC2, RDS...) và tự kiểm soát mạng. Thành phần chính: - Subnet: chia dải IP của VPC theo AZ. Public subnet (có…
Cả hai là load balancer của AWS ELB nhưng làm việc ở tầng khác nhau: - ALB (Application Load Balancer) — tầng 7 (HTTP/HTTPS). Định tuyến theo path, host, header; hỗ trợ TLS termination, WebSocket, gRPC (HTTP/2 end-to-end), redirect, target là instance/IP/Lambda. Hợp cho web…
Auto Scaling tự thêm/bớt EC2 instance theo tải, giữ hiệu năng mà không trả tiền cho tài nguyên nhàn rỗi. - Auto Scaling Group (ASG): nhóm instance được quản lý, đặt min / desired / max. - Launch template: khuôn để tạo instance mới (AMI,…
RDS (Relational Database Service) là CSDL quan hệ được quản lý (managed) — hỗ trợ PostgreSQL, MySQL, MariaDB, Oracle, SQL Server (và Aurora). AWS lo phần vận hành nặng: backup tự động, patch, cập nhật, giám sát. Bạn tập trung vào schema và query. Lợi…
Lambda là Function as a Service (FaaS): bạn upload code hàm, AWS tự chạy khi có sự kiện và tự lo server/scale. - Event-driven: trigger từ API Gateway (HTTP), S3 (file mới), SQS/SNS, EventBridge (cron), DynamoDB stream... - Scale tự động: mỗi request/sự kiện có…
CloudFront là CDN của AWS — mạng edge location phân bố toàn cầu, cache nội dung gần người dùng để giảm độ trễ và tải cho origin. - Request đi tới edge gần nhất; nếu đã cache thì trả ngay (cache hit), chưa có thì…
- Region: một khu vực địa lý (vd us-east-1, ap-southeast-1 Singapore). Các region tách biệt hoàn toàn với nhau; chọn theo độ trễ tới người dùng, giá, và tuân thủ dữ liệu (data residency). - Availability Zone (AZ): một hoặc nhiều data center rời nhau…
- High Availability (HA): hệ thống giảm tối đa downtime, phục hồi nhanh sau lỗi — nhưng có thể có gián đoạn ngắn khi failover. Đo bằng "số 9" (99.9%, 99.99%). Cách làm: loại bỏ single point of failure, chạy đa AZ, health check +…
Process là một chương trình đang chạy, có PID riêng, không gian bộ nhớ riêng, và một tiến trình cha (PPID). Process đầu tiên là init/systemd (PID 1), mọi process khác là con cháu của nó. - Trạng thái: running, sleeping, stopped, zombie (đã kết…
Signal là thông báo bất đồng bộ gửi tới process để yêu cầu nó phản ứng — cơ chế IPC đơn giản của OS. Gửi bằng kill -SIGNAL <PID. Hay gặp: - SIGTERM (15) — mặc định của kill: yêu cầu tắt êm (graceful). Process…
Mỗi file có quyền cho 3 nhóm: owner (u), group (g), others (o); mỗi nhóm có 3 bit r (read=4), w (write=2), x (execute=1). - Chuỗi ls -l: -rwxr-xr-x → owner rwx, group r-x, others r-x. - Octal: cộng giá trị mỗi nhóm. 755 =…
systemd là init system và service manager của đa số Linux hiện đại — process PID 1 khởi động khi boot và quản lý các dịch vụ nền (daemon) suốt vòng đời hệ thống. - Unit: đơn vị quản lý; loại phổ biến là .service…
Cron là trình lập lịch chạy tác vụ định kỳ trong Unix/Linux (dọn log, backup, gửi báo cáo, gọi script theo giờ). Daemon crond đọc bảng lịch crontab và chạy lệnh đúng thời điểm. Cú pháp 5 trường + lệnh: Ví dụ: - 0 2…
Cả hai là giao thức tầng transport, nhưng đánh đổi khác nhau giữa độ tin cậy và tốc độ. - TCP — hướng kết nối, tin cậy: bắt tay 3 bước, đảm bảo đến nơi, đúng thứ tự, có kiểm soát lỗi, retransmit, flow control…
HTTPS là HTTP chạy trên TLS — thêm lớp mã hoá cho kết nối, còn ngữ nghĩa HTTP (method, status, header) giữ nguyên. HTTPS đảm bảo 3 điều mà HTTP thuần không có: - Bảo mật (confidentiality): dữ liệu được mã hoá, bên nghe lén…
DNS (Domain Name System) là "danh bạ" của internet — dịch tên miền dễ nhớ (example.com) sang địa chỉ IP mà máy dùng để kết nối. Quá trình phân giải (đệ quy) khi truy cập một tên chưa cache: 1. Resolver (thường của ISP) nhận…
Load balancer phân phối request tới nhiều server backend để không máy nào quá tải — tăng throughput, độ sẵn sàng và khả năng scale. Nó cũng làm health check, ngừng gửi tới server hỏng. Hai tầng: - L4 (transport): định tuyến theo IP +…
Cả hai là trung gian, nhưng đứng ở hai phía khác nhau và phục vụ đối tượng khác nhau. - Forward proxy: đứng trước client, thay mặt client gửi request ra ngoài. Server đích chỉ thấy proxy, không thấy client. Dùng để: ẩn danh client,…
Firewall kiểm soát traffic mạng theo tập luật (cho phép/chặn dựa trên IP, port, protocol, hướng) — ranh giới giữa vùng tin cậy và không tin cậy. Trên AWS có hai lớp firewall ảo, hay bị hỏi so sánh: - Security Group (mức instance): stateful…
12-factor là bộ 12 nguyên tắc thiết kế ứng dụng SaaS để dễ triển khai, scale ngang và portable giữa các môi trường (nhất là trên cloud/container). Vài nguyên tắc hay được hỏi: - Codebase: một codebase trong version control, deploy nhiều môi trường. -…
IaC là quản lý hạ tầng bằng file cấu hình có version thay vì thao tác thủ công trên console — hạ tầng được mô tả bằng code, review qua Git, tái tạo nhất quán. Lợi ích: lặp lại được (tạo lại y hệt môi…
Ba khái niệm liên quan nhưng không đồng nghĩa: - Logging: ghi lại sự kiện rời rạc (dòng log có timestamp) — hữu ích để tra cứu "chuyện gì đã xảy ra" khi debug. - Monitoring: thu thập metric đã biết theo thời gian và…
Secret là dữ liệu nhạy cảm để truy cập tài nguyên: mật khẩu, API key, DB credential, token, khoá mã hoá, chứng chỉ. Secrets management là cách lưu, phân phối, xoay vòng và kiểm soát truy cập chúng an toàn. Vì sao không hardcode vào…
DevOps là tập hợp văn hoá, thực hành và công cụ giúp tổ chức phát hành phần mềm nhanh và ổn định hơn, bằng cách xoá rào cản giữa Development và Operations thay vì để hai bên tách biệt. - Không phải một chức danh…
Khác nhau ở mức ảo hoá: - VM: ảo hoá phần cứng qua hypervisor. Mỗi VM chạy một OS đầy đủ (guest kernel riêng) → nặng vài GB, khởi động chậm (tính bằng phút), nhưng cách ly mạnh. - Container: ảo hoá hệ điều hành.…
Chạy vài container trên một máy thì Docker là đủ. Nhưng khi có nhiều container trải qua nhiều host trong production, xuất hiện hàng loạt việc phải làm tự động — đó là lý do cần một orchestrator. Kubernetes lo giúp: - Scheduling: xếp container…
Cả hai khai báo tài nguyên (CPU/memory) cho container nhưng có vai trò khác nhau: - requests: lượng tài nguyên tối thiểu được đảm bảo. Scheduler dùng con số này để chọn node đủ chỗ đặt pod. Đây cũng là cơ sở HPA tính %…
Helm là package manager cho Kubernetes — ví như apt/npm nhưng cho các resource K8s. Đơn vị đóng gói là chart: một bộ manifest được template hoá kèm file values.yaml. Helm giải quyết: - Lặp lại YAML: một ứng dụng thực tế cần nhiều manifest…
Đây là các workload controller ngoài Deployment, cho những mẫu chạy khác nhau: - Job: chạy tới khi hoàn thành (run-to-completion) rồi dừng — hợp tác vụ một lần: migration DB, xử lý batch. Job retry cho tới khi đủ số pod thành công; hỗ…
Hai cách tăng năng lực xử lý khi tải lớn lên: - Vertical scaling (scale up): tăng tài nguyên cho một máy — thêm CPU, RAM, đổi sang instance mạnh hơn. Đơn giản, không đổi kiến trúc, nhưng có trần phần cứng, thường cần downtime…
- Stateless: mỗi request tự chứa đủ thông tin để xử lý; app không giữ state trong bộ nhớ tiến trình giữa các request. Cần dữ liệu thì đọc từ backing service (DB, Redis, object storage). Vì mọi bản (instance) như nhau nên dễ scale…
Prometheus là hệ monitoring kèm time-series database, thu thập số liệu theo mô hình pull: server tự đi scrape endpoint /metrics của các target theo chu kỳ (khác mô hình push, trong đó ứng dụng tự đẩy đi). Target được tìm qua service discovery (K8s,…
Hai chiến lược nhánh (branching model) trái ngược về cách tích hợp: - Trunk-based development: mọi người commit vào một nhánh chính (trunk/main), merge nhỏ và thường xuyên; nhánh feature chỉ tồn tại rất ngắn (dưới một ngày) rồi merge ngay. Tính năng chưa xong…
Ansible là công cụ automation / configuration management — cấu hình máy, cài phần mềm, deploy ứng dụng bằng cách khai báo. Đặc điểm chính: - Agentless: không cần cài agent trên máy đích, chỉ cần SSH + Python — kết nối, đẩy module, thực…
CIDR (Classless Inter-Domain Routing) là cách ký hiệu một dải địa chỉ mạng dạng IP/prefix, trong đó prefix là số bit đầu dành cho phần mạng, phần còn lại là host. - 10.0.0.0/16 → 16 bit đầu là mạng, còn 16 bit cho host →…
Mục tiêu: mỗi commit đi qua một chuỗi stage tự động, chỉ artifact đã qua kiểm tra mới lên được production. Các stage theo thứ tự 1. Lint / format: chặn sớm lỗi style, chạy nhanh nhất trước. 2. Test: unit test + integration test;…
nginx đứng trước ứng dụng, nhận request từ ngoài rồi chuyển tiếp (proxypass) tới app chạy ở port nội bộ. - server block = virtual host: nginx chọn block theo cặp listen + servername khớp header Host của request — nhờ đó một máy chạy…
Quy trình chẩn đoán chuẩn: 1. kubectl get pods: xem status và số lần restart. 2. kubectl describe pod <name: đọc mục Events ở cuối và Last State / Exit Code — đa số nguyên nhân lộ ra ở đây. 3. kubectl logs <pod: log…
Bộ lệnh chẩn đoán: - docker ps -a: xem status và exit code của container đã dừng. - docker logs <container (-f để follow, --tail 100): stdout/stderr của tiến trình chính — nơi đầu tiên tìm nguyên nhân crash. - docker inspect <container: xem State…
Câu hỏi kinh điển kiểm tra hiểu biết xuyên tầng. Chuỗi các bước: 1. DNS: browser kiểm tra cache (browser → OS → resolver). Chưa có thì resolver hỏi đệ quy: root → TLD (.com) → authoritative nameserver → nhận về IP, cache theo TTL.…
Let's Encrypt là CA miễn phí, tự động, cấp chứng chỉ loại DV (domain validation) qua giao thức ACME. Nguyên tắc: chứng minh quyền kiểm soát domain bằng máy, không cần giấy tờ. Luồng cấp phát 1. certbot (ACME client) tạo cặp khoá và gửi…
Một cluster có hai lớp: control plane (bộ não ra quyết định) và các worker node (nơi chạy workload). Control plane: - kube-apiserver — cửa ngõ duy nhất của cluster; mọi thao tác (kubectl, controller, kubelet) đều đi qua REST API này. - etcd —…