DevOps
40 bài viết
Bản chất DevOps: phá bỏ rào cản Dev–Ops, vòng lặp vô tận, CALMS, và vì sao tự động hoá.
Mô hình Git, các lệnh cốt lõi, nhánh & merge, workflow nhóm (Git Flow, trunk-based) và Pull Request.
Container vs máy ảo, image/layer, Dockerfile, volume, network, Docker Compose và best practices.
Continuous Integration/Delivery/Deployment, cấu trúc pipeline, ví dụ GitHub Actions và chiến lược release.
Vì sao cần orchestration; Pod, Deployment, Service, Ingress; scaling, self-healing và cấu hình.
Quản lý hạ tầng bằng code: Terraform (khai báo) vs Ansible (cấu hình), state, idempotency, module.
Ba trụ cột logging–metrics–tracing, Prometheus/Grafana, alerting, SLI/SLO/SLA và golden signals.
DevSecOps, quản lý secret, TLS/mạng, scaling & high availability, và nguyên lý Site Reliability Engineering.
Hiểu container từ gốc: khác gì máy ảo, cơ chế Linux namespaces & cgroups, image gồm các lớp (layers) & chuẩn OCI, kiến trúc Docker (client/daemon/registry), và vòng đời một container.
Viết Dockerfile chuẩn production: các chỉ thị chính, cơ chế layer cache & thứ tự tối ưu, multi-stage build để giảm kích thước, và các thực hành bảo mật (non-root, base image nhỏ, quét lỗ hổng).
Chạy nhiều container cùng nhau: Docker Compose định nghĩa stack đa dịch vụ, mạng container (bridge, DNS nội bộ theo tên service), volume để lưu dữ liệu bền, và registry để chia sẻ image.
Bản đồ Kubernetes: control plane (API server, etcd, scheduler, controller manager), node (kubelet, kube-proxy, container runtime), mô hình khai báo & vòng điều khiển (reconciliation), và cách một Pod được tạo ra.
Các đối tượng chạy ứng dụng trên Kubernetes: Pod, ReplicaSet, Deployment (rolling update/rollback), StatefulSet, DaemonSet, Job/CronJob, cùng labels/selectors và cách chọn đúng workload.
Kết nối và phơi bày ứng dụng trên Kubernetes: mô hình mạng phẳng, các loại Service (ClusterIP/NodePort/LoadBalancer), DNS nội bộ, Ingress cho HTTP, và Network Policy để kiểm soát lưu lượng.
Dữ liệu bền và cấu hình trên Kubernetes: Volume, PersistentVolume & PersistentVolumeClaim, StorageClass & cấp phát động, lưu trữ cho StatefulSet, cùng ConfigMap và Secret để tách cấu hình khỏi image.
Đưa Kubernetes vào production: đóng gói bằng Helm, resource requests/limits & QoS, tự mở rộng (HPA/VPA/Cluster Autoscaler), health probes, chiến lược triển khai, RBAC & bảo mật, và observability.
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.
Làm chủ điều hướng filesystem, đường dẫn tuyệt đối/tương đối, thao tác file (cp/mv/rm/mkdir), wildcard, find & locate, kiểm tra file (stat/du/df/wc), xem file lớn và nén/giải nén dataset — những kỹ năng dùng hàng ngày khi xử lý CSV, log và parquet trên server.
Bộ ba grep/sed/awk cùng cat/less/tail -f/cut/sort/uniq/tr/wc — vũ khí xử lý log và file dữ liệu phẳng của data engineer. Bài xoáy vào ví dụ thực chiến: theo dõi log realtime, đếm mã lỗi HTTP trong access log, tính tổng cột amount trong CSV, và tìm giao dịch theo pattern.
Ba luồng chuẩn stdin/stdout/stderr, chuyển hướng (> >> < 2> 2>&1), pipe |, tee, xargs, command/process substitution và here-doc — bộ 'chất keo' ghép các công cụ nhỏ thành pipeline ETL trên shell. Bài đi từ nền tảng luồng dữ liệu đến các pipeline thực chiến: lọc-xử lý-ghi file, đếm dòng nhiều CSV, tải-giải nén-load.
Mô hình quyền Unix (user/group/other, rwx), chmod/chown/umask, quyền đặc biệt setuid/setgid/sticky bit, user & group, sudo theo nguyên tắc least privilege. Nửa sau bài đi sâu SSH key auth và truyền dữ liệu bằng scp/rsync — chìa khoá để một data engineer ngân hàng truy cập server an toàn và đồng bộ dataset lớn theo kiểu incremental.
Hiểu tiến trình Linux (PID/PPID, trạng thái R/S/D/Z, zombie/orphan), xem và giám sát bằng ps/pgrep/pstree/top/htop, gửi tín hiệu kết thúc đúng cách (SIGTERM vs SIGKILL), và làm chủ job control trong shell (nohup, disown, setsid). Nửa sau đi sâu giám sát tài nguyên (free, vmstat, iostat, df/du) và điều tra job Spark/Python treo hoặc OOM trên server dùng chung.
Lập lịch job trích xuất dữ liệu trên Linux: cú pháp cron 5 trường, crontab, /etc/cron.d, MAILTO, khoá chống chồng job bằng flock; job một lần với at; systemd service & timer (OnCalendar, Persistent) như thay thế cron hiện đại, journalctl và logrotate. Bài mổ xẻ vì sao script chạy tay OK mà cron fail — sự khác biệt login/non-login shell và biến môi trường — cùng cách quản lý package (apt/yum/dnf) và so sánh cron vs systemd timer vs Airflow.
Bài tổng hợp series Linux: viết script bash chắc chắn để tự động hoá pipeline dữ liệu. Từ biến, quoting, tham số, điều kiện, vòng lặp, hàm đến bộ ba an toàn set -euo pipefail, trap dọn dẹp, kiểm tra tiền đề, logging. Có ví dụ script pipeline hoàn chỉnh với retry và idempotent, kỹ thuật debug và ranh giới nên chuyển sang Python/Airflow.
Bài mở đầu series observability: phân biệt monitoring và observability, ba trụ cột metrics–logs–traces (mạnh/yếu và khi nào dùng), các phương pháp chọn tín hiệu (4 Golden Signals, RED, USE), và nền tảng SLI/SLO/SLA cùng error budget để cảnh báo có ý nghĩa.
Prometheus là gì và vì sao thành chuẩn de facto cho metrics: kiến trúc server, mô hình pull, data model time series, TSDB local, service discovery, exporters và cấu hình prometheus.yml.
PromQL từ gốc: bốn kiểu dữ liệu (instant vector, range vector, scalar, string), label matcher, toán tử số học/so sánh/logic, và điểm mấu chốt rate/irate/increase cho counter. Đi sâu aggregation với by/without, histogram_quantile() tính p95/p99 latency, các hàm predict_linear/label_replace, recording rules, cùng loạt ví dụ giám sát API ngân hàng: tỷ lệ lỗi HTTP, độ trễ p99, saturation CPU/RAM.
Bốn kiểu metric của Prometheus (Counter, Gauge, Histogram, Summary) và khi nào dùng cái nào, kèm cách histogram_quantile() tính p95/p99 phía server so với Summary tính quantile phía client. Đi sâu quy ước đặt tên và cảnh báo nổ cardinality, instrument ứng dụng Python bằng prometheus_client expose /metrics, cùng hệ sinh thái exporter: node_exporter, cAdvisor, exporter cho Postgres/Redis/Kafka, pushgateway cho batch job và blackbox exporter để probe endpoint API ngân hàng.
Grafana từ gốc tới thực chiến: kết nối nhiều data source (Prometheus, Loki, Postgres, Elasticsearch), chọn đúng loại panel (time series, stat, gauge, table, heatmap, state timeline), xây panel từ PromQL, template variables ($instance, $job) cho dashboard động, annotations đánh dấu triển khai, transformations/thresholds/màu, provisioning dashboard as-code bằng JSON, và tổ chức dashboard phân tầng theo golden signals/RED cho hệ thống ngân hàng.
Cảnh báo đúng cách cho hệ thống thanh toán ngân hàng: viết alerting rule trong Prometheus (expr PromQL, for duration, severity, annotations), vận hành Alertmanager (routing tree, grouping, inhibition, silence, receivers), nguyên tắc alert tốt (cảnh báo trên triệu chứng, actionable, tránh alert fatigue), cảnh báo theo SLO/error budget với multi-window multi-burn-rate kiểu Google, và phân biệt paging khẩn cấp với ticket không khẩn.
Bổ sung hai trụ cột còn lại bên cạnh metric: structured logging (JSON, level, request_id/trace_id để tương quan) với Grafana Loki và LogQL; distributed tracing với span/trace, context propagation, Grafana Tempo & Jaeger; OpenTelemetry như chuẩn mở thống nhất metrics/logs/traces; và cách nối ba trụ cột (exemplar, trace_id trong log) để điều tra sự cố xuyên dịch vụ trong hệ thống ngân hàng, kèm sampling head/tail.
Bài tổng kết đưa observability lên production quy mô lớn: high availability cho Prometheus (chạy song song + dedup), lưu trữ dài hạn và global view đa cụm với Thanos/Mimir/VictoriaMetrics, federation, giám sát trong Kubernetes (kube-prometheus-stack, ServiceMonitor, Operator), bảo mật và kiểm soát cardinality/chi phí, văn hoá SRE (on-call, runbook, postmortem), khép lại bằng kiến trúc observability tham chiếu và checklist triển khai cho một ngân hàng.
Nhập môn bảo mật ứng dụng cho hệ thống dữ liệu/API ngân hàng: CIA triad + AAA, tư duy tấn công, attack surface, least privilege, defense in depth. Giới thiệu threat modeling với STRIDE, shift-left/DevSecOps và lộ trình toàn series bám theo OWASP.
OWASP và OWASP Top 10 2021 là gì. Đi qua từng nhóm rủi ro A01–A10 với ví dụ tấn công, tác động và cách phòng cốt lõi, dùng làm bản đồ ưu tiên và checklist cho ứng dụng/API dữ liệu ngân hàng.
Đào sâu hai nhóm rủi ro nguy hiểm nhất với ứng dụng dữ liệu ngân hàng: A03 Injection (SQL injection, XSS, command/LDAP/NoSQL/template injection) và A07 Auth Failures. Giải thích cơ chế tấn công, và cách phòng cốt lõi — parameterized query, output encoding, hash mật khẩu mạnh, chống brute-force, MFA và quản lý session an toàn.
Đào sâu hai rủi ro đứng đầu OWASP: A01 Broken Access Control (IDOR/BOLA, leo thang quyền, path traversal) và A02 Cryptographic Failures (mã hoá at-rest/in-transit, TLS, quản lý khoá). Nguyên tắc phòng thủ và bối cảnh dữ liệu ngân hàng.
Quản lý bí mật (secret) và bảo mật chuỗi cung ứng phần mềm: rủi ro hardcode secret và rò rỉ qua git history, giải pháp secret manager (Vault/KMS) và secret scanning; A06 thành phần dễ tổn thương và A08 tính toàn vẹn — SCA, SBOM, pin version, ký & xác minh artifact (Sigstore/SLSA). Bối cảnh ngân hàng.
API là bề mặt tấn công chính của hệ thống dữ liệu hiện đại. Bài đi qua toàn bộ OWASP API Security Top 10 (2023) từ BOLA/IDOR tới quản lý inventory, biện pháp phòng thủ cốt lõi (authz mọi tầng, rate limit, schema, API gateway), khác biệt REST/GraphQL/gRPC, và bối cảnh Open Banking ngân hàng.
Biến 'shift-left' thành hành động: nhúng kiểm thử bảo mật tự động vào CI/CD. Phân biệt SAST, DAST, SCA, secret/image/IaC scanning và khi nào chạy; dựng security pipeline có cổng chặn theo severity; quản lý lỗ hổng theo SLA; văn hoá DevSecOps trong ngân hàng.
Bài tổng kết series: bảo mật lấy dữ liệu làm trung tâm (data-centric security) cho hệ thống dữ liệu ngân hàng — phân loại, mã hoá/tokenization/masking, kiểm soát truy cập, giám sát. Bảo mật database, pipeline, warehouse/lake, API và file; threat với hệ dữ liệu, DLP, quy trình incident response; tuân thủ Nghị định 13, yêu cầu NHNN, PCI-DSS. Bản đồ 8 bài.