Skip to main content

Command Palette

Search for a command to run...

Syllabus tham khảo cho DevOps Learning checklist (Part 2)

Updated
55 min read

5. Learn Logging & Monitoring & Observability

Tuần 1: Nền tảng và ELK/Prometheus/Grafana

Ngày 1: Elasticsearch và Kubernetes (Cơ bản)

  • Buổi sáng:

    • Elasticsearch:

      • Tổng quan, kiến trúc, API, Mapping, Indexing, Searching, Aggregation.

      • Thực hành các thao tác CRUD, search queries, aggregations trên Docker Compose.

    • Elasticsearch và Kubernetes (Giới thiệu):

      • Các mô hình triển khai (StatefulSet, Helm Charts, Operator).

      • Tìm hiểu về Elastic Cloud on Kubernetes (ECK).

  • Buổi chiều:

    • Elasticsearch trên Kubernetes:

      • Triển khai Elasticsearch bằng Helm Charts (Elastic Charts, Bitnami).

      • Cấu hình Persistent Volumes và Storage Classes.

      • Elasticsearch Security trên Kubernetes (RBAC, TLS - giới thiệu).

    • Elasticsearch Configuration:

      • Node roles, resource requirements, storage.

        • Mini Project:
  • Triển khai Elasticsearch bằng Docker Compose và thực hiện các truy vấn tìm kiếm phức tạp.

  • Tìm hiểu về các Helm Charts Elasticsearch phổ biến và các tùy chọn cấu hình.

  • Lập kế hoạch triển khai Elasticsearch trên Kubernetes (sizing, storage, security).

Ngày 2: Logstash/Vector và Kibana (Cơ bản) và trên Kubernetes

  • Buổi sáng:

    • Logstash:

      • Tổng quan, pipeline (Input, Filter, Output), các plugins cơ bản (File, Grok, Date).

      • Thực hành cấu hình Logstash để đọc log từ file và ghi vào Elasticsearch (Docker Compose).

    • Vector:

      • Tổng quan, so sánh với Logstash, các nguồn và sinks cơ bản.

      • Thực hành cấu hình Vector để đọc log từ file và ghi vào stdout.

  • Buổi chiều:

    • Kibana:

      • Tổng quan, Discover, Visualize, Dashboard.

      • Thực hành tạo dashboard đơn giản từ log (Docker Compose).

    • Logstash/Vector và Kibana trên Kubernetes:

      • Triển khai bằng Helm Charts.

      • Log aggregation patterns (sidecar, etc.).

        • Mini Project:
  • Triển khai ELK bằng Docker Compose và cấu hình Logstash để parse log và hiển thị trên Kibana.

  • Triển khai Vector bằng Docker Compose và cấu hình để đọc log từ một ứng dụng mẫu.

  • Tìm hiểu về các Helm Charts Logstash, Kibana, và Vector.

Ngày 3: Prometheus (Cơ bản) và trên Kubernetes

  • Buổi sáng:

    • Prometheus:

      • Tổng quan, kiến trúc, data model (metrics, labels), PromQL (cơ bản).

      • Thực hành viết các PromQL queries đơn giản (Docker Compose).

    • Prometheus Exporters:

      • Node Exporter, cAdvisor.

      • Cài đặt và cấu hình exporters (Docker Compose).

  • Buổi chiều:

    • Prometheus trên Kubernetes (Giới thiệu):

      • Triển khai bằng Helm Charts (kube-prometheus-stack).

      • Service Discovery (Pods, Services).

      • Prometheus Operator (Giới thiệu).

    • Prometheus Configuration (Cơ bản):

      • Scrape configs, rules (recording, alerting).

        • Mini Project:
  • Triển khai Prometheus và Node Exporter bằng Docker Compose và viết các PromQL queries cơ bản.

  • Tìm hiểu về kube-prometheus-stack Helm Chart và các thành phần của nó.

  • Lập kế hoạch triển khai Prometheus trên Kubernetes (service discovery, alerts).

Ngày 4: Grafana và Prometheus Integration

  • Buổi sáng:

    • Grafana:

      • Tổng quan, data sources, dashboards, panels.

      • Thực hành tạo dashboards đơn giản (Docker Compose).

    • Grafana Alerting:

      • Tạo alerts trong Grafana (Docker Compose).
  • Buổi chiều:

    • Prometheus và Grafana Integration:

      • Cấu hình Grafana để kết nối với Prometheus.

      • Tạo dashboards cho hệ thống và ứng dụng.

    • Prometheus và Grafana trên Kubernetes:

      • Triển khai Grafana bằng Helm Charts.

      • Tạo dashboards cho Kubernetes.

        • Mini Project:
  • Triển khai Prometheus và Grafana bằng Docker Compose và tạo một dashboard cơ bản.

  • Tìm hiểu về các Grafana plugins và cách sử dụng chúng.

  • Lập kế hoạch triển khai Grafana trên Kubernetes (data sources, dashboards, alerts).

Ngày 5: Loki và Integration với Prometheus/Grafana

  • Buổi sáng:

    • Loki:

      • Tổng quan, kiến trúc, so sánh với Elasticsearch.

      • LogQL (Loki Query Language) cơ bản.

      • Triển khai Loki bằng Docker Compose.

    • Promtail:

      • Thu thập logs và gửi đến Loki.

      • Cấu hình Promtail.

  • Buổi chiều:

    • Loki Integration với Prometheus:

      • Sử dụng Prometheus để theo dõi Loki.

      • Tạo alerts trong Prometheus dựa trên Loki queries.

    • Loki Integration với Grafana:

      • Thêm Loki làm data source trong Grafana.

      • Tạo dashboards Grafana cho Loki.

    • Loki trên Kubernetes (Giới thiệu).

      • Mini Project:
  • Triển khai Loki và Promtail bằng Docker Compose và cấu hình để thu thập logs từ một ứng dụng.

  • Viết các LogQL queries cơ bản để tìm kiếm và lọc logs.

  • Tạo một dashboard Grafana để hiển thị logs từ Loki.

Tuần 2: ELK/Prometheus/Grafana/Loki Nâng cao và Kubernetes

Ngày 6: Elasticsearch và Kubernetes

  • Buổi sáng:

    • Elasticsearch:

      • Cluster configuration, performance tuning, ILM.

      • Elasticsearch API (nâng cao).

    • Elasticsearch trên Kubernetes:

      • StatefulSets, Persistent Volumes, scaling.

      • Elasticsearch Operator (ECK) (nâng cao).

  • Buổi chiều:

    • Elasticsearch Security trên Kubernetes:

      • RBAC, TLS, Secrets management, audit logging.
    • Elasticsearch Monitoring trên Kubernetes:

      • Prometheus integration, Elasticsearch metrics.
    • Elasticsearch Best Practices trên Kubernetes.

      • Mini Project:
  • Triển khai Elasticsearch cluster trên Kubernetes (nếu có môi trường) và cấu hình ILM.

  • Tối ưu hóa performance của Elasticsearch cluster trên Kubernetes.

  • Cấu hình RBAC và TLS cho Elasticsearch trên Kubernetes.

Ngày 7: Logstash/Vector và Kibana Nâng cao

  • Buổi sáng:

    • Logstash:

      • Grok, các filter plugins khác, performance tuning.

      • Logstash pipelines.

    • Vector Nâng cao:

      • Vector transforms, Vector sinks, Vector performance.

      • Vector data model.

  • Buổi chiều:

    • Kibana Nâng cao:

      • Visualize (Timelion, Canvas), Alerting (nâng cao), API.

      • Kibana Lens.

    • Logstash/Vector và Kibana trên Kubernetes:

      • Sidecar containers, persistent queues, security.

      • ELK Best Practices trên Kubernetes.

        • Mini Project:
  • Cấu hình Logstash hoặc Vector trên Kubernetes để xử lý các loại log phức tạp (ví dụ: log từ nhiều ứng dụng khác nhau).

  • Tạo các dashboards Kibana nâng cao để theo dõi các metrics và logs Kubernetes.

  • Tìm hiểu về các best practices để triển khai ELK trên Kubernetes trong môi trường production.

Ngày 8: Prometheus và Grafana Nâng cao

  • Buổi sáng:

    • Prometheus:

      • PromQL (nâng cao), exporters (custom), service discovery.

      • Prometheus federation.

    • Grafana:

      • Panels (nâng cao), plugins, API.

      • Grafana variables và templates.

  • Buổi chiều:

    • Prometheus và Grafana trên Kubernetes:

      • Service discovery, HPA, cluster monitoring, application monitoring.
    • Prometheus và Grafana Best Practices trên Kubernetes.

      • Mini Project:
  • Cấu hình Prometheus trên Kubernetes để tự động phát hiện và thu thập metrics từ các ứng dụng.

  • Tạo các dashboards Grafana chi tiết để theo dõi cả cluster và ứng dụng Kubernetes.

  • Thiết lập các alerting rules nâng cao trong Prometheus và tích hợp chúng với Grafana.

Ngày 9: Loki và Promtail Nâng cao trên Kubernetes

  • Buổi sáng:

    • Loki Nâng cao:

      • LogQL (nâng cao), Loki architecture, Loki storage, Loki performance.

      • Loki sharding và replication.

    • Promtail Nâng cao:

      • Promtail configuration (nâng cao), Promtail discovery, Promtail pipelines.

      • Promtail và Kubernetes metadata.

  • Buổi chiều:

    • Loki và Promtail trên Kubernetes:

      • Triển khai Loki và Promtail bằng Helm Charts.

      • Cấu hình Promtail để thu thập logs từ các Pods.

      • Loki và Promtail security trên Kubernetes.

    • Loki và Grafana integration trên Kubernetes (nâng cao).

      • Mini Project:
  • Triển khai Loki và Promtail trên Kubernetes và cấu hình để thu thập logs từ một ứng dụng microservices.

  • Viết các LogQL queries phức tạp để phân tích logs và tìm ra các vấn đề.

  • Tạo các dashboards Grafana chi tiết để hiển thị logs từ Loki và kết hợp với các metrics từ Prometheus.

Ngày 10: Security và Production Readiness cho Monitoring trên Kubernetes

  • Buổi sáng:

    • Security cho ELK, Prometheus, Grafana, Loki trên Kubernetes:

      • RBAC, TLS, Network Policies, Security Contexts, Pod Security Policies.

      • Secrets management.

    • Security Best Practices cho Monitoring trên Kubernetes.

  • Buổi chiều:

    • Production Readiness cho Monitoring trên Kubernetes:

      • Scaling và High Availability cho các công cụ monitoring.

      • Backup và Restore.

      • Monitoring CI/CD pipelines.

    • Troubleshooting các vấn đề thường gặp.

      • Mini Project:
  • Cấu hình RBAC và Network Policies để bảo vệ hệ thống monitoring trên Kubernetes.

  • Lập kế hoạch scaling và high availability cho hệ thống monitoring trong môi trường production.

  • Tìm hiểu về các best practices để triển khai monitoring trong một CI/CD pipeline.

Tuần 3: Crossplane và Observability trên Kubernetes

Ngày 11: Crossplane và ELK trên Kubernetes

  • Buổi sáng:

    • Crossplane và Elasticsearch trên Kubernetes:

      • Provisioning Elasticsearch clusters bằng Crossplane.

      • Quản lý cấu hình Elasticsearch (resources, storage, etc.).

      • Tự động hóa việc scaling Elasticsearch.

    • Crossplane và Logstash/Vector trên Kubernetes:

      • Provisioning Logstash/Vector deployments bằng Crossplane.

      • Quản lý Logstash/Vector pipelines và cấu hình.

      • Tích hợp Logstash/Vector với các nguồn log khác nhau.

  • Buổi chiều:

    • Crossplane và Kibana trên Kubernetes:

      • Provisioning Kibana deployments bằng Crossplane.

      • Quản lý dashboards và visualizations.

      • Tự động hóa việc tạo và cập nhật dashboards.

    • Crossplane và ELK Security trên Kubernetes:

      • Quản lý Secrets và RBAC cho ELK.

      • Tự động hóa việc cấu hình TLS.

        • Mini Project:
  • Sử dụng Crossplane để provision một Elasticsearch cluster và một Kibana instance trên Kubernetes.

  • Tự động hóa việc tạo các Logstash pipelines cho các ứng dụng khác nhau bằng Crossplane.

  • Tìm hiểu về cách Crossplane có thể giúp quản lý và cập nhật các dashboards Kibana.

Ngày 12: Crossplane và Prometheus/Grafana trên Kubernetes

  • Buổi sáng:

    • Crossplane và Prometheus trên Kubernetes:

      • Provisioning Prometheus instances bằng Crossplane.

      • Quản lý Prometheus scrape configs và rules.

      • Tự động hóa việc cập nhật cấu hình Prometheus.

    • Crossplane và Grafana trên Kubernetes:

      • Provisioning Grafana instances bằng Crossplane.

      • Quản lý Grafana data sources và dashboards.

      • Tự động hóa việc tạo và cập nhật dashboards.

  • Buổi chiều:

    • Crossplane và Prometheus Operator trên Kubernetes:

      • Provisioning Prometheus Operator bằng Crossplane.

      • Quản lý Prometheus và Alertmanager bằng CRDs.

      • Tự động hóa các tác vụ quản trị Prometheus.

    • Crossplane và Grafana Operator trên Kubernetes (nếu có):

      • Tìm hiểu về các Grafana Operators.

      • Quản lý Grafana bằng CRDs.

        • Mini Project:
  • Sử dụng Crossplane để provision một Prometheus instance và một Grafana instance trên Kubernetes.

  • Tự động hóa việc tạo các Prometheus scrape configs cho các ứng dụng khác nhau bằng Crossplane.

  • Tìm hiểu về cách Crossplane có thể giúp quản lý Prometheus Operator và Grafana Operator (nếu có).

Ngày 13: Crossplane và Loki/Promtail trên Kubernetes

  • Buổi sáng:

    • Crossplane và Loki trên Kubernetes:

      • Provisioning Loki instances bằng Crossplane.

      • Quản lý Loki configuration (storage, sharding, replication).

      • Tự động hóa việc scaling Loki.

    • Crossplane và Promtail trên Kubernetes:

      • Provisioning Promtail DaemonSets bằng Crossplane.

      • Quản lý Promtail configuration và pipelines.

      • Tự động hóa việc cập nhật Promtail configuration.

  • Buổi chiều:

    • Crossplane và Loki/Promtail Integrations:

      • Tự động hóa việc cấu hình Loki data sources trong Grafana.

      • Tự động hóa việc tạo dashboards Grafana cho Loki.

      • Tự động hóa việc cấu hình alerts trong Prometheus dựa trên Loki queries.

    • Crossplane và Loki/Promtail Security:

      • Quản lý RBAC và Secrets cho Loki và Promtail.

      • Tự động hóa việc cấu hình TLS cho Loki.

        • Mini Project:
  • Sử dụng Crossplane để provision một Loki instance và một Promtail DaemonSet trên Kubernetes.

  • Tự động hóa việc tạo các Grafana dashboards để hiển thị logs từ Loki bằng Crossplane.

  • Tìm hiểu về cách Crossplane có thể giúp quản lý và bảo mật Loki và Promtail.

Ngày 14: Crossplane và Kubernetes Observability Infrastructure

  • Buổi sáng:

    • Crossplane và Observability Infrastructure:

      • Provisioning toàn bộ cơ sở hạ tầng observability (ELK, Prometheus, Grafana, Loki) bằng Crossplane.

      • Quản lý dependencies giữa các thành phần observability.

      • Tự động hóa việc tạo và quản lý các namespaces và resources Kubernetes cho observability.

    • Crossplane và Observability Networking:

      • Provisioning các thành phần mạng cần thiết cho observability (Load Balancers, Ingresses, Network Policies).

      • Tự động hóa việc cấu hình networking cho các công cụ observability.

  • Buổi chiều:

    • Crossplane và Observability Storage:

      • Provisioning storage cho Elasticsearch, Prometheus, Loki, và các công cụ observability khác.

      • Quản lý storage classes và persistent volumes.

      • Tự động hóa việc scaling storage cho các công cụ observability.

    • Crossplane và Observability Security:

      • Provisioning các thành phần bảo mật cần thiết cho observability (Secrets, RBAC, TLS).

      • Tự động hóa việc cấu hình security cho các công cụ observability.

        • Mini Project:
  • Sử dụng Crossplane để provision một hệ thống observability đơn giản (Prometheus và Grafana) trên Kubernetes.

  • Tự động hóa việc tạo các Persistent Volumes và Ingresses cho hệ thống observability bằng Crossplane.

  • Tìm hiểu về cách Crossplane có thể giúp quản lý toàn bộ cơ sở hạ tầng observability và giảm thiểu sự can thiệp thủ công.

Ngày 15: Advanced Observability on Kubernetes

  • Buổi sáng:

    • Custom và External Metrics API trên Kubernetes:

      • Triển khai và sử dụng Custom Metrics API và External Metrics API.

      • Prometheus Adapter và Metrics Server.

      • HPA với custom và external metrics.

    • Application Performance Monitoring (APM) trên Kubernetes:

      • Instrumenting applications cho APM (New Relic, Dynatrace).

      • APM và Service Mesh.

  • Buổi chiều:

    • eBPF cho Kubernetes Observability:

      • Giới thiệu về eBPF.

      • Các công cụ eBPF (Cilium, Pixie).

      • Network observability với eBPF.

    • Advanced Logging và Tracing on Kubernetes:

      • Structured và Contextual Logging.

      • Distributed Tracing Standards (OpenTelemetry).

      • Các công cụ và kỹ thuật tracing nâng cao.

        • Mini Project:
  • Triển khai Metrics Server và Prometheus Adapter trên cluster Kubernetes.

  • Cấu hình HPA để scale ứng dụng dựa trên một custom metric.

  • Tìm hiểu về cách eBPF có thể được sử dụng để quan sát lưu lượng mạng Kubernetes.

Tuần 4: Observability in Production và Project

Ngày 16: Observability Architecture và Design

  • Buổi sáng:

    • Observability Architecture:

      • Centralized vs. Distributed Observability.

      • Các thành phần của một hệ thống observability production-grade.

      • Scaling và High Availability cho Observability.

    • Observability Data Storage và Management:

      • Các giải pháp lưu trữ cho metrics, logs, và traces.

      • Retention policies và data lifecycle management.

  • Buổi chiều:

    • Observability Design Patterns:

      • Các mẫu thiết kế observability phổ biến.

      • Các consider khi thiết kế một hệ thống observability.

    • Observability và SRE (Site Reliability Engineering):

      • Các nguyên tắc SRE và cách observability hỗ trợ SRE.

      • SLOs (Service Level Objectives) và SLIs (Service Level Indicators).

        • Mini Project:
  • Thiết kế một kiến trúc observability cho một ứng dụng microservices chạy trên Kubernetes.

  • Chọn các công cụ và giải pháp phù hợp cho từng thành phần của kiến trúc observability.

  • Xác định các SLIs và SLOs quan trọng cho ứng dụng microservices.

Ngày 17: Observability Security và Compliance

  • Buổi sáng:

    • Observability Security:

      • Bảo vệ dữ liệu observability (encryption, access control).

      • Authentication và Authorization cho các công cụ observability.

      • Audit logging cho observability.

    • Observability Network Security:

      • Network Policies cho các thành phần observability.

      • TLS và mTLS cho giao tiếp observability.

  • Buổi chiều:

    • Observability Compliance:

      • Các tiêu chuẩn và quy định liên quan đến dữ liệu log và metrics (GDPR, HIPAA).

      • Các biện pháp để đảm bảo compliance.

    • Observability Audit và Logging:

      • Audit logging cho các hành động trong hệ thống observability.

      • Logging các truy cập và thay đổi cấu hình.

        • Mini Project:
  • Thiết kế một kế hoạch bảo mật cho hệ thống observability trong môi trường production.

  • Xác định các yêu cầu compliance liên quan đến dữ liệu log và metrics của ứng dụng.

  • Cấu hình audit logging cho các công cụ observability.

Ngày 18: Observability Automation và CI/CD

  • Buổi sáng:

    • Observability Automation:

      • Tự động hóa việc triển khai và cấu hình các công cụ observability.

      • Infrastructure as Code (IaC) cho observability (Terraform, Crossplane).

      • Configuration management cho observability (Ansible, Puppet).

    • Observability CI/CD Integration:

      • Tích hợp observability vào quy trình CI/CD.

      • Tự động hóa việc triển khai dashboards và alerts.

  • Buổi chiều:

    • Observability Testing và Validation:

      • Testing các cấu hình observability.

      • Validation của các alerts và dashboards.

    • Observability Rollback và Recovery:

      • Chiến lược rollback cho các thay đổi observability.

      • Disaster recovery cho hệ thống observability.

        • Mini Project:
  • Thiết kế một quy trình CI/CD để tự động hóa việc triển khai và cập nhật các dashboards Grafana.

  • Tìm hiểu về các công cụ và kỹ thuật để testing các cấu hình observability.

  • Lập kế hoạch cho việc rollback và recovery của hệ thống observability trong trường hợp có sự cố.

Ngày 19: Troubleshooting và Incident Response

  • Buổi sáng:

    • Troubleshooting trong Kubernetes và Observability:

      • Các bước và phương pháp luận để giải quyết vấn đề.

      • Sử dụng các công cụ Kubernetes và các công cụ observability để debug.

      • Phân tích logs, metrics, và traces để xác định nguyên nhân gốc rễ.

    • Common Kubernetes và Observability Issues:

      • Các vấn đề thường gặp và cách giải quyết.

      • Các mẫu lỗi và các kỹ thuật để phát hiện chúng.

  • Buổi chiều:

    • Incident Response trong Kubernetes và Observability:

      • Các giai đoạn của một quy trình incident response.

      • Các vai trò và trách nhiệm trong một team incident response.

      • Các kỹ thuật để giảm thiểu thời gian downtime và ảnh hưởng của các sự cố.

    • Automation cho Troubleshooting và Incident Response:

      • Tự động hóa các tác vụ lặp đi lặp lại.

      • Tích hợp các công cụ observability với các công cụ automation.

        • Mini Project:
  • Mô phỏng một sự cố đơn giản trong một ứng dụng microservices chạy trên Kubernetes và sử dụng các công cụ observability để giải quyết vấn đề.

  • Thiết kế một quy trình incident response cho các sự cố liên quan đến hệ thống observability.

  • Tìm hiểu về các công cụ và kỹ thuật để tự động hóa một số tác vụ troubleshooting và incident response trên Kubernetes.

Ngày 20: Project và Review

  • Trong ngày cuối, bạn sẽ dành thời gian để hoàn thiện dự án của mình, review lại các kiến thức đã học và chuẩn bị cho việc triển khai hệ thống monitoring trong môi trường production.

  • Gợi ý dự án:

    • Xây dựng một hệ thống observability hoàn chỉnh cho một ứng dụng microservices chạy trên Kubernetes, sử dụng ELK, Prometheus, Grafana, Loki, Vector, và Crossplane.

    • Tự động hóa việc provisioning, cấu hình, và quản lý cơ sở hạ tầng observability bằng Crossplane.

    • Triển khai các dashboards, alerts, và các công cụ phân tích log và metrics nâng cao.

    • Thiết kế một quy trình incident response và automation cho các sự cố liên quan đến ứng dụng và hệ thống observability.

6. Learn Security Practices

Tuần 1: Nền tảng Bảo mật và Threat Modeling

Ngày 1: Giới thiệu về DevSecOps và Văn hóa Bảo mật

  • Ôn tập và mở rộng về các nguyên tắc cốt lõi của DevSecOps.

  • Phân tích sâu hơn về tầm quan trọng của văn hóa bảo mật và cách xây dựng nó một cách hiệu quả (bao gồm cả các chỉ số đo lường).

  • Các mô hình trưởng thành DevSecOps chi tiết hơn (ví dụ: BSIMM, SAMM) và cách đánh giá mức độ trưởng thành của tổ chức.

  • Mối quan hệ giữa DevSecOps và các framework quản lý rủi ro (ví dụ: FAIR).

  • Mini Project:

    1. Phân tích một trường hợp thực tế về sự thất bại trong bảo mật do thiếu văn hóa bảo mật và đề xuất các giải pháp cải thiện.

    2. Xây dựng một kế hoạch chi tiết để mức độ trưởng thành DevSecOps của một nhóm phát triển cụ thể dựa trên một mô hình trưởng thành đã chọn.

    3. Nghiên cứu và trình bày về cách tích hợp các chỉ số bảo mật vào quy trình DevOps để theo dõi hiệu quả của các hoạt động DevSecOps.

Ngày 2: Threat Modeling - Phần 1: Lý thuyết và Phương pháp luận

  • Đi sâu vào lý thuyết về Threat Modeling: Mục tiêu, lợi ích, các loại threat.

  • So sánh và phân tích chi tiết các phương pháp Threat Modeling phổ biến:

    • STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege).

    • DREAD (Damage potential, Reproducibility, Exploitability, Affected users, Discoverability).

    • PASTA (Process for Attack Simulation and Threat Analysis).

    • VAST (Visual, Agile, and Simple Threat modeling).

    • OCTAVE (Operationally Critical Threat, Asset, and Vulnerability Evaluation).

  • Lựa chọn phương pháp Threat Modeling phù hợp với từng loại dự án và giai đoạn phát triển.

  • Mini Project:

    1. So sánh chi tiết ưu và nhược điểm của hai phương pháp Threat Modeling khác nhau (ví dụ: STRIDE và PASTA) trong một tình huống cụ thể.

    2. Xây dựng một sơ đồ luồng dữ liệu (Data Flow Diagram - DFD) chi tiết cho một tính năng phức tạp của ứng dụng.

    3. Áp dụng phương pháp STRIDE để xác định các mối đe dọa tiềm ẩn cho sơ đồ luồng dữ liệu đã xây dựng.

Ngày 3: Threat Modeling - Phần 2: Thực hành và Công cụ

  • Thực hành Threat Modeling trên các kiến trúc và hệ thống khác nhau (web application, mobile application, cloud infrastructure).

  • Sử dụng các công cụ hỗ trợ Threat Modeling:

    • Microsoft Threat Modeling Tool.

    • OWASP Threat Dragon.

    • IriusRisk.

  • Cách tạo và quản lý threat model một cách hiệu quả.

  • Tích hợp Threat Modeling vào quy trình phát triển Agile.

  • Mini Project:

    1. Sử dụng một công cụ Threat Modeling để xây dựng threat model cho một ứng dụng web đơn giản.

    2. Thực hiện một buổi Threat Modeling nhóm giả định cho một tính năng mới của ứng dụng, sử dụng một phương pháp đã chọn.

    3. Tìm hiểu về cách cập nhật và duy trì threat model khi ứng dụng và môi trường thay đổi.

Ngày 4: Security Requirements Engineering

  • Tầm quan trọng của việc xác định yêu cầu bảo mật rõ ràng và đo lường được.

  • Các loại yêu cầu bảo mật (chức năng và phi chức năng).

  • Kỹ thuật elicitation yêu cầu bảo mật (ví dụ: dựa trên threat model, use case, abuse case).

  • Viết yêu cầu bảo mật tốt (SMART criteria).

  • Traceability giữa yêu cầu bảo mật, thiết kế và kiểm thử.

  • Mini Project:

    1. Dựa trên threat model đã xây dựng ở ngày 3, viết ra các yêu cầu bảo mật tương ứng cho ứng dụng.

    2. Phân tích một tập hợp các yêu cầu và xác định xem chúng có đáp ứng các tiêu chí SMART hay không và đề xuất cải thiện.

    3. Xây dựng ma trận traceability giữa yêu cầu bảo mật và các test case bảo mật.

Ngày 5: Secure Design Principles and Patterns

  • Các nguyên tắc thiết kế bảo mật cốt lõi:

    • Least Privilege.

    • Defense in Depth.

    • Fail Securely.

    • Keep Security Simple.

    • Economy of Mechanism.

    • Complete Mediation.

    • Separation of Privilege.

    • Principle of Least Common Mechanism.

  • Các Security Design Patterns phổ biến và cách áp dụng chúng:

    • Authentication Patterns (e.g., Multi-Factor Authentication).

    • Authorization Patterns (e.g., Role-Based Access Control).

    • Input Validation Patterns.

    • Error Handling Patterns.

    • Cryptography Patterns.

  • Mini Project:

    1. Phân tích một kiến trúc ứng dụng hiện có và xác định xem nó có tuân thủ các nguyên tắc thiết kế bảo mật hay không và đề xuất cải thiện.

    2. Áp dụng một Security Design Pattern cụ thể để giải quyết một vấn đề bảo mật trong một tình huống thiết kế giả định.

    3. Nghiên cứu và trình bày về một Security Design Pattern (ví dụ: Security Token Service).

Tuần 2: Secure Development Practices và Bảo mật Mã nguồn

Ngày 6: Secure Coding Practices - Phần 1: Ngôn ngữ và Framework cụ thể

  • Các lỗ hổng bảo mật phổ biến trong các ngôn ngữ lập trình và framework bạn sẽ sử dụng (ví dụ: Java, Python, Node.js, .NET).

  • Các best practices để viết mã an toàn cho từng ngôn ngữ và framework (ví dụ: tránh SQL injection, XSS, CSRF).

  • Sử dụng các thư viện và framework bảo mật một cách an toàn.

  • Mini Project:

    1. Phân tích một đoạn mã nguồn chứa lỗ hổng bảo mật phổ biến và sửa chữa nó theo các best practices.

    2. Viết một đoạn mã minh họa cách phòng tránh một loại lỗ hổng bảo mật cụ thể trong ngôn ngữ bạn chọn.

    3. Nghiên cứu về các thư viện bảo mật được khuyến nghị cho framework bạn đang sử dụng và cách tích hợp chúng vào dự án.

Ngày 7: Secure Coding Practices - Phần 2: Quản lý Input và Output

  • Input Validation và Sanitization: Tầm quan trọng, kỹ thuật và cách thực hiện hiệu quả để ngăn chặn Injection Attacks.

  • Output Encoding: Ngăn chặn các lỗ hổng như XSS bằng cách encoding dữ liệu trước khi hiển thị.

  • Cách xử lý lỗi và ngoại lệ một cách an toàn, tránh tiết lộ thông tin nhạy cảm.

  • Mini Project:

    1. Xây dựng một form nhập liệu và thực hiện các biện pháp input validation và sanitization để ngăn chặn các tấn công tiềm ẩn.

    2. Phân tích một đoạn mã hiển thị dữ liệu từ người dùng và thêm các biện pháp output encoding phù hợp.

    3. Tìm hiểu về các thư viện validation và sanitization có sẵn cho ngôn ngữ và framework của bạn.

Ngày 8: Static Application Security Testing (SAST) Nâng cao

  • Đi sâu vào cách thức hoạt động của các công cụ SAST.

  • Cấu hình và tùy chỉnh quy tắc phân tích SAST cho phù hợp với dự án.

  • Tích hợp SAST vào quy trình CI/CD một cách hiệu quả (bao gồm cả việc xử lý false positives và false negatives).

  • Phân tích và ưu tiên kết quả SAST để có hành động khắc phục hiệu quả.

  • Mini Project:

    1. Cấu hình một công cụ SAST để chỉ tập trung vào một loại lỗ hổng bảo mật cụ thể.

    2. Phân tích kết quả quét SAST của một dự án thực tế và xác định các lỗ hổng cần được ưu tiên sửa chữa.

    3. Tìm hiểu về cách tạo quy tắc tùy chỉnh cho một công cụ SAST.

Ngày 9: Dynamic Application Security Testing (DAST) Nâng cao

  • Hiểu sâu hơn về các kỹ thuật tấn công được sử dụng bởi các công cụ DAST.

  • Cấu hình DAST để thực hiện các loại quét khác nhau (ví dụ: active scan, passive scan, API scan).

  • Xử lý các thách thức khi quét DAST trên các ứng dụng phức tạp (ví dụ: authentication, session management).

  • Tích hợp DAST vào quy trình CI/CD và phân tích kết quả.

  • Mini Project:

    1. Sử dụng một công cụ DAST để thực hiện quét trên một API.

    2. Cấu hình công cụ DAST để thực hiện authentication trước khi quét một ứng dụng được bảo vệ.

    3. Phân tích kết quả quét DAST và tìm hiểu cách tái hiện các lỗ hổng được phát hiện.

Ngày 10: Software Composition Analysis (SCA)

  • Đi sâu vào cách các công cụ SCA xác định và phân tích các thành phần phần mềm.

  • Quản lý rủi ro liên quan đến các lỗ hổng bảo mật trong dependencies (CVEs).

  • Tự động hóa việc vá lỗi và cập nhật dependencies một cách an toàn.

  • Hiểu về các loại license của phần mềm nguồn mở và các rủi ro liên quan.

  • Mini Project:

    1. Sử dụng một công cụ SCA để quét một dự án lớn với nhiều dependencies và phân tích báo cáo chi tiết.

    2. Tìm hiểu về cách thiết lập chính sách để tự động từ chối các dependencies có lỗ hổng nghiêm trọng.

    3. Nghiên cứu về các công cụ và quy trình để quản lý license của phần mềm nguồn mở trong dự án.

Tuần 3: Bảo mật Hạ tầng và Tích hợp DevSecOps

Ngày 11: Infrastructure as Code (IaC) Security

  • Phân tích sâu hơn về các rủi ro bảo mật trong các công cụ IaC (Terraform, CloudFormation, ARM Templates).

  • Sử dụng các công cụ phân tích bảo mật tĩnh cho IaC (ví dụ: Checkov, Terrascan, tfsec) một cách .

  • Thực hiện kiểm tra tuân thủ (compliance checks) cho cấu hình hạ tầng.

  • Quản lý secrets một cách an toàn trong IaC.

  • Mini Project:

    1. Viết một đoạn mã IaC chứa các cấu hình không an toàn và sử dụng một công cụ phân tích bảo mật tĩnh để phát hiện chúng.

    2. Thiết lập các quy tắc kiểm tra tuân thủ cho một tiêu chuẩn bảo mật cụ thể (ví dụ: CIS Benchmarks) trong công cụ IaC của bạn.

    3. Tìm hiểu và triển khai một phương pháp quản lý secrets an toàn (ví dụ: HashiCorp Vault) trong quy trình IaC.

Ngày 12: Container and Kubernetes Security

  • Các kỹ thuật tấn công container và Kubernetes.

  • Container image hardening best practices.

  • Network Policies trong Kubernetes để thực hiện microsegmentation.

  • Kubernetes RBAC (Role-Based Access Control) và các biện pháp kiểm soát truy cập khác.

  • Sử dụng các công cụ bảo mật Kubernetes runtime (ví dụ: Falco, Sysdig Secure) một cách hiệu quả.

  • Mini Project:

    1. Cấu hình Network Policies phức tạp trong Kubernetes để hạn chế giao tiếp giữa các pods.

    2. Triển khai một ứng dụng có lỗ hổng lên Kubernetes và sử dụng một công cụ runtime security để phát hiện và ngăn chặn các hành vi khai thác.

    3. Tìm hiểu về cách thực hiện audit logging cho các hoạt động trong Kubernetes.

Ngày 13: Cloud Security Best Practices (AWS/Azure/GCP)

  • Đi sâu vào các dịch vụ bảo mật của nhà cung cấp cloud bạn chọn (ví dụ: AWS Security Hub, Azure Security Center, GCP Security Command Center).

  • Identity and Access Management (IAM) và các best practices để quản lý quyền truy cập an toàn.

  • Bảo mật mạng trên cloud (ví dụ: VPC Flow Logs, Traffic Mirroring, PrivateLink/Private Endpoint).

  • Bảo mật dữ liệu trên cloud (ví dụ: KMS, HSM, data masking).

  • Mini Project:

    1. Cấu hình và sử dụng một dịch vụ bảo mật trung tâm của nhà cung cấp cloud để giám sát và quản lý các vấn đề bảo mật.

    2. Thiết lập các chính sách IAM phức tạp để cấp quyền truy cập theo nguyên tắc least privilege.

    3. Triển khai một giải pháp mã hóa dữ liệu trên cloud.

Ngày 14: Security Testing Integration in CI/CD Pipelines

  • Thiết kế và xây dựng các pipeline CI/CD an toàn và hiệu quả.

  • Tích hợp các công cụ SAST, DAST, SCA, và các công cụ bảo mật khác một cách tự động vào pipeline.

  • Xử lý kết quả kiểm thử bảo mật trong pipeline (ví dụ: fail build dựa trên mức độ nghiêm trọng của lỗ hổng).

  • Orchestration và automation của các hoạt động bảo mật trong pipeline.

  • Mini Project:

    1. Xây dựng một pipeline CI/CD hoàn chỉnh tích hợp đầy đủ các công cụ kiểm thử bảo mật đã học.

    2. Cấu hình pipeline để tự động tạo báo cáo bảo mật sau mỗi lần build.

    3. Tìm hiểu về các công cụ orchestration pipeline (ví dụ: Tekton, Argo CD) và cách chúng có thể tăng cường bảo mật.

Ngày 15: Application and Infrastructure Monitoring for Security

  • Thiết lập hệ thống giám sát và logging toàn diện cho cả ứng dụng và hạ tầng.

  • Sử dụng các công cụ SIEM (Security Information and Event Management) (ví dụ: ELK Stack, Splunk) để phân tích log và phát hiện các mối đe dọa.

  • Thiết lập các rule và alert tùy chỉnh để phát hiện các hành vi bất thường.

  • Tích hợp thông tin bảo mật vào các dashboard giám sát.

  • Mini Project:

    1. Thiết lập một hệ thống SIEM và cấu hình nó để thu thập log từ nhiều nguồn khác nhau (ứng dụng, hệ thống, firewall).

    2. Viết các query và rule tùy chỉnh trong SIEM để phát hiện một kịch bản tấn công cụ thể.

    3. Xây dựng một dashboard bảo mật hiển thị các chỉ số quan trọng và cảnh báo.

Tuần 4: Quản trị Bảo mật, Tuân thủ và Thực hành Dự án

Ngày 16: Security Governance and Risk Management

  • Xây dựng và triển khai các chính sách và tiêu chuẩn bảo mật toàn diện.

  • Thực hiện đánh giá rủi ro bảo mật định kỳ và quản lý risk register một cách hiệu quả.

  • Xây dựng khung quản lý rủi ro bảo mật tích hợp với quy trình DevSecOps.

  • Đo lường và báo cáo hiệu quả của các hoạt động bảo mật.

  • Mini Project:

    1. Xây dựng một chính sách bảo mật mẫu cho một loại ứng dụng cụ thể.

    2. Thực hiện đánh giá rủi ro bảo mật chi tiết cho một hệ thống phức tạp và đề xuất các biện pháp giảm thiểu rủi ro.

    3. Xác định các chỉ số hiệu suất chính (KPIs) để đo lường hiệu quả của chương trình DevSecOps.

Ngày 17: Compliance and Security Standards

  • Phân tích sâu hơn các yêu cầu của các tiêu chuẩn và quy định bảo mật khác nhau (ví dụ: GDPR, HIPAA, PCI DSS, ISO 27001).

  • Áp dụng các yêu cầu tuân thủ vào từng giai đoạn của SDLC.

  • Tự động hóa các kiểm tra tuân thủ.

  • Chuẩn bị cho các cuộc audit bảo mật.

  • Mini Project:

    1. Lập bản đồ các yêu cầu bảo mật của một tiêu chuẩn cụ thể (ví dụ: PCI DSS) với các hoạt động DevSecOps.

    2. Sử dụng một công cụ để tự động kiểm tra tuân thủ cho một cấu hình hạ tầng hoặc ứng dụng.

    3. Xây dựng một kế hoạch chuẩn bị cho một cuộc audit bảo mật theo một tiêu chuẩn cụ thể.

Ngày 18: Incident Response and Forensics

  • Đi sâu vào các giai đoạn của Incident Response và các hoạt động chi tiết trong từng giai đoạn.

  • Thực hiện phân tích pháp y (digital forensics) cơ bản để thu thập và phân tích bằng chứng sau một sự cố bảo mật.

  • Sử dụng các công cụ hỗ trợ Incident Response và Forensics.

  • Xây dựng và thực hành các kịch bản Incident Response phức tạp.

  • Mini Project:

    1. Phân tích một trường hợp Incident Response thực tế và xác định các bài học kinh nghiệm.

    2. Thực hiện một quy trình triage và phân tích ban đầu cho một sự cố bảo mật giả định.

    3. Tìm hiểu về các công cụ pháp y số phổ biến và cách sử dụng chúng để phân tích một artifact cụ thể (ví dụ: log file, memory dump).

Ngày 19: Security Awareness and Training

  • Tầm quan trọng của việc nhận thức bảo mật cho toàn bộ đội ngũ.

  • Xây dựng và triển khai các chương trình đào tạo bảo mật hiệu quả cho các đối tượng khác nhau (developers, operations, business users).

  • Các phương pháp và công cụ để tạo nội dung đào tạo hấp dẫn và hiệu quả.

  • Đo lường hiệu quả của các chương trình đào tạo.

  • Mini Project:

    1. Xây dựng một module đào tạo ngắn về một chủ đề bảo mật cụ thể (ví dụ: phishing).

    2. Lập kế hoạch triển khai một chương trình nhận thức bảo mật cho một tổ chức giả định.

    3. Tìm hiểu về các chỉ số để đo lường hiệu quả của một chương trình đào tạo bảo mật.

Ngày 20-30: Dự án Thực tế và Đánh giá Tổng kết

  • Dự án Thực tế :

    • Mục tiêu: Áp dụng toàn bộ kiến thức và kỹ năng đã học để giải quyết một bài toán bảo mật phức tạp trong một môi trường production giả định hoặc một dự án mã nguồn mở.

    • Hoạt động:

      • Lựa chọn một dự án phù hợp (ví dụ: bảo mật một ứng dụng microservices, triển khai một hệ thống SIEM, tự động hóa các kiểm tra tuân thủ, thực hiện pentest nâng cao).

      • Lập kế hoạch chi tiết cho dự án, bao gồm mục tiêu, phạm vi, các bước thực hiện và các công cụ sử dụng.

      • Thực hiện dự án theo kế hoạch, áp dụng các kiến thức về Threat Modeling, Secure Design, Secure Coding, Security Testing, Infrastructure Security, Monitoring, Incident Response, và Compliance.

      • Ghi lại toàn bộ quá trình thực hiện, các thách thức gặp phải và cách giải quyết.

      • Viết báo cáo chi tiết về dự án, bao gồm các phát hiện bảo mật, các biện pháp đã triển khai và các khuyến nghị.

  • Đánh giá Tổng kết (trong suốt 10 ngày cuối):

    • Đánh giá Threat Model: Xây dựng và đánh giá một threat model phức tạp cho dự án thực tế.

    • Code Review : Thực hiện code review bảo mật chi tiết trên mã nguồn của dự án.

    • Pentesting Nâng cao: Thực hiện pentesting trên ứng dụng và hạ tầng của dự án.

    • Phân tích Kết quả Bảo mật Tổng hợp: Phân tích tất cả các kết quả từ các công cụ bảo mật và các hoạt động kiểm thử thủ công.

    • Thiết kế Kiến trúc Bảo mật: Đề xuất một kiến trúc bảo mật toàn diện cho dự án.

    • Xây dựng Quy trình DevSecOps: Đề xuất quy trình DevSecOps chi tiết cho dự án, tích hợp tất cả các hoạt động bảo mật vào vòng đời phát triển.

    • Trình bày Dự án: Trình bày kết quả dự án, các phát hiện bảo mật và các giải pháp đã triển khai.

7. Learn Programming & Scripting


PHẦN 1: GOLANG

Tuần 1: Go Fundamentals

Ngày 1: Go Basics

  • Buổi sáng:

    • Giới thiệu về Go: Lịch sử, triết lý, use cases (DevOps, Cloud-Native).

    • Cài đặt và thiết lập môi trường Go.

    • Cấu trúc chương trình Go: package, import, func main().

    • Kiểu dữ liệu cơ bản: int, float64, bool, string.

    • Biến và hằng số: var, const, short variable declaration (:=).

    • Toán tử: số học, so sánh, logic.

  • Buổi chiều:

    • Control flow: if, else if, else, for, switch.

    • Arrays và Slices: Khai báo, khởi tạo, thao tác.

    • Maps: Khai báo, khởi tạo, thao tác.

    • Functions: Khai báo, gọi hàm, tham số, giá trị trả về.

    • Multiple return values.

      • Mini Project:
  • Viết chương trình Go tính toán diện tích và chu vi của hình tròn.

  • Viết chương trình Go tìm số lớn nhất trong một mảng số nguyên.

  • Viết chương trình Go đảo ngược một chuỗi.

Ngày 2: Go Advanced Types

  • Buổi sáng:

    • Pointers: Khai báo, sử dụng, dereferencing.

    • Structs: Khai báo, khởi tạo, truy cập trường.

    • Methods: Định nghĩa methods cho structs.

    • Interfaces: Khai báo, thực hiện interfaces.

  • Buổi chiều:

    • Errors: Tạo và xử lý errors.

    • Defer, Panic, and Recover: Quản lý execution flow và xử lý exceptions.

    • Goroutines: Concurrency trong Go.

    • Channels: Communication giữa Goroutines.

      • Mini Project:
  • Viết chương trình Go tính toán khoảng cách giữa hai điểm trong không gian 2D sử dụng structs và methods.

  • Viết chương trình Go thực hiện một tác vụ đồng thời (ví dụ: fetch dữ liệu từ nhiều API) sử dụng Goroutines và Channels.

  • Viết chương trình Go xử lý một loại error cụ thể và sử dụng defer để đảm bảo tài nguyên được giải phóng.

Ngày 3: Go Modules and Packages

  • Buổi sáng:

    • Go Modules: Quản lý dependencies, go.mod, go.sum.

    • Packages: Tạo và sử dụng packages.

    • Visibility: Exported và unexported identifiers.

  • Buổi chiều:

    • Testing: Viết unit tests với testing package.

    • Benchmarking: Đo hiệu suất code với testing package.

    • Documentation: Viết documentation cho code với godoc.

      • Mini Project:
  • Tạo một Go module chứa một package thực hiện các phép toán cơ bản.

  • Viết unit tests cho tất cả các hàm trong package đó.

  • Viết documentation cho package và sử dụng godoc để xem documentation.

Ngày 4: Go I/O and Standard Library

  • Buổi sáng:

    • I/O: Đọc và ghi file, osio packages.

    • Networking: Tạo server và client, net package.

    • HTTP: Tạo HTTP server và client, net/http package.

  • Buổi chiều:

    • JSON: Encoding và decoding JSON, encoding/json package.

    • Time: Làm việc với thời gian, time package.

    • Regular Expressions: Làm việc với regular expressions, regexp package.

      • Mini Project:
  • Viết chương trình Go đọc dữ liệu từ một file CSV và ghi vào một file JSON.

  • Viết một HTTP server đơn giản trả về thông tin về hệ thống.

  • Viết chương trình Go kiểm tra xem một chuỗi có khớp với một pattern regex cụ thể hay không.

Ngày 5: Go Concurrency Patterns

  • Buổi sáng:

    • Concurrency Patterns:

      • WaitGroups: Đồng bộ hóa Goroutines.

      • Mutexes: Bảo vệ truy cập đồng thời vào dữ liệu.

      • Select: Xử lý nhiều channel operations.

  • Buổi chiều:

    • Concurrency Patterns (tiếp):

      • Worker Pools: Quản lý pool of Goroutines để thực hiện các tác vụ.

      • Context: Quản lý lifecycle của Goroutines.

      • Error Handling trong Goroutines.

        • Mini Project:
  • Viết chương trình Go thực hiện download nhiều file đồng thời sử dụng WaitGroups.

  • Viết chương trình Go thực hiện một tác vụ tính toán phức tạp trên nhiều Goroutines và sử dụng Mutexes để bảo vệ dữ liệu chung.

  • Viết chương trình Go sử dụng select để xử lý các events từ nhiều channels khác nhau.

Tuần 2: Go for DevOps

Ngày 6: Go for System Programming

  • Buổi sáng:

    • System calls: Sử dụng syscall package để tương tác với hệ điều hành.

    • Processes: Tạo và quản lý processes, os/exec package.

    • Signals: Xử lý signals, os/signal package.

  • Buổi chiều:

    • File system: Thao tác với file system, os package.

    • Networking (nâng cao): TCP/UDP sockets, net package.

    • Monitoring system resources: runtime package.

      • Mini Project:
  • Viết chương trình Go thực thi một lệnh hệ điều hành và lấy output.

  • Viết chương trình Go theo dõi CPU và memory usage.

  • Viết chương trình Go tạo một TCP server đơn giản.

Ngày 7: Go and Cloud APIs

  • Buổi sáng:

    • HTTP Clients: Tạo HTTP clients để tương tác với APIs, net/http package.

    • Authentication: Các phương pháp authentication phổ biến (API keys, OAuth2).

    • Error handling khi gọi APIs.

  • Buổi chiều:

    • AWS SDK for Go: Tương tác với AWS services.

    • Google Cloud Client Libraries for Go: Tương tác với Google Cloud services.

    • Azure SDK for Go: Tương tác với Azure services.

      • Mini Project:
  • Viết chương trình Go list các S3 buckets trong tài khoản AWS của bạn.

  • Viết chương trình Go tạo một VM instance trên Google Cloud.

  • Viết chương trình Go lấy danh sách các Azure VMs trong một resource group.

Ngày 8: Go and Configuration Management

  • Buổi sáng:

    • Parsing configuration files: YAML, JSON, TOML.

    • Templating: Sử dụng text/template package để tạo file cấu hình.

    • Environment variables: Đọc và sử dụng environment variables.

  • Buổi chiều:

    • Integrating with Ansible: Gọi Ansible Playbooks từ Go.

    • Integrating with Terraform: Gọi Terraform CLI từ Go.

    • Building custom configuration management tools in Go.

      • Mini Project:
  • Viết chương trình Go đọc cấu hình từ một file YAML và tạo một file cấu hình Nginx.

  • Viết chương trình Go gọi một Ansible Playbook để cài đặt một package.

  • Viết chương trình Go gọi Terraform CLI để tạo một resource trên cloud.

Ngày 9: Go and Containerization

  • Buổi sáng:

    • Docker API: Tương tác với Docker daemon, docker/docker package.

    • Building Docker images in Go.

    • Running Docker containers in Go.

  • Buổi chiều:

    • Kubernetes Client Go: Tương tác với Kubernetes API.

    • Creating and managing Kubernetes resources in Go.

    • Building Kubernetes operators in Go (giới thiệu).

      • Mini Project:
  • Viết chương trình Go lấy danh sách các Docker images trên host.

  • Viết chương trình Go tạo một Deployment đơn giản trên Kubernetes.

  • Tìm hiểu về Kubernetes operators và cách chúng hoạt động.

Ngày 10: Go and Monitoring/Logging

  • Buổi sáng:

    • Logging: Các thư viện logging phổ biến (logrus, zap).

    • Metrics: Các thư viện metrics phổ biến (prometheus/client_golang).

    • Structured logging.

  • Buổi chiều:

    • Tracing: Distributed tracing (OpenTelemetry).

    • Integrating with ELK: Gửi logs đến ELK.

    • Integrating with Prometheus: Expose metrics cho Prometheus.

      • Mini Project:
  • Viết chương trình Go sử dụng logrus để ghi logs.

  • Viết chương trình Go expose các metrics HTTP request cho Prometheus.

  • Viết chương trình Go instrument một HTTP request với OpenTelemetry để tạo traces.

Tuần 3: Go Advanced

Ngày 11: Go Reflection

  • Buổi sáng:

    • Reflection: reflect package, examining types and values.

    • Setting and getting field values of structs.

    • Calling methods dynamically.

  • Buổi chiều:

    • Use cases for reflection:

      • Serialization/Deserialization.

      • ORM (Object-Relational Mapping).

      • Dependency Injection.

    • Performance considerations with reflection.

      • Mini Project:
  • Viết chương trình Go serialize một struct thành JSON sử dụng reflection.

  • Viết chương trình Go gọi một method của một struct dựa trên tên method cho trước.

  • Tìm hiểu về một ORM library cho Go và cách nó sử dụng reflection.

Ngày 12: Go Context

  • Buổi sáng:

    • Context: context package, managing deadlines, cancellation.

    • Context propagation.

    • Context values.

  • Buổi chiều:

    • Context with Goroutines: Passing context to Goroutines.

    • Context with HTTP requests: Using context in HTTP handlers.

    • Context with database operations.

      • Mini Project:
  • Viết chương trình Go sử dụng context để hủy một Goroutine sau một khoảng thời gian nhất định.

  • Viết HTTP middleware sử dụng context để thêm request ID vào logs.

  • Viết chương trình Go thực hiện một database query với timeout sử dụng context.

Ngày 13: Go Generics

  • Buổi sáng:

    • Generics: Định nghĩa và sử dụng generic types và functions.

    • Type parameters, type constraints.

    • Generic interfaces.

  • Buổi chiều:

    • Use cases for generics:

      • Generic data structures.

      • Generic algorithms.

      • Code reuse.

    • Performance considerations with generics.

      • Mini Project:
  • Viết một generic function để tìm giá trị lớn nhất trong một slice của bất kỳ kiểu dữ liệu nào có thể so sánh được.

  • Viết một generic data structure (ví dụ: stack hoặc queue) có thể chứa các giá trị của bất kỳ kiểu dữ liệu nào.

  • Tìm hiểu về các performance benchmarks so sánh code generic và non-generic.

Ngày 14: Go Error Handling

  • Buổi sáng:

    • Error wrapping: Sử dụng %w verb để wrap errors, errors.Is, errors.As.

    • Custom error types: Định nghĩa các loại error cụ thể.

    • Error handling strategies.

  • Buổi chiều:

    • Error logging: Logging errors với context.

    • Error monitoring: Monitoring error rates.

    • Error propagation in microservices.

      • Mini Project:
  • Viết một chương trình Go xử lý một chuỗi các errors được wrapped và sử dụng errors.Iserrors.As để kiểm tra các loại error cụ thể.

  • Viết một chương trình Go định nghĩa một custom error type cho một use case cụ thể.

  • Tìm hiểu về các công cụ và kỹ thuật để theo dõi error rates trong một ứng dụng Go.

Ngày 15: Go Performance Optimization

  • Buổi sáng:

    • Profiling: Sử dụng pprof package để profile CPU và memory usage.

    • Benchmarking: Viết benchmarks để đo hiệu suất code.

    • Garbage Collection: Hiểu về garbage collection trong Go và cách tối ưu hóa.

  • Buổi chiều:

    • Optimization techniques:

      • Avoiding unnecessary allocations.

      • Using efficient data structures.

      • Concurrent programming optimization.

    • Performance analysis tools.

      • Mini Project:
  • Viết một chương trình Go và sử dụng pprof để xác định các bottlenecks về hiệu suất.

  • Viết một benchmark để so sánh hiệu suất của hai cách triển khai khác nhau của cùng một thuật toán.

  • Tìm hiểu về các best practices để tối ưu hóa code Go.

Tuần 4: Go in Production

Ngày 16: Go and Microservices

  • Buổi sáng:

    • Building microservices in Go:

      • REST APIs.

      • gRPC.

      • Message queues (Kafka, RabbitMQ).

  • Buổi chiều:

    • Microservices patterns:

      • Service discovery.

      • Circuit breaker.

      • Retry.

      • Load balancing.

        • Mini Project:
  • Viết một microservice Go đơn giản sử dụng một framework web (ví dụ: Gin hoặc Echo).

  • Viết một client Go để gọi microservice đó.

  • Tìm hiểu về các công cụ và thư viện hỗ trợ service discovery và circuit breaker trong Go.

Ngày 17: Go and Kubernetes

  • Buổi sáng:

    • Kubernetes Client Go (nâng cao):

      • Informer pattern.

      • Controller pattern.

      • Custom Resource Definitions (CRDs).

  • Buổi chiều:

    • Building Kubernetes Operators in Go (nâng cao).

    • Deploying Go applications on Kubernetes:

      • Dockerfile best practices.

      • Liveness and readiness probes.

      • Resource requests and limits.

        • Mini Project:
  • Viết một controller Go đơn giản để theo dõi một loại Kubernetes resource cụ thể.

  • Viết một Dockerfile tối ưu hóa cho một ứng dụng Go.

  • Tìm hiểu về các công cụ và thư viện hỗ trợ việc xây dựng Kubernetes Operators bằng Go.

Ngày 18: Go and Distributed Systems

  • Buổi sáng:

    • Distributed consensus: Raft, Paxos (giới thiệu).

    • Distributed databases: Cassandra, CockroachDB (giới thiệu).

    • Distributed caching: Redis, Memcached.

  • Buổi chiều:

    • Distributed message queues: Kafka, RabbitMQ.

    • Distributed tracing: Jaeger, Zipkin, OpenTelemetry.

    • Building distributed systems in Go.

      • Mini Project:
  • Tìm hiểu về một thuật toán consensus phổ biến (ví dụ: Raft) và cách nó hoạt động.

  • Tìm hiểu về một distributed database và cách nó đảm bảo tính nhất quán dữ liệu.

  • Tìm hiểu về cách triển khai distributed tracing trong một ứng dụng microservices Go.

Ngày 19: Go Security

  • Buổi sáng:

    • Secure coding practices in Go.

    • Common vulnerabilities (OWASP Top 10).

    • Input validation and sanitization.

  • Buổi chiều:

    • Authentication and authorization in Go.

    • Cryptography in Go: crypto package.

    • Security auditing and logging.

      • Mini Project:
  • Viết một ứng dụng web Go và thực hiện các biện pháp để ngăn chặn SQL injection và XSS attacks.

  • Viết một chương trình Go sử dụng một thư viện cryptography để mã hóa và giải mã dữ liệu.

  • Tìm hiểu về các công cụ và kỹ thuật để thực hiện security auditing cho một ứng dụng Go.

Ngày 20: Go in Production

  • Buổi sáng:

    • Deployment strategies for Go applications.

    • Monitoring and logging Go applications in production.

    • Performance optimization in production.

  • Buổi chiều:

    • Scaling Go applications.

    • Troubleshooting Go applications in production.

    • Best practices for Go in production.

      • Mini Project:
  • Thiết kế một chiến lược deployment cho một ứng dụng Go microservices.

  • Tìm hiểu về các công cụ và kỹ thuật để theo dõi hiệu suất và logs của một ứng dụng Go trong môi trường production.

  • Xem xét các best practices để xây dựng và vận hành các ứng dụng Go trong production.


PHẦN 2: RUST

Tuần 1: Rust Fundamentals

Ngày 21: Rust Basics

  • Buổi sáng:

    • Giới thiệu về Rust: Lịch sử, triết lý, use cases (System Programming, WebAssembly).

    • Cài đặt và thiết lập môi trường Rust (Rustup).

    • Cấu trúc chương trình Rust: fn main(), mod, use.

    • Kiểu dữ liệu cơ bản: i32, f64, bool, char, str, String.

    • Biến và hằng số: let, const, mut.

    • Shadowing.

  • Buổi chiều:

    • Control flow: if, else if, else, loop, while, for.

    • Functions: Khai báo, gọi hàm, tham số, giá trị trả về.

    • Tuples và Arrays.

    • Slices.

      • Mini Project:
  • Viết chương trình Rust tính toán giai thừa của một số.

  • Viết chương trình Rust kiểm tra xem một số có phải là số nguyên tố hay không.

  • Viết chương trình Rust tìm phần tử lớn nhất trong một mảng số nguyên.

Ngày 22: Ownership and Borrowing

  • Buổi sáng:

    • Ownership: Rules of ownership, move, clone, copy.

    • Scope và Drop.

    • String và String literals.

  • Buổi chiều:

    • Borrowing: References, mutable references, borrowing rules.

    • Dangling references.

    • Lifetimes: Generic lifetimes, lifetime elision.

      • Mini Project:
  • Viết chương trình Rust thực hiện một thao tác trên một chuỗi và trả về chuỗi đó mà không copy nó.

  • Viết chương trình Rust quản lý một resource (ví dụ: file) và đảm bảo nó được giải phóng đúng cách sử dụng Drop.

  • Viết chương trình Rust minh họa một trường hợp lỗi dangling reference và cách tránh nó.

Ngày 23: Structs and Enums

  • Buổi sáng:

    • Structs: Khai báo, khởi tạo, truy cập trường.

    • Methods: Định nghĩa methods cho structs.

    • Associated functions.

  • Buổi chiều:

    • Enums: Khai báo, sử dụng, pattern matching.

    • Option và Result: Xử lý nullability và errors.

    • match expression.

      • Mini Project:
  • Viết chương trình Rust định nghĩa một struct để biểu diễn một hình học (ví dụ: hình chữ nhật, hình tròn) và các methods để tính toán diện tích và chu vi.

  • Viết chương trình Rust định nghĩa một enum để biểu diễn các trạng thái khác nhau của một request HTTP và xử lý các trạng thái này bằng match.

  • Viết chương trình Rust sử dụng OptionResult để xử lý các trường hợp có thể có hoặc không có giá trị và các trường hợp có thể xảy ra lỗi.

Ngày 24: Collections

  • Buổi sáng:

    • Vectors: Khai báo, khởi tạo, thao tác.

    • Strings: String và &str, String methods.

    • Hash Maps: Khai báo, khởi tạo, thao tác.

  • Buổi chiều:

    • Iterators: Tạo và sử dụng iterators.

    • Closures: Định nghĩa và sử dụng closures.

    • Higher-order functions: map, filter, reduce.

      • Mini Project:
  • Viết chương trình Rust đọc dữ liệu từ một file CSV và lưu trữ nó trong một vector của structs.

  • Viết chương trình Rust đếm số lần xuất hiện của mỗi từ trong một chuỗi sử dụng Hash Maps.

  • Viết chương trình Rust sử dụng iterators và closures để lọc và biến đổi một vector của số.

Ngày 25: Modules and Crates

  • Buổi sáng:

    • Modules: Định nghĩa, sử dụng, mod, use.

    • Paths: Absolute và relative paths.

    • Visibility: pub.

  • Buổi chiều:

    • Crates: Packages, dependencies, Cargo.toml.

    • Publishing Crates to crates.io (giới thiệu).

    • Workspaces.

      • Mini Project:
  • Tạo một Rust crate chứa một module thực hiện các phép toán cơ bản.

  • Sử dụng crate đó trong một chương trình Rust khác.

  • Tìm hiểu về cách tạo và quản lý workspaces trong Rust.

Tuần 2: Rust for DevOps

Ngày 26: Rust I/O and Standard Library

  • Buổi sáng:

    • I/O: Đọc và ghi file, std::fs, std::io.

    • Networking: TCP/UDP sockets, std::net.

    • HTTP: Tạo HTTP client, các crates như reqwest.

  • Buổi chiều:

    • Threads: Concurrency trong Rust, std::thread.

    • Message Passing: Channels, std::sync::mpsc.

    • Time: Làm việc với thời gian, std::time.

      • Mini Project:
  • Viết chương trình Rust đọc dữ liệu từ một file JSON và ghi vào một file khác.

  • Viết một HTTP client đơn giản để fetch dữ liệu từ một API.

  • Viết chương trình Rust thực hiện download nhiều file đồng thời sử dụng threads và channels.

Ngày 27: Rust and System Programming

  • Buổi sáng:

    • Processes: Tạo và quản lý processes, std::process.

    • Environment variables: Đọc và thiết lập environment variables, std::env.

    • Command Line Arguments: Xử lý command line arguments, std::env.

  • Buổi chiều:

    • File system: Thao tác với file system, std::fs.

    • System calls: Các crates như libc.

    • Memory management (giới thiệu): Raw pointers, unsafe code.

      • Mini Project:
  • Viết chương trình Rust thực thi một lệnh hệ điều hành và lấy output.

  • Viết chương trình Rust đọc các environment variables và in chúng ra.

  • Viết chương trình Rust tạo một directory và một file.

Ngày 28: Rust and Cloud APIs

  • Buổi sáng:

    • HTTP Clients (nâng cao): reqwest crate, async HTTP clients (tokio).

    • Authentication (nâng cao): OAuth2, JWT.

    • Error handling khi gọi APIs (nâng cao).

  • Buổi chiều:

    • AWS SDK for Rust (rusoto hoặc aws-sdk-rust): Tương tác với AWS services.

    • Google Cloud Client Libraries for Rust (giới thiệu).

    • Azure SDK for Rust (giới thiệu).

      • Mini Project:
  • Viết chương trình Rust list các EC2 instances trong tài khoản AWS của bạn.

  • Viết chương trình Rust sử dụng async HTTP client để gọi một API.

  • Tìm hiểu về các crates để tương tác với Google Cloud và Azure APIs.

Ngày 29: Rust and Configuration Management

  • Buổi sáng:

    • Parsing configuration files (nâng cao): serde crate, YAML, TOML.

    • Templating (nâng cao): tera crate.

    • Environment variables (nâng cao): dotenv crate.

  • Buổi chiều:

    • Integrating with Ansible (giới thiệu).

    • Integrating with Terraform (giới thiệu).

    • Building custom configuration management tools in Rust (giới thiệu).

      • Mini Project:
  • Viết chương trình Rust đọc cấu hình từ một file TOML và sử dụng serde để deserialize.

  • Viết chương trình Rust sử dụng tera crate để tạo một file cấu hình Nginx.

  • Tìm hiểu về cách gọi Ansible Playbooks hoặc Terraform CLI từ Rust.

Ngày 30: Rust and Containerization

  • Buổi sáng:

    • Docker API: Các crates để tương tác với Docker API.

    • Building Docker images in Rust.

    • Running Docker containers in Rust.

  • Buổi chiều:

    • Kubernetes Client Rust (kube hoặc k8s-openapi): Tương tác với Kubernetes API.

    • Creating and managing Kubernetes resources in Rust.

    • Building Kubernetes Operators in Rust.

      • Mini Project:
  • Tìm hiểu về các crates để tương tác với Docker API và Kubernetes API từ Rust.

  • Viết chương trình Rust lấy danh sách các Pods trong một namespace cụ thể.

  • Tìm hiểu về các công cụ và thư viện hỗ trợ việc xây dựng Kubernetes Operators bằng Rust.

Tuần 3: Rust Advanced

Ngày 31: Rust Traits

  • Buổi sáng:

    • Traits: Định nghĩa, implement, trait bounds.

    • Trait objects.

    • Generic functions và traits.

  • Buổi chiều:

    • Common traits: Debug, Display, Clone, Copy, Drop, Default.

    • Operator overloading.

    • Associated types.

      • Mini Project:
  • Viết chương trình Rust định nghĩa một trait để biểu diễn các hành vi chung của các hình học và implement trait đó cho các structs khác nhau.

  • Viết chương trình Rust sử dụng trait objects để lưu trữ các giá trị của các kiểu dữ liệu khác nhau trong cùng một collection.

  • Viết chương trình Rust implement trait Display cho một struct tùy chỉnh để in ra một định dạng cụ thể.

Ngày 32: Rust Error Handling

  • Buổi sáng:

    • Result enum (nâng cao): Chaining Results, ? operator.

    • Custom error types: Định nghĩa các loại error cụ thể.

    • Error traits: std::error::Error, thiserror crate.

  • Buổi chiều:

    • Error handling strategies.

    • Error logging: Các crates logging phổ biến (log, tracing).

    • Error monitoring.

      • Mini Project:
  • Viết chương trình Rust xử lý một chuỗi các operations có thể trả về Result và sử dụng ? operator để propogate errors.

  • Viết chương trình Rust định nghĩa một enum custom error type cho một use case cụ thể và sử dụng thiserror crate để đơn giản hóa việc định nghĩa error.

  • Tìm hiểu về các công cụ và thư viện để theo dõi error rates trong một ứng dụng Rust.

Ngày 33: Rust Smart Pointers

  • Buổi sáng:

    • Smart pointers: Box, Rc, Arc, RefCell, RefMut.

    • Box: Allocating data on the heap.

    • Rc và Arc: Shared ownership.

  • Buổi chiều:

    • RefCell và RefMut: Interior mutability.

    • Use cases for smart pointers.

    • Memory safety considerations.

      • Mini Project:
  • Viết chương trình Rust sử dụng Box để lưu trữ một struct lớn trên heap.

  • Viết chương trình Rust sử dụng Rc để chia sẻ ownership của một giá trị giữa nhiều phần code.

  • Viết chương trình Rust sử dụng RefCell để thay đổi một giá trị immutable.

Ngày 34: Rust Concurrency

  • Buổi sáng:

    • Threads (nâng cao): Thread pool, thread builder.

    • Message Passing (nâng cao): Channels (bounded, unbounded).

    • Shared State Concurrency: Mutexes, RwLocks, Atomic types.

  • Buổi chiều:

    • Async Rust (giới thiệu): async/await, Tokio crate.

    • Async traits.

    • Async in web development and networking.

      • Mini Project:
  • Viết chương trình Rust thực hiện một tác vụ tính toán phức tạp trên một thread pool.

  • Viết chương trình Rust sử dụng channels để giao tiếp giữa các threads.

  • Tìm hiểu về crate Tokio và viết một chương trình async đơn giản.

Ngày 35: Rust Macros

  • Buổi sáng:

    • Macros: Declarative macros (macro_rules!).

    • Macro syntax.

    • Macro hygiene.

  • Buổi chiều:

    • Procedural macros: Function-like macros, derive macros, attribute macros.

    • Use cases for macros.

    • Debugging macros.

      • Mini Project:
  • Viết một declarative macro để tạo một hàm đơn giản.

  • Viết một derive macro để tự động implement một trait cho một struct.

  • Tìm hiểu về các use cases khác nhau của macros trong Rust.

Tuần 4: Rust in Production

Ngày 36: Rust and Web Development

  • Buổi sáng:

    • Web frameworks in Rust: Actix-web, Rocket, Warp.

    • Routing, handling requests and responses.

    • Middleware.

  • Buổi chiều:

    • Databases: Connecting to databases (PostgreSQL, MySQL).

    • ORM crates (Diesel).

    • Async web development.

      • Mini Project:
  • Viết một API web đơn giản sử dụng một framework web Rust.

  • Kết nối ứng dụng web với một database đơn giản.

  • Tìm hiểu về các cách để xử lý concurrency trong một ứng dụng web Rust.

Ngày 37: Rust and Cloud-Native

  • Buổi sáng:

    • Building microservices in Rust:

      • REST APIs.

      • gRPC.

      • Message queues (Kafka, RabbitMQ).

  • Buổi chiều:

    • Deploying Rust applications on Kubernetes:

      • Dockerfile best practices.

      • Liveness and readiness probes.

      • Resource requests and limits.

        • Mini Project:
  • Viết một microservice Rust đơn giản sử dụng gRPC.

  • Viết một Dockerfile tối ưu hóa cho một ứng dụng Rust.

  • Tìm hiểu về các best practices để triển khai các ứng dụng Rust trên Kubernetes.

Ngày 38: Rust and Performance

  • Buổi sáng:

    • Benchmarking: Criterion crate.

    • Profiling: Perf, Instruments.

    • Optimization techniques:

      • Zero-cost abstractions.

      • Inlining.

      • SIMD (Single Instruction, Multiple Data) (giới thiệu).

  • Buổi chiều:

    • Async performance:

      • Tokio runtime performance.

      • Optimizing async code.

    • Memory management in Rust (nâng cao):

      • Allocators.

      • Memory profiling.

    • Performance analysis tools.

      • Mini Project:
  • Viết một chương trình Rust và sử dụng Criterion crate để benchmark các phần khác nhau của chương trình.

  • Sử dụng perf hoặc Instruments để profile một ứng dụng Rust và xác định các bottlenecks.

  • Tìm hiểu về các kỹ thuật để tối ưu hóa hiệu suất của code async Rust.

Ngày 39: Rust Security

  • Buổi sáng:

    • Secure coding practices in Rust.

    • Common vulnerabilities:

      • Memory safety issues.

      • Input validation.

      • Web security.

  • Buổi chiều:

    • Cryptography in Rust:

      • Các crates cryptography phổ biến (ring, rustls).

      • Best practices cho cryptography.

    • Security auditing and logging.

      • Mini Project:
  • Viết một ứng dụng web Rust và thực hiện các biện pháp để ngăn chặn các vấn đề bảo mật web phổ biến.

  • Sử dụng một crate cryptography để thực hiện mã hóa và xác thực dữ liệu.

  • Tìm hiểu về các công cụ và kỹ thuật để thực hiện security auditing cho một ứng dụng Rust.

Ngày 40: Rust in Production

  • Buổi sáng:

    • Deployment strategies for Rust applications.

    • Monitoring and logging Rust applications in production.

    • Error handling and recovery in production.

  • Buổi chiều:

    • Scaling Rust applications.

    • Troubleshooting Rust applications in production.

    • Best practices for Rust in production.

      • Mini Project:
  • Thiết kế một chiến lược deployment cho một ứng dụng Rust microservices.

  • Tìm hiểu về các công cụ và kỹ thuật để theo dõi hiệu suất và logs của một ứng dụng Rust trong môi trường production.

  • Xem xét các best practices để xây dựng và vận hành các ứng dụng Rust trong production.


Xem lại phần 1: yentrinh.hashnode.dev/syllabus-tham-khao-ch..

Xem tiếp phần 3: yentrinh.hashnode.dev/syllabus-tham-khao-ch..

More from this blog

Learn DevOps

289 posts