- Blue-green và canary deployment khác nhau thế nào?
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…
- Phân biệt image và container trong Docker?
- 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à gì? Các instruction hay dù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.…
- Layer và build cache trong Docker hoạt động thế nào?
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 là gì? Giải quyết vấn đề gì?
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…
- Volume và bind mount khác nhau thế nào? Vì sao cần chúng?
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ữ…
- Các loại network driver trong Docker?
- 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…
- Docker Compose dùng để làm gì?
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,…
- Làm sao để giảm kích thước Docker image?
- 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 trong Kubernetes là gì?
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…
- Deployment và ReplicaSet khác nhau thế nào?
- 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.…
- Service trong Kubernetes là gì? Có những loại nào?
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 khác Service (LoadBalancer) thế nào?
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…
- ConfigMap và Secret khác nhau thế nào?
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 trong Kubernetes dùng để làm gì?
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 (Horizontal Pod Autoscaler) hoạt động thế nào?
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…
- Liveness probe và readiness probe khác nhau thế nào?
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 và rollback trong Deployment hoạt động thế nào?
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…
- StatefulSet khác Deployment ở điểm nào? Khi nào dùng?
- CI/CD pipeline là gì? Gồm những giai đoạn nào?
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).…
- Phân biệt Continuous Integration, Delivery và Deployment?
- 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 trong CI/CD là gì?
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…
- Amazon EC2 là gì?
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…
- Amazon S3 là gì? Đặc điểm chính?
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 role và IAM policy khác nhau thế nào?
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 là gì? Gồm những thành phần nào?
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ó…
- ALB và NLB khác nhau thế nào? Khi nào dùng cái nào?
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 trong AWS hoạt động thế nào?
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,…
- Amazon RDS là gì? Lợi ích so với tự cài DB trên EC2?
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…
- AWS Lambda và serverless là gì?
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 (CDN) là gì và giải quyết vấn đề gì?
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 và Availability Zone (AZ) khác nhau thế nào?
- 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 và fault tolerance khác nhau thế nào?
- 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 trong Linux là gì? Xem/quản lý bằng lệnh nào?
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 trong Linux là gì? SIGTERM và SIGKILL khác nhau thế nào?
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…
- File permission trong Linux đọc thế nào? `chmod 755` nghĩa là gì?
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à gì? Dùng để làm gì?
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 dùng để làm gì? Cú pháp lịch cron đọc thế nào?
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…
- TCP và UDP khác nhau thế nào? Khi nào dùng cái nào?
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…
- HTTP và HTTPS khác nhau thế nào?
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 là gì? Quá trình phân giải tên miền diễn ra thế nào?
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 balancing là gì? L4 và L7 khác nhau thế nào?
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 +…
- Reverse proxy và forward proxy khác nhau thế nào?
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 là gì? Security group khác Network ACL thế nào?
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 app là gì? Nêu vài nguyên tắc quan trọng.
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. -…
- Infrastructure as Code (IaC) là gì? Terraform giải quyết gì?
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…
- Monitoring, logging và observability khác nhau thế nào?
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à…
- Secrets management là gì? Vì sao không nên hardcode secret?
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…
- Immutable infrastructure là gì? Khác mutable thế nào?
- DevOps là gì? Có phải chỉ là một chức danh hay bộ công cụ?
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…
- Container và máy ảo (VM) khác nhau thế nào?
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.…
- Vì sao cần orchestration (Kubernetes)? Nó giải quyết vấn đề gì?
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…
- Resource requests và limits trong Kubernetes khác nhau thế nào?
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à gì? Giải quyết vấn đề gì trong Kubernetes?
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…
- Job, CronJob và DaemonSet trong Kubernetes dùng khi nào?
Đâ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ỗ…
- Horizontal scaling và vertical scaling khác nhau thế nào?
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…
- Ứng dụng stateless và stateful khác nhau thế nào? Vì sao nên thiết kế stateless?
- 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 hoạt động thế nào? Mô hình pull và các loại metric?
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,…
- Trunk-based development và GitFlow khác nhau thế nào?
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à gì? Khác Terraform thế nào?
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 notation là gì? `10.0.0.0/16` nghĩa là gì?
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 →…
- GitOps là gì? Khác cách deploy CI/CD truyền thống thế nào?
- Terraform state là gì? Vì sao cần remote state và state locking?
- SLI, SLO, SLA và error budget khác nhau thế nào?
- RBAC trong Kubernetes hoạt động thế nào?
- Distributed tracing là gì? Span và trace khác nhau thế nào?
- Mô hình mạng của Kubernetes hoạt động thế nào? Pod giao tiếp ra sao?
- Bạn sẽ thiết kế pipeline CI/CD cho một ứng dụng như thế nào?
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;…
- Làm sao deploy không downtime và rollback nhanh khi có sự cố?
- Bạn sẽ thiết lập monitoring và alerting cho một service như thế nào?
- Cấu hình nginx làm reverse proxy cho ứng dụng Node/PHP thế nào? Virtual host hoạt động ra sao?
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…
- Pod bị CrashLoopBackOff hoặc ImagePullBackOff — bạn chẩn đoán thế nào?
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…
- Container Docker thoát ngay sau khi start hoặc bị kill với exit code 137 — bạn debug thế nào?
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…
- Từ lúc gõ URL đến khi trang hiển thị, chuyện gì xảy ra?
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.…
- Cài SSL/TLS bằng Let's Encrypt và certbot thế nào? Luồng cấp phát và tự động gia hạn ra sao?
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…
- Kiến trúc một cluster Kubernetes gồm những thành phần nào?
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 —…