Syllabus tham khảo cho DevOps Learning checklist (Part 3)
8. Learn Git & GitOps
Tuần 1: Git
Ngày 1: Git Fundamentals
Buổi sáng:
Git Basics:
Lịch sử và triết lý DVCS, so sánh với các VCS khác.
Cài đặt, cấu hình (chi tiết các tùy chọn).
Lệnh cơ bản:
init,clone,add,commit,status,log,diff.Git workflow: Working Directory, Staging Area, Repository (chi tiết).
Git Branching:
Khái niệm, tầm quan trọng, các loại branching.
Lệnh liên quan:
branch,checkout,merge,delete.Chiến lược (Gitflow, GitHub Flow, GitLab Flow) (so sánh, use cases).
Buổi chiều:
Git Remotes:
Khái niệm remote, remote tracking branches.
Lệnh liên quan:
remote,push,pull,fetch(nâng cao).Làm việc với GitHub/GitLab/Bitbucket (API, webhooks).
Git Collaboration:
Mô hình làm việc nhóm (chi tiết).
Pull Requests/Merge Requests : Tạo, review, merge, conflicts.
Code review best practices.
Mini Project:
Tạo một repository Git phức tạp với nhiều branches và remote repositories, mô phỏng một dự án thực tế.
Thực hiện các thao tác branching và merging phức tạp, giải quyết conflicts và sử dụng các tùy chọn nâng cao của các lệnh Git.
Thiết lập một quy trình code review chi tiết và thực hiện review trên một pull request phức tạp.
Ngày 2: Git Rebase và Stash
Buổi sáng:
Git Rebase:
Khái niệm, mục đích, ưu/nhược điểm.
So sánh rebase và merge (chi tiết).
Lệnh liên quan:
rebase,rebase -i.Interactive rebase (chi tiết use cases).
Git Stash:
Khái niệm, mục đích, cách hoạt động.
Lệnh liên quan:
stash,stash list,stash apply,stash drop,stash branch.Use cases (chi tiết).
Buổi chiều:
Git Cherry-pick và Revert:
Cherry-pick: Lựa chọn và áp dụng commits từ branch khác.
Revert: Tạo commit mới để hoàn tác các thay đổi của commit trước.
Use cases và best practices cho cherry-pick và revert.
Git Blame và Bisect:
Blame: Tìm người chịu trách nhiệm cho từng dòng code.
Bisect: Tìm commit gây ra lỗi bằng binary search.
Use cases và best practices cho blame và bisect.
Mini Project:
Thực hiện một interactive rebase phức tạp để viết lại lịch sử commit, kết hợp các commits và thay đổi thứ tự.
Sử dụng Git Stash để làm việc trên nhiều features cùng lúc và chuyển đổi giữa chúng một cách linh hoạt.
Sử dụng Git Bisect để tìm commit gây ra một bug cụ thể trong ứng dụng.
Ngày 3: Git Hooks và Submodules
Buổi sáng:
Git Hooks:
Khái niệm, mục đích, các loại hooks (client-side, server-side).
Viết và cấu hình Git Hooks (shell, script).
Use cases (chi tiết): code linting, unit testing, security checks, email notifications, CI/CD integration.
Git Hook Best Practices:
Performance considerations.
Error handling.
Security considerations.
Buổi chiều:
Git Submodules:
Khái niệm, mục đích, use cases (quản lý dependencies, chia sẻ code).
Lệnh liên quan:
submodule add,submodule init,submodule update,submodule foreach.Quản lý submodules (updating, branching, versioning).
Git Submodule Alternatives:
Package managers.
Monorepos.
So sánh và lựa chọn.
Mini Project:
Viết một pre-commit hook để chạy code linting và unit tests, và từ chối commit nếu có lỗi.
Viết một post-receive hook để tự động deploy ứng dụng lên server khi có push lên branch cụ thể.
Sử dụng Git Submodules để quản lý một thư viện bên ngoài trong dự án của bạn và tìm hiểu về các thách thức và best practices.
Ngày 4: Git Internals
Buổi sáng:
Git Objects:
Chi tiết về các loại Git Objects: Blob, Tree, Commit, Tag.
Cách Git lưu trữ dữ liệu (object database, packfiles).
Git Hashing (SHA-1, SHA-256): Thuật toán và bảo mật.
Git Object Model và data integrity.
Git References:
Chi tiết về các loại Git References: HEAD, Branches, Tags, Remote Tracking Branches.
Symbolic references và cách chúng hoạt động.
Cách Git sử dụng references để quản lý lịch sử và trạng thái của repository.
Buổi chiều:
Git Index:
Chi tiết về chức năng và vai trò của Git Index (Staging Area).
Cách Git Index tương tác với Working Directory và Repository (add, commit, reset).
Index data structure và performance considerations.
Git Configuration:
Chi tiết về các cấp độ cấu hình Git: System, Global, Local, Worktree.
Các tùy chọn cấu hình Git phổ biến và nâng cao (core, branch, remote, alias, push, pull).
Cách cấu hình Git bằng command line và file cấu hình (config file format, precedence).
Mini Project:
Sử dụng các lệnh Git
cat-filevàls-treeđể khám phá và phân tích cấu trúc của Git Objects và References trong một repository.Thực hiện một thao tác
git addvàgit commitvà quan sát cách Git Index được cập nhật và sử dụng trong quá trình này.Cấu hình các Git aliases để rút gọn các lệnh Git dài và phức tạp, và tìm hiểu về các tùy chọn cấu hình nâng cao để tối ưu hóa workflow của bạn.
Ngày 5: Git Workflows và Best Practices
Buổi sáng:
Git Workflows:
Phân tích chi tiết các mô hình làm việc nhóm: Centralized Workflow, Integration Manager Workflow, Dictator and Lieutenant Workflow, Feature Branch Workflow, Forking Workflow.
So sánh ưu và nhược điểm, use cases và best practices cho từng workflow.
Lựa chọn workflow phù hợp cho dự án và team.
Git Branching Strategies:
Phân tích chi tiết các chiến lược branching phổ biến: Gitflow, GitHub Flow, GitLab Flow, Trunk Based Development.
So sánh ưu và nhược điểm, use cases và best practices cho từng chiến lược.
Lựa chọn chiến lược branching phù hợp cho dự án và team.
Buổi chiều:
Git Code Review:
Phân tích chi tiết các khía cạnh của code review: mục đích, lợi ích, thách thức, quy trình, công cụ.
Best practices cho người review và người viết code.
Các metrics đánh giá hiệu quả của code review.
Git Best Practices:
Commit message conventions.
Atomic commits.
Continuous Integration (CI) và Continuous Delivery (CD) integration.
Security considerations khi sử dụng Git.
Mini Project:
Thiết kế và triển khai một quy trình Git workflow chi tiết cho một dự án microservices, bao gồm cả branching strategy, code review process, và CI/CD integration.
Viết một tài liệu hướng dẫn chi tiết về best practices Git cho team của bạn, bao gồm cả commit message conventions, code review guidelines, và security recommendations.
Thực hiện một code review phức tạp trên một pull request lớn, tập trung vào cả tính năng, performance, security, và maintainability.
Tuần 2: Helm và Argo CD
Ngày 6: Helm Fundamentals và Templates
Buổi sáng:
Helm Fundamentals:
Chi tiết về kiến trúc và các thành phần của Helm: Client, Library, Tiller (v2), Driver (v3).
So sánh Helm v2 và v3, các thay đổi và cải tiến.
Cài đặt và cấu hình Helm (chi tiết các tùy chọn).
Các lệnh Helm CLI cơ bản và nâng cao (chi tiết use cases và best practices).
Helm Chart Structure:
Phân tích chi tiết cấu trúc của một Helm Chart:
Chart.yaml,values.yaml,templates/,charts/,crds/.Metadata của Chart:
apiVersion,name,version,description,keywords,sources,dependencies,maintainers.Best practices cho việc tổ chức và cấu trúc chart.
Buổi chiều:
Helm Templates:
Chi tiết về template syntax: Go template, sprig functions, built-in objects.
Control flow trong templates:
if,else,range,with,define,template,block.Template functions và helpers: định nghĩa và sử dụng các functions và helpers tùy chỉnh.
Helm Template Best Practices:
Template inheritance và composition.
Template testing và debugging.
Template performance considerations.
Mini Project:
Tạo một Helm Chart phức tạp cho một ứng dụng web microservices, sử dụng các template functions và helpers để cấu hình các thành phần khác nhau của ứng dụng.
Sử dụng template inheritance và composition để tạo ra các chart có thể tái sử dụng và dễ dàng maintain.
Viết các tests cho Helm Chart để đảm bảo tính đúng đắn và khả năng cấu hình của chart.
Ngày 7: Helm Dependencies và Hooks
Buổi sáng:
Helm Dependencies:
Quản lý dependencies giữa các Helm Charts:
requirements.yaml(v2),dependenciestrongChart.yaml(v3).Subcharts và parent charts: cấu trúc, use cases, best practices.
Helm Library Charts: tạo và sử dụng library charts để chia sẻ logic template.
Helm Dependency Management Strategies:
Versioning dependencies.
Dependency constraints.
Dependency resolution.
Buổi chiều:
Helm Hooks:
Chi tiết về lifecycle hooks:
pre-install,post-install,pre-upgrade,post-upgrade,pre-delete,post-delete,pre-rollback,post-rollback.Hook annotations:
helm.sh/hook,helm.sh/hook-weight,helm.sh/hook-delete-policy.Use cases (chi tiết): database migration, smoke tests, job execution, cleanup tasks.
Helm Hook Best Practices:
Hook ordering và concurrency.
Hook error handling.
Hook lifecycle management.
Mini Project:
Tạo một Helm Chart phức tạp có dependencies với các charts khác (database, message queue, v.v.), và quản lý dependencies một cách hiệu quả.
Sử dụng Helm Hooks để thực hiện các tác vụ trước và sau khi triển khai ứng dụng, ví dụ như chạy database migrations và thực hiện smoke tests.
Thiết kế và triển khai một chiến lược hook phức tạp để quản lý lifecycle của một ứng dụng stateful.
Ngày 8: Argo CD Fundamentals và Applications
Buổi sáng:
Argo CD Fundamentals:
Chi tiết về kiến trúc của Argo CD: API Server, Application Controller, Repository Server, UI, Notifications Controller.
Các thành phần và interactions giữa các thành phần.
Cài đặt và cấu hình Argo CD (chi tiết các tùy chọn và best practices).
Argo CD CLI (chi tiết các lệnh và use cases).
Argo CD API:
Khám phá Argo CD API: Authentication, Authorization, Resources.
Sử dụng API để tự động hóa các tác vụ Argo CD.
Client libraries cho Argo CD API.
Buổi chiều:
Argo CD Applications:
Chi tiết về cấu hình Argo CD Applications:
source,destination,syncPolicy,healthChecks,ignoreDifferences.Các loại source: Git, Helm, Kustomize, Directory.
Sync policies: Automatic, Manual, Automated (prune, createNamespace, allowEmpty).
Argo CD Application Best Practices:
Application lifecycle management.
Application health and status monitoring.
Application dependencies.
Mini Project:
Tạo một Argo CD Application phức tạp cho một ứng dụng microservices, sử dụng các loại source khác nhau và cấu hình các sync policies chi tiết.
Sử dụng Argo CD API để tự động tạo và quản lý Argo CD Applications.
Thiết kế và triển khai một chiến lược quản lý lifecycle cho các ứng dụng Argo CD.
Ngày 9: Argo CD Projects và ApplicationSet
Buổi sáng:
Argo CD Projects:
Chi tiết về Argo CD Projects: cấu trúc, roles, policies, namespaces.
Quản lý quyền truy cập và tài nguyên bằng Projects: RBAC integration.
Multi-tenancy với Argo CD Projects: các mô hình và best practices.
Argo CD Project Best Practices:
Project organization và naming conventions.
Project security considerations.
Project automation.
Buổi chiều:
Argo CD ApplicationSet:
Chi tiết về Argo CD ApplicationSet: Generators, Templates, Policies.
Các loại generators: List, Cluster, Git, Matrix, SCM.
Use cases: multi-cluster deployments, GitOps for Infrastructure, dynamic environments.
Argo CD ApplicationSet Best Practices:
Generator lựa chọn và cấu hình.
Template design và reuse.
Policy management cho ApplicationSets.
Mini Project:
Tạo một hệ thống Argo CD Projects phức tạp để quản lý các ứng dụng và tài nguyên Kubernetes cho nhiều teams và môi trường.
Sử dụng Argo CD ApplicationSet để tự động tạo và quản lý các Argo CD Applications cho một ứng dụng được triển khai trên nhiều clusters khác nhau.
Thiết kế và triển khai một chiến lược ApplicationSet để quản lý cơ sở hạ tầng Kubernetes bằng GitOps.
Ngày 10: Argo CD Sync Options và Hooks
Buổi sáng:
Argo CD Sync Options:
Chi tiết về các sync options:
Prune,CreateNamespace,Apply Out Of Sync Only,Server-Side Apply,RespectIgnoreDifferences,Replace.Use cases và best practices cho từng sync option.
Kết hợp các sync options để tạo ra các hành vi triển khai phức tạp.
Argo CD Sync Windows:
Chi tiết về Argo CD Sync Windows: cấu trúc, schedules, timezones.
Use cases (chi tiết): triển khai trong giờ hành chính, bảo trì, A/B testing.
Best practices cho việc sử dụng Sync Windows.
Buổi chiều:
Argo CD Hooks:
Chi tiết về các loại hooks:
PreSync,Sync,PostSync,SyncFail,Refresh.Hook annotations:
argocd.argoproj.io/hook,argocd.argoproj.io/hook-weight,argocd.argoproj.io/hook-delete-policy.Use cases (chi tiết): database migration, smoke tests, canary deployments, blue/green deployments, notifications.
Argo CD Hook Best Practices:
Hook ordering và concurrency.
Hook error handling và retries.
Hook lifecycle management và cleanup.
Mini Project:
Cấu hình một Argo CD Application phức tạp với các sync options khác nhau để điều khiển chính xác hành vi triển khai.
Sử dụng Argo CD Sync Windows để triển khai ứng dụng chỉ trong giờ hành chính và thực hiện các tác vụ bảo trì trong thời gian cụ thể.
Triển khai một chiến lược hook phức tạp để thực hiện canary deployments hoặc blue/green deployments cho ứng dụng microservices.
Tuần 3: Jenkins và Groovy
Ngày 11: Jenkins Architecture và Setup
Buổi sáng:
Jenkins Architecture:
Chi tiết về kiến trúc Jenkins: Master, Agents, Executor, Queue, Workspace, Artifacts.
Các thành phần và interactions giữa các thành phần.
Jenkins plugins và extensibility.
Jenkins Setup:
Cài đặt và cấu hình Jenkins (chi tiết các tùy chọn và best practices).
Jenkins security: Authentication, Authorization, CSRF protection, v.v.
Jenkins backup và restore strategies.
Buổi chiều:
Jenkins Master/Agent Configuration:
Quản lý Agents: Static, Dynamic, Cloud.
Labeling và node selectors.
Agent communication và security.
Jenkins Plugins:
Quản lý Plugins: cài đặt, cập nhật, gỡ bỏ.
Plugin dependencies và conflicts.
Plugin development (Thử: Tự develop 1 plugin).
Mini Project:
Cài đặt và cấu hình một Jenkins Master/Agent setup phức tạp với nhiều Agents và các loại Agents khác nhau (static, dynamic, cloud).
Cấu hình Jenkins security một cách toàn diện, bao gồm authentication, authorization, và các biện pháp bảo vệ khác.
Tìm hiểu về một Jenkins plugin cụ thể và cấu hình nó để thực hiện một tác vụ tự động hóa phức tạp.
Ngày 12: Jenkins Pipelines
Buổi sáng:
Jenkins Pipeline Syntax:
Chi tiết về syntax của Jenkinsfile: Declarative và Scripted Pipeline.
Các loại steps và directives:
stage,node,agent,steps,options,parameters,environment,when,matrix.Shared Libraries và cách sử dụng chúng để tái sử dụng code.
Jenkins Pipeline Best Practices:
Pipeline as Code principles.
Idempotency và resilience.
Error handling và retries.
Buổi chiều:
Jenkins Pipeline Advanced Features:
Parallel execution và concurrency.
Input và User Interaction.
Triggers và Webhooks.
Pipeline visualization và monitoring.
Jenkins Pipeline Security (Chuyên Sâu):
Secrets management trong Pipelines.
Authentication và Authorization trong Pipelines.
Sandbox và Groovy security.
Mini Project:
Tạo một Jenkinsfile phức tạp cho một CI/CD pipeline hoàn chỉnh, bao gồm build, test, deploy, và các giai đoạn khác.
Sử dụng các features nâng cao của Jenkins Pipelines như parallel execution, input, và triggers để tối ưu hóa pipeline.
Cấu hình Jenkins security để bảo vệ các secrets và hạn chế quyền truy cập vào pipeline.
Ngày 13: Groovy Scripting Fundamentals
Buổi sáng:
Groovy Syntax và Data Types:
Chi tiết về syntax của Groovy: Closures, Strings, Collections, Operators.
Các kiểu dữ liệu trong Groovy: Primitives, Objects, Dynamic Typing.
Groovy Objects và Classes: Định nghĩa, Inheritance, Polymorphism.
Groovy Control Flow và Error Handling:
Các câu lệnh điều khiển luồng:
if,else,switch,for,while,try,catch,finally.Groovy Closures: Định nghĩa, sử dụng, scope.
Groovy Error Handling: Exceptions, Error types, Custom Exceptions.
Buổi chiều:
Groovy Collections và I/O:
Làm việc với Lists, Maps, Sets trong Groovy.
Groovy I/O: Đọc và ghi file, Network operations.
Groovy Serialization và Deserialization: JSON, XML.
Groovy Metaprogramming:
Dynamic method dispatch.
Meta-classes và Meta-methods.
Groovy AST (Abstract Syntax Tree) transformation.
Mini Project:
Viết một Groovy script phức tạp để thao tác với dữ liệu từ nhiều nguồn khác nhau (file, API, database).
Sử dụng Groovy closures để thực hiện các thao tác trên collections và xử lý lỗi.
Tìm hiểu về Groovy metaprogramming và viết một script đơn giản sử dụng metaprogramming.
Ngày 14: Groovy Scripting in Jenkins
Buổi sáng:
Jenkins API và Groovy:
Chi tiết về Jenkins API: REST API, Java API.
Sử dụng Groovy để truy cập và thao tác với Jenkins API.
Các thư viện và helper functions cho Jenkins API.
Jenkins Objects và Variables trong Groovy:
Truy cập các Jenkins objects (build, job, node, v.v.) trong Groovy.
Sử dụng các Jenkins variables và environment variables trong Groovy.
Groovy security trong Jenkins: Sandbox, Script Security Plugin.
**Buổi chiều:
Groovy for Jenkins Automation:
Tự động hóa các tác vụ Jenkins (job creation, configuration, deletion).
Quản lý plugins và credentials bằng Groovy.
Tạo các custom Jenkins steps bằng Groovy.
Groovy Error Handling và Retry:
Xử lý lỗi trong Groovy scripts.
Retry strategies và exponential backoff.
Logging và monitoring Groovy scripts.
Mini Project:
Viết một Groovy script phức tạp để tự động tạo và cấu hình một Jenkins job dựa trên các parameters đầu vào.
Sử dụng Groovy để quản lý các plugins và credentials trong Jenkins.
Tạo một custom Jenkins step bằng Groovy để thực hiện một tác vụ tự động hóa cụ thể.
Ngày 15: Groovy và DevOps
Buổi sáng:
Groovy và Infrastructure as Code (IaC):
Sử dụng Groovy để gọi các công cụ IaC (Terraform, AWS CLI, v.v.).
Tự động hóa việc provisioning và quản lý cơ sở hạ tầng bằng Groovy.
Groovy và Crossplane.
Groovy và Configuration Management:
Sử dụng Groovy để gọi các công cụ configuration management (Ansible, Puppet, v.v.).
Tự động hóa việc cấu hình và quản lý hệ thống bằng Groovy.
Groovy và Chef (ví dụ).
Buổi chiều:
Groovy và Containerization:
Sử dụng Groovy để gọi Docker CLI và Kubernetes CLI.
Tự động hóa việc build, push, và deploy containers bằng Groovy.
Groovy và Kubernetes Operators.
Groovy và Observability:
Sử dụng Groovy để tích hợp với các công cụ monitoring và logging (Prometheus, Elasticsearch, v.v.).
Tự động hóa việc tạo và quản lý dashboards và alerts bằng Groovy.
Groovy và OpenTelemetry.
Mini Project:
Viết một Groovy script phức tạp để tự động hóa việc provisioning và cấu hình một môi trường phát triển (VMs, network, storage).
Sử dụng Groovy để tích hợp Jenkins với các công cụ monitoring và logging để theo dõi hiệu suất và sức khỏe của các ứng dụng được deploy.
Tìm hiểu về cách sử dụng Groovy để tương tác với các công cụ và technologies DevOps khác nhau và tạo ra các giải pháp tự động hóa toàn diện.
Tuần 4: Vault và Keycloak
Ngày 16: Vault Fundamentals và Authentication
Buổi sáng:
Vault Fundamentals:
Chi tiết về kiến trúc Vault: Core, Storage Backend, Audit Log, Replication.
Các thành phần và interactions giữa các thành phần.
Cài đặt và cấu hình Vault (chi tiết các tùy chọn và best practices).
Vault CLI (chi tiết các lệnh và use cases).
Vault API:
Khám phá Vault API: Authentication, Authorization, Secret Engines, System.
Sử dụng API để tự động hóa các tác vụ Vault.
Client libraries cho Vault API.
Buổi chiều:
Vault Authentication Methods:
Chi tiết về các phương pháp authentication: Token, AppRole, Userpass, LDAP, AWS IAM, Kubernetes, GCP, Azure.
So sánh ưu và nhược điểm và use cases cho từng phương pháp.
Best practices cho việc cấu hình và sử dụng các phương pháp authentication.
Vault Authentication Plugins:
Tìm hiểu về các authentication plugins khác nhau và cách sử dụng chúng.
Writing custom authentication plugins.
Authentication chaining và multi-factor authentication (MFA).
Mini Project:
Cấu hình Vault với một phương pháp authentication phức tạp (ví dụ: Kubernetes hoặc AWS IAM) và thiết lập các policies để kiểm soát quyền truy cập.
Sử dụng Vault API để tự động hóa việc tạo và quản lý secrets và policies.
Tìm hiểu về một authentication plugin cụ thể và cấu hình nó để tích hợp với một hệ thống bên ngoài.
Ngày 17: Vault Secret Engines và Policies
Buổi sáng:
Vault Secret Engines:
Chi tiết về các Secret Engines: Key/Value (KV), Transit, Database, SSH, PKI, AWS, Azure, GCP.
So sánh ưu và nhược điểm và use cases cho từng Secret Engine.
Best practices cho việc cấu hình và sử dụng các Secret Engines.
Vault Secret Engine Plugins:
Tìm hiểu về các Secret Engine plugins khác nhau và cách sử dụng chúng.
Writing custom Secret Engine plugins (giới thiệu).
Secret Engine versioning và data migration.
Buổi chiều:
Vault Policies:
Chi tiết về Vault Policies: Path-based policies, ACLs, Capabilities.
Policy syntax và cấu trúc.
Policy inheritance và precedence.
Vault Policy Best Practices:
Least privilege principle.
Policy organization và naming conventions.
Policy testing và auditing.
Mini Project:
Cấu hình Vault với nhiều Secret Engines khác nhau (KV, Transit, Database) và sử dụng chúng để quản lý các loại secrets khác nhau.
Viết các Vault Policies phức tạp để kiểm soát quyền truy cập vào các Secret Engines và paths khác nhau.
Tìm hiểu về một Secret Engine plugin cụ thể và cấu hình nó để tích hợp với một hệ thống bên ngoài.
Ngày 18: Vault Lease và Renewal và Integration
Buổi sáng:
Vault Lease và Renewal:
Chi tiết về Vault Lease và Renewal: TTL, Max TTL, Renewability, Revocation.
Lease types và behaviors.
Use cases và best practices cho Lease và Renewal.
Vault Lease Management Strategies:
Automatic vs. Manual lease renewal.
Lease renewal clients và libraries.
Lease expiration handling.
Buổi chiều:
Vault Integration:
Chi tiết về tích hợp Vault với các hệ thống khác nhau: Kubernetes, Ansible, Terraform, applications.
Authentication và Authorization trong tích hợp.
Secret injection và dynamic secrets.
Vault Integration Best Practices:
Security considerations.
Performance considerations.
Error handling và retry.
Mini Project:
Cấu hình Vault để cấp phát dynamic database credentials và quản lý lease và renewal của chúng.
Tích hợp Vault với một ứng dụng Kubernetes để inject secrets vào các Pods.
Sử dụng Vault để quản lý secrets trong một Ansible playbook hoặc một Terraform configuration.
Ngày 19: Vault in Production
Buổi sáng:
Vault Architecture và Scaling:
Chi tiết về Vault architecture: Core, Storage Backend, Replication, Performance Standby.
Scaling Vault: Horizontal scaling, Read replicas.
High Availability (HA) cho Vault: Raft, Consul, Integrated Storage.
Buổi chiều:
Vault Security in Production:
Security hardening cho Vault.
Authentication và Authorization best practices.
Audit logging và monitoring cho Vault.
Vault Backup và Restore:
Backup strategies cho Vault.
Restore procedures cho Vault.
Disaster recovery cho Vault.
Mini Project:
Triển khai và cấu hình một Vault HA cluster sử dụng Raft hoặc Consul.
Thiết lập audit logging cho Vault và cấu hình monitoring để theo dõi hoạt động của Vault.
Thiết kế và triển khai một chiến lược backup và restore cho Vault trong môi trường production.
Ngày 20: Keycloak Fundamentals và Authentication
Buổi sáng:
Keycloak Fundamentals:
Chi tiết về kiến trúc Keycloak: Server, Realm, Client, User, Role, Group, Provider.
Các thành phần và interactions giữa các thành phần.
Cài đặt và cấu hình Keycloak (chi tiết các tùy chọn và best practices).
Keycloak Admin Console (chi tiết các tính năng và use cases).
Keycloak CLI.
Keycloak API:
Khám phá Keycloak Admin REST API: Authentication, Authorization, Users, Clients, Realms, v.v.
Sử dụng API để tự động hóa các tác vụ Keycloak.
Client libraries cho Keycloak Admin REST API (nếu có).
Buổi chiều:
Keycloak Authentication:
Chi tiết về các phương pháp authentication: Username/Password, Social Login (Facebook, Google, v.v.), Kerberos, LDAP, SAML, OpenID Connect.
So sánh ưu và nhược điểm và use cases cho từng phương pháp.
Best practices cho việc cấu hình và sử dụng các phương pháp authentication.
Keycloak Authentication Flows:
Chi tiết về các flows authentication khác nhau trong Keycloak (Direct Grant, Authorization Code, Implicit, Client Credentials).
Customizing authentication flows.
Authentication SPI (Service Provider Interface) (giới thiệu).
Mini Project:
Cấu hình Keycloak với một phương pháp authentication phức tạp (ví dụ: LDAP hoặc OpenID Connect) và thiết lập các policies để kiểm soát quyền truy cập.
Sử dụng Keycloak Admin REST API để tự động tạo và quản lý users, clients, và realms.
Tìm hiểu về một authentication SPI cụ thể và cách sử dụng nó để tùy chỉnh quá trình authentication.
Ngày 21: Keycloak Clients và Protocols
Buổi sáng:
Keycloak Clients:
Chi tiết về Keycloak Clients: Client types (Confidential, Public, Bearer-only), Client scopes, Client policies.
Client adapters và libraries cho các ngôn ngữ lập trình và frameworks khác nhau.
Best practices cho việc cấu hình và sử dụng Keycloak Clients.
Keycloak Client Protocols:
Chi tiết về các client protocols: OpenID Connect (OIDC), SAML, OAuth 2.0.
So sánh ưu và nhược điểm và use cases cho từng protocol.
Best practices cho việc sử dụng các client protocols.
Buổi chiều:
Keycloak Client Adapters:
Tìm hiểu về các client adapters khác nhau cho các ngôn ngữ lập trình và frameworks (Java, JavaScript, Python, v.v.).
Cấu hình và sử dụng client adapters để tích hợp Keycloak với các ứng dụng.
Customizing client adapters.
Keycloak Client Libraries:
Tìm hiểu về các client libraries khác nhau cho các ngôn ngữ lập trình (Node.js, Go, v.v.).
Cấu hình và sử dụng client libraries để tích hợp Keycloak với các ứng dụng.
Client library best practices.
Mini Project:
Cấu hình Keycloak Clients phức tạp cho các ứng dụng web và API khác nhau, sử dụng các client types và scopes khác nhau.
Tích hợp Keycloak với một ứng dụng web bằng một client adapter hoặc library cụ thể.
Tìm hiểu về các best practices để cấu hình và sử dụng các client protocols (OIDC, SAML, OAuth 2.0) trong các ứng dụng.
Ngày 22: Keycloak Roles và Groups
Buổi sáng:
Keycloak Roles:
Chi tiết về Keycloak Roles: Realm Roles, Client Roles, Composite Roles.
Role mapping và inheritance.
Role policies.
Keycloak Groups:
Chi tiết về Keycloak Groups: Group hierarchy, Group membership, Group attributes.
Group mapping và synchronization.
Group policies.
Buổi chiều:
Keycloak Roles và Groups Integration:
Map Roles to Groups: Role-based access control (RBAC) sử dụng Groups.
Group-based authorization.
Fine-grained access control.
Keycloak Authorization:
Keycloak Authorization Services.
Policies, Permissions, Resources, Scopes.
Policy Enforcement Points (PEPs).
Mini Project:
Cấu hình Keycloak Roles và Groups phức tạp để quản lý quyền truy cập vào các tài nguyên của ứng dụng.
Implement fine-grained access control sử dụng Keycloak Authorization Services.
Tìm hiểu về các best practices để sử dụng Roles và Groups cho authorization trong các ứng dụng.
Ngày 23: Keycloak in production
Buổi sáng:
Keycloak Architecture và Scaling:
Chi tiết về kiến trúc Keycloak: Server, Database, Cache, Proxy.
Scaling Keycloak: Horizontal scaling, Database scaling.
High Availability (HA) cho Keycloak: Clustering, Load balancing.
Keycloak Performance Tuning:
Database tuning.
Caching strategies.
JVM tuning.
Buổi chiều:
Keycloak Security in Production:
Security hardening cho Keycloak.
Authentication và Authorization best practices.
Audit logging và monitoring cho Keycloak.
Keycloak Backup và Restore:
Backup strategies cho Keycloak.
Restore procedures cho Keycloak.
Disaster recovery cho Keycloak.
Mini Project:
Triển khai và cấu hình một Keycloak HA cluster.
Cấu hình performance tuning cho Keycloak để xử lý lượng lớn users và requests.
Thiết kế và triển khai một chiến lược backup và restore cho Keycloak trong môi trường production.
Ngày 24: Keycloak integration
Buổi sáng:
Keycloak Integration with Applications:
Tích hợp Keycloak với các loại ứng dụng khác nhau (web, mobile, single-page applications, APIs).
Authentication và Authorization workflows cho các ứng dụng.
Session management và Single Sign-On (SSO).
Keycloak Integration with APIs:
Bảo vệ APIs bằng Keycloak.
OAuth 2.0 và JWT (JSON Web Tokens).
API Gateway integration.
Buổi chiều:
Keycloak Integration with Kubernetes:
Authentication và Authorization cho Kubernetes API bằng Keycloak (OIDC).
Service Accounts và RBAC integration.
Kubernetes Ingress và Keycloak.
Keycloak Integration with Identity Providers (Chuyên Sâu):
Federation với các Identity Providers khác (LDAP, Active Directory, Social Identity Providers).
Identity Brokering.
User synchronization.
Mini Project:
Tích hợp Keycloak với một ứng dụng web phức tạp và một API backend, sử dụng các authentication và authorization workflows khác nhau.
Cấu hình Keycloak để xác thực người dùng cho Kubernetes API và tích hợp với RBAC.
Thiết lập federation với một Identity Provider bên ngoài (ví dụ: LDAP) và cấu hình user synchronization.
Ngày 25-30: Project và Review
Trong 5 ngày cuối, bạn sẽ tập trung vào một hoặc hai dự án thực tế để củng cố kiến thức và kỹ năng đã học. Các dự án này nên đủ phức tạp để bạn có thể áp dụng nhiều khái niệm và công cụ khác nhau.
Gợi ý dự án:
Xây dựng một hệ thống CI/CD hoàn chỉnh cho một ứng dụng microservices sử dụng Jenkins, Argo CD, và Kubernetes:
Sử dụng Jenkins để build, test, và đóng gói ứng dụng.
Sử dụng Argo CD để tự động deploy ứng dụng lên Kubernetes.
Tích hợp Vault để quản lý secrets trong quá trình build và deploy.
Sử dụng Keycloak để bảo vệ các endpoints của ứng dụng.
Tự động hóa việc provisioning và quản lý cơ sở hạ tầng trên cloud sử dụng Crossplane và Jenkins:
Sử dụng Crossplane để provision các tài nguyên cloud (VPCs, Subnets, EC2 instances, v.v.).
Sử dụng Jenkins và Groovy để tự động hóa quy trình provisioning.
Tích hợp Vault để quản lý các credentials và API keys.
Sử dụng Keycloak để quản lý quyền truy cập vào các tài nguyên cloud.
Xây dựng một hệ thống authentication và authorization tập trung cho một ứng dụng phân tán sử dụng Keycloak và các công cụ khác:
Sử dụng Keycloak để quản lý users, roles, và permissions.
Tích hợp Keycloak với các ứng dụng và APIs khác nhau.
Sử dụng các công cụ khác (ví dụ: API Gateway) để enforce authorization.
Thiết kế một quy trình SSO (Single Sign-On) cho các ứng dụng.
Trong quá trình thực hiện dự án, hãy:
Ghi lại chi tiết các bước thực hiện.
Giải quyết các vấn đề phát sinh một cách chủ động.
Tìm kiếm các giải pháp tối ưu và hiệu quả.
Refactor code và cấu hình khi cần thiết.
Viết tài liệu chi tiết cho dự án.
9. End To End Application Delivery Lifecycle
Tuần 1: Quản lý Dự án Phần mềm
Ngày 1: Các Mô hình Phát triển Phần mềm
Buổi sáng:
Mô hình truyền thống (Waterfall):
Các giai đoạn, ưu nhược điểm, use cases.
Các biến thể của Waterfall (V-Model, Iterative Waterfall).
Mô hình Agile:
Các nguyên tắc và giá trị của Agile.
Các framework Agile phổ biến (Scrum, Kanban, XP).
So sánh Agile với Waterfall.
Buổi chiều:
Mô hình DevOps:
Các nguyên tắc và practices của DevOps.
Mối quan hệ giữa DevOps và Agile.
DevOps Culture và Automation.
Lựa chọn mô hình phát triển phù hợp:
Các yếu tố ảnh hưởng đến việc lựa chọn mô hình.
Best practices cho việc áp dụng từng mô hình.
Mini Project:
Phân tích một dự án phần mềm cụ thể và xác định mô hình phát triển phần mềm phù hợp nhất.
So sánh chi tiết các framework Agile (Scrum, Kanban, XP) và xác định use cases cho từng framework.
Thiết kế một kế hoạch chuyển đổi sang DevOps cho một tổ chức.
Ngày 2: Quản lý Yêu cầu
Buổi sáng:
Các loại yêu cầu:
Yêu cầu nghiệp vụ (Business Requirements).
Yêu cầu người dùng (User Requirements).
Yêu cầu chức năng (Functional Requirements).
Yêu cầu phi chức năng (Non-Functional Requirements).
Các kỹ thuật thu thập yêu cầu:
Phỏng vấn, khảo sát, workshop.
Use Cases, User Stories.
Prototyping.
Buổi chiều:
Phân tích và mô hình hóa yêu cầu:
Diagrams (UML, BPMN).
Data modeling.
Acceptance Criteria.
Quản lý thay đổi yêu cầu:
Change Request process.
Impact Analysis.
Prioritization.
Mini Project:
Thu thập và phân tích yêu cầu cho một ứng dụng web đơn giản.
Mô hình hóa các yêu cầu bằng Use Cases và User Stories.
Thiết kế một quy trình Change Request cho một dự án phần mềm.
Ngày 3: Lập kế hoạch và Quản lý Phạm vi
Buổi sáng:
Work Breakdown Structure (WBS):
Các kỹ thuật tạo WBS.
Ước tính effort và thời gian.
Project Scheduling (Gantt chart, PERT chart).
Resource Management:
Phân công công việc.
Team building và collaboration.
Communication plan.
Buổi chiều:
Scope Management:
Scope definition và Scope baseline.
Scope Creep và Scope Change Control.
Deliverables và Acceptance.
Risk Management:
Risk Identification, Analysis, Response.
Risk Monitoring và Control.
Mini Project:
Tạo WBS và Gantt chart cho một dự án phần mềm đơn giản.
Thiết kế một kế hoạch quản lý phạm vi cho một dự án.
Xây dựng một kế hoạch quản lý rủi ro cho một dự án phần mềm.
Ngày 4: Quản lý Chất lượng Phần mềm
Buổi sáng:
Các nguyên tắc và tiêu chuẩn chất lượng phần mềm:
ISO 9126 và ISO 25000.
Software Quality Assurance (SQA).
Software Testing Life Cycle (STLC).
Các cấp độ và loại hình kiểm thử:
Unit Testing, Integration Testing, System Testing, Acceptance Testing.
Functional Testing, Non-Functional Testing.
Buổi chiều:
Các kỹ thuật kiểm thử:
Black Box Testing, White Box Testing.
Test Case Design.
Test Automation.
Quản lý Defects:
Defect Life Cycle.
Defect Tracking và Reporting.
Root Cause Analysis.
Mini Project:
Thiết kế một kế hoạch kiểm thử cho một ứng dụng web đơn giản.
Viết các test case cho một module cụ thể của ứng dụng.
Sử dụng một công cụ test automation để tự động hóa các test case.
Ngày 5: Quản lý Cấu hình Phần mềm
Buổi sáng:
Software Configuration Management (SCM):
Các hoạt động SCM (Identification, Control, Audit, Status Accounting).
Configuration Items (CIs).
Configuration Baseline.
Version Control Systems (VCS):
Git, SVN.
Branching và Merging.
Code Review.
Buổi chiều:
Build Management:
Build Automation.
Continuous Integration (CI).
Build Artifacts và Repositories.
Release Management (Nâng cao):
Release Planning và Scheduling.
Release Notes và Documentation.
Release Deployment và Verification.
Mini Project:
Thiết kế một chiến lược branching và merging cho một dự án phần mềm.
Cấu hình một hệ thống CI để tự động hóa quá trình build và test.
Xây dựng một quy trình release management cho một ứng dụng microservices.
Tuần 2: Triển khai và Quản lý Ứng dụng
Ngày 6: Quản lý Môi trường
Buổi sáng:
Các loại môi trường:
Development, Testing, Staging, Production.
Environment Configuration.
Environment Isolation.
Infrastructure Provisioning:
Manual vs. Automated Provisioning.
Infrastructure as Code (IaC).
Cloud Infrastructure.
Buổi chiều:
Continuous Delivery (CD):
Deployment Pipelines.
Deployment Strategies (Blue/Green, Canary).
Automated Deployment.
Release Orchestration:
Release Coordination.
Release Automation.
Release Monitoring và Rollback.
Mini Project:
Thiết kế một kiến trúc môi trường cho một ứng dụng microservices.
Xây dựng một deployment pipeline tự động hóa cho việc triển khai ứng dụng lên các môi trường khác nhau.
Triển khai ứng dụng bằng cách sử dụng các chiến lược deployment khác nhau (Blue/Green, Canary).
Ngày 7: Config/Secret Management
Buổi sáng:
Configuration Management:
Configuration Formats (YAML, JSON, TOML).
Configuration Versioning và Validation.
Configuration Best Practices (12-Factor App).
Secret Management:
Secret Storage (Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager).
Secret Access Control và Rotation.
Secret Best Practices.
Buổi chiều:
Configuration Management Tools:
ConfigMap, Secrets (Kubernetes).
Environment Variables.
Configuration Management Systems (Ansible, Puppet, Chef).
Secret Management Tools:
Vault.
Cloud Provider Secret Managers.
External Secrets Operator (Kubernetes).
Mini Project:
Thiết kế một hệ thống quản lý cấu hình và secrets cho một ứng dụng microservices, bao gồm cả việc lựa chọn công cụ phù hợp và các biện pháp bảo mật.
Triển khai một giải pháp quản lý secrets bằng Vault và tích hợp nó với một ứng dụng chạy trên Kubernetes.
Tự động hóa việc rotation secrets cho một ứng dụng cụ thể.
Ngày 8: Monitoring và Observability
Buổi sáng:
Monitoring:
Các loại Metrics (System, Application, Business).
Monitoring Strategies và Tools.
Alerting và Notification.
Logging:
Structured Logging.
Log Aggregation và Analysis.
Logging Tools (ELK, Loki).
Buổi chiều:
Observability:
Three Pillars of Observability (Metrics, Logs, Traces).
Distributed Tracing.
Observability Tools (Prometheus, Jaeger, Zipkin).
Observability in Production:
Performance Monitoring.
Error Tracking.
Root Cause Analysis.
Mini Project:
Thiết kế một hệ thống monitoring và observability toàn diện cho một ứng dụng microservices, bao gồm cả việc lựa chọn các công cụ và thiết lập dashboards và alerts.
Triển khai một hệ thống distributed tracing cho ứng dụng và sử dụng nó để theo dõi các requests qua các services khác nhau.
Sử dụng các kỹ thuật phân tích log để xác định các vấn đề và cải thiện hiệu suất của ứng dụng.
Ngày 9: Release Coordination và Deployment
Buổi sáng:
Release Planning:
Release Scope và Goals.
Release Schedule và Timeline.
Release Resources và Dependencies.
Release Communication:
Stakeholder Communication.
Release Notes và Documentation.
Release Announcement.
Buổi chiều:
Deployment Strategies:
Blue/Green, Canary, Rolling Deployments.
Feature Flags.
A/B Testing.
Deployment Automation:
Deployment Tools (Kubernetes, Docker, Helm).
Infrastructure as Code (Terraform, CloudFormation).
Configuration Management (Ansible, Puppet, Chef).
Mini Project:
Lập kế hoạch chi tiết cho việc release một ứng dụng microservices vào production, bao gồm cả các bước chuẩn bị, thực hiện, và truyền thông.
Triển khai ứng dụng bằng cách sử dụng các chiến lược deployment khác nhau (Blue/Green, Canary) và so sánh hiệu suất và rủi ro.
Tự động hóa quy trình deployment bằng cách tích hợp với CI/CD pipeline và các công cụ deployment và IaC.
Ngày 10: Post-Production và Rollback
Buổi sáng:
Post-Production Validation Activities:
Smoke Tests, Functional Tests, Performance Tests.
Monitoring và Alerting.
User Acceptance Testing (UAT).
Post-Production Monitoring:
Application Monitoring.
Infrastructure Monitoring.
Log Analysis và Metrics Analysis.
Root Cause Analysis.
Buổi chiều:
Application Rollback Scenarios:
Types of Rollback (Forward, Backward).
Rollback Triggers và Decision-Making.
Rollback Planning và Preparation.
Application Rollback Strategies:
Automated Rollback.
Rollback Communication và Coordination.
Rollback Testing và Validation.
Mini Project:
Thiết kế một quy trình post-production validation toàn diện cho một ứng dụng microservices.
Xác định các scenarios rollback khác nhau cho ứng dụng và thiết kế các chiến lược rollback tương ứng.
Tự động hóa quy trình rollback và tích hợp nó với hệ thống monitoring và alerting.
Tuần 3: Quản lý Chi phí và FinOps
Ngày 11: Quản lý Chi phí Dự án
Buổi sáng:
Ước tính chi phí:
Các kỹ thuật ước tính chi phí (Analogous, Parametric, Bottom-up).
Cost budgeting và Cost baseline.
Cost Management Plan.
Cost Control:
Earned Value Management (EVM).
Cost Variance Analysis.
Cost Forecasting.
Buổi chiều:
Financial Management:
Budgeting và Forecasting.
Financial Statements (Income Statement, Balance Sheet).
Return on Investment (ROI).
Cost Optimization:
Cost reduction strategies.
Value Engineering.
Lean Principles.
Mini Project:
Ước tính chi phí cho một dự án phần mềm đơn giản sử dụng các kỹ thuật khác nhau.
Sử dụng Earned Value Management để theo dõi và kiểm soát chi phí của một dự án.
Phân tích ROI của một dự án phần mềm và đề xuất các biện pháp để tối ưu hóa ROI.
Ngày 12: FinOps Fundamentals
Buổi sáng:
Giới thiệu về FinOps:
Định nghĩa và mục tiêu của FinOps.
Các nguyên tắc của FinOps.
FinOps Culture và Collaboration.
Cloud Financial Management:
Cloud Cost Drivers.
Cloud Billing Models.
Cloud Cost Optimization.
Buổi chiều:
FinOps Capabilities:
Cloud Cost Visibility.
Cloud Cost Allocation.
Cloud Cost Optimization.
FinOps Maturity Model:
Inform, Optimize, Operate.
Các giai đoạn của FinOps adoption.
Mini Project:
Phân tích hóa đơn cloud của một tổ chức và xác định các cơ hội để tối ưu hóa chi phí.
Thiết kế một hệ thống tagging và allocation để phân bổ chi phí cloud cho các teams và projects khác nhau.
Đánh giá mức độ trưởng thành của FinOps trong một tổ chức và đề xuất các bước để cải thiện.
Ngày 13: FinOps in Application Delivery
Buổi sáng:
FinOps và CI/CD:
Cost-Aware CI/CD.
Automated Cost Optimization.
Cost Gates và Guardrails.
FinOps và Deployment Strategies:
Cost Implications của các chiến lược deployment (Blue/Green, Canary).
Cost-Effective Deployment.
Right-Sizing và Resource Optimization.
Buổi chiều:
FinOps và Monitoring/Observability:
Cost Visibility trong các công cụ monitoring.
Cost Attribution cho các services và applications.
Cost-Aware Alerting.
FinOps và Kubernetes:
Kubernetes Cost Management.
Resource Utilization và Optimization.
Cost Allocation trong Kubernetes.
Mini Project:
Tích hợp FinOps vào một CI/CD pipeline để tự động hóa việc ước tính và theo dõi chi phí của các deployments.
Phân tích chi phí của các chiến lược deployment khác nhau (Blue/Green, Canary) và xác định chiến lược tiết kiệm chi phí nhất.
Sử dụng các công cụ Kubernetes cost management để phân bổ chi phí cho các namespaces và applications khác nhau.
Tuần 4: Dự án và Review
Ngày 14-17: Dự án
Trong 4 ngày này, bạn sẽ tập trung vào một dự án lớn hơn, tích hợp nhiều kiến thức và kỹ năng đã học.
Gợi ý dự án:
Thiết kế và triển khai một quy trình End-to-End Application Delivery Lifecycle hoàn chỉnh cho một ứng dụng microservices, bao gồm cả các khía cạnh quản lý dự án, chất lượng phần mềm, và quản lý chi phí/FinOps.
Tự động hóa toàn bộ quy trình bằng các công cụ CI/CD, IaC, và Configuration Management.
Xây dựng một hệ thống monitoring và observability toàn diện cho ứng dụng.
Triển khai ứng dụng bằng các chiến lược deployment khác nhau và thiết kế các chiến lược rollback.
Tích hợp FinOps vào quy trình delivery để theo dõi, phân bổ, và tối ưu hóa chi phí của ứng dụng.
Trong quá trình thực hiện dự án, hãy:
Ghi lại chi tiết các bước thực hiện.
Giải quyết các vấn đề phát sinh một cách chủ động.
Tìm kiếm các giải pháp tối ưu và hiệu quả.
Refactor code và cấu hình khi cần thiết.
Viết tài liệu chi tiết cho dự án.
Ngày 18: Review và Tổng kết
* Ngày cuối cùng, 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 áp dụng chúng trong thực tế.
10. Learn Virtualization & Cloud Computing
Ngày 1: Nền tảng Virtualization
Buổi sáng:
Tổng quan về Virtualization:
Định nghĩa và lợi ích của ảo hóa.
Lịch sử phát triển của ảo hóa.
Các loại ảo hóa: Hardware Virtualization, Operating System Virtualization, Application Virtualization, Network Virtualization, Storage Virtualization.
Focus sâu vào Hardware Virtualization (nền tảng cho cloud computing).
Kiến trúc Hypervisor:
Hypervisor Type 1 (Bare-metal): VMware ESXi, Microsoft Hyper-V Server, Citrix Hypervisor. Kiến trúc và cách hoạt động.
Hypervisor Type 2 (Hosted): VirtualBox, VMware Workstation/Player, Parallels Desktop. Kiến trúc và cách hoạt động.
So sánh chi tiết Type 1 và Type 2 hypervisors về hiệu suất, bảo mật, và use cases.
Tìm hiểu về vai trò của CPU virtualization extensions (Intel VT-x/EPT, AMD-V/RVI).
Buổi chiều:
Các thành phần của hệ thống ảo hóa:
Host machine: Tài nguyên vật lý (CPU, RAM, Network, Storage).
Guest machine (Virtual Machine - VM): Tài nguyên ảo được cấp phát.
Virtual Hardware: CPU ảo, RAM ảo, Network Interface Card (NIC) ảo, Disk ảo. Cách hypervisor mô phỏng phần cứng.
Image ảo (Templates): VMDK, VHD, QCOW2. Định dạng và cách quản lý.
Snapshots: Chức năng và cách thức hoạt động.
Virtual Networking (trong Type 2 Hypervisors):
Bridged Networking: VM kết nối trực tiếp vào mạng vật lý.
NAT Networking: VM chia sẻ IP của host và được NAT ra ngoài.
Host-only Networking: Mạng riêng giữa host và các VM.
Internal Networking: Mạng riêng giữa các VM trên cùng host.
Thực hành cấu hình các loại virtual network trong VirtualBox.
Mini Project:
Cài đặt VirtualBox trên máy của bạn (nếu chưa có).
Tạo một máy ảo Linux (ví dụ: Ubuntu Server) trong VirtualBox. Cấu hình CPU, RAM, và disk ảo.
Thử nghiệm cấu hình ba loại virtual network (Bridged, NAT, Host-only) cho máy ảo và quan sát sự khác biệt về khả năng kết nối mạng.
Ngày 2: Virtualization - Quản lý Tài nguyên và Hiệu suất
Buổi sáng:
Quản lý CPU ảo:
Khái niệm vCPU (virtual CPU).
Over-commitment CPU: Ưu và nhược điểm.
CPU scheduling trong hypervisor.
NUMA (Non-Uniform Memory Access) và ảnh hưởng đến hiệu suất VM.
CPU affinity: Gán vCPU vào các core vật lý cụ thể.
Quản lý RAM ảo:
Memory ballooning: Cơ chế thu hồi RAM từ VM khi host cần.
Memory over-commitment: Transparent Page Sharing (TPS), Memory Compression. Rủi ro và lợi ích.
RAM affinity.
Buổi chiều:
Quản lý Storage ảo:
Virtual Disk formats (VDI, VMDK, VHD, QCOW2): So sánh tính năng và hiệu suất.
Thin Provisioning vs. Thick Provisioning: Ưu và nhược điểm.
Storage I/O virtualization: Cách hypervisor quản lý truy cập đĩa của VM.
IOPS và Throughput trong môi trường ảo hóa.
Giám sát và Tối ưu hóa Hiệu suất VM:
Các chỉ số hiệu suất quan trọng (CPU utilization, RAM usage, Disk I/O, Network I/O).
Công cụ giám sát hiệu suất của VirtualBox và hệ điều hành guest.
Các kỹ thuật tối ưu hóa hiệu suất VM (ví dụ: điều chỉnh tài nguyên, lựa chọn loại disk ảo, cấu hình network adapter).
Mini Project:
Trong VirtualBox, tạo hai máy ảo với cấu hình CPU và RAM khác nhau. Chạy một workload nặng trên cả hai máy và quan sát mức sử dụng tài nguyên trên host và guest.
Thử nghiệm tạo một virtual disk với thin provisioning và thick provisioning. Theo dõi dung lượng thực tế sử dụng khi ghi dữ liệu vào disk.
Sử dụng các công cụ giám sát hiệu suất (ví dụ:
top,htop,vmstattrong Linux guest, Task Manager trong Windows guest) để theo dõi hiệu suất của một máy ảo đang chạy workload.
Ngày 3: Vagrant
Buổi sáng:
Giới thiệu về Vagrant:
Mục đích và lợi ích của Vagrant trong việc quản lý môi trường phát triển và kiểm thử ảo hóa.
Kiến trúc của Vagrant: Vagrantfile, Providers (VirtualBox, VMware, Hyper-V, Cloud Providers), Boxes.
Luồng làm việc cơ bản với Vagrant (
vagrant init,vagrant up,vagrant ssh,vagrant halt,vagrant destroy).
Vagrantfile:
Cấu trúc và cú pháp cơ bản của Vagrantfile (Ruby).
Cấu hình box, network (forwarded ports, private network, public network), synced folders.
Provisioners: Shell, Ansible, Chef, Puppet. Tự động hóa việc cấu hình VM sau khi tạo.
Buổi chiều:
Quản lý Boxes:
Tìm kiếm và thêm Boxes từ Vagrant Cloud hoặc local.
Quản lý nhiều Boxes.
Tạo Boxes tùy chỉnh.
Networking với Vagrant:
Cấu hình forwarded ports để truy cập dịch vụ trên VM từ host.
Thiết lập private network để giao tiếp giữa các VM trong cùng một Vagrant environment.
Cấu hình public network (tương tự bridged trong VirtualBox).
Synced Folders:
Chia sẻ file giữa host và guest. Các loại synced folders (VirtualBox Shared Folders, NFS, rsync).
Cấu hình và tùy chỉnh synced folders.
Mini Project:
Cài đặt Vagrant trên máy của bạn (nếu chưa có).
Tạo một Vagrantfile đơn giản để khởi tạo một máy ảo Ubuntu Server bằng VirtualBox provider.
Cấu hình forwarded port để có thể truy cập SSH vào máy ảo từ host. Sử dụng
vagrant sshđể kết nối.
Ngày 4: Vagrant - Provisioning và Multi-VM Environments
Buổi sáng:
Provisioning với Shell:
Sử dụng Shell provisioner để chạy các script tùy chỉnh trên VM sau khi tạo.
Tự động hóa việc cài đặt phần mềm, cấu hình hệ thống bằng Shell scripts.
Provisioning với Ansible:
Giới thiệu về Ansible: Inventory, Playbooks, Tasks, Roles.
Sử dụng Ansible provisioner để chạy Playbooks trên VM.
Ví dụ về các tác vụ Ansible cơ bản (cài đặt package, tạo file, quản lý service).
Buổi chiều:
Multi-VM Environments:
Định nghĩa nhiều máy ảo trong một Vagrantfile.
Cấu hình network giao tiếp giữa các VM trong multi-VM environment (private network).
Sử dụng dependencies để xác định thứ tự khởi tạo VM.
Use cases cho multi-VM environments (ví dụ: web server và database server).
Quản lý Multi-VM Environments:
Sử dụng các lệnh Vagrant với target (ví dụ:
vagrant up web,vagrant ssh db).Chia sẻ dữ liệu giữa các VM (synced folders hoặc network shares).
Mini Project:
Sử dụng Shell provisioner trong Vagrantfile để tự động cài đặt web server (ví dụ: Nginx hoặc Apache) trên máy ảo.
Tạo một Vagrantfile khởi tạo hai máy ảo: một web server và một database server. Cấu hình private network để chúng có thể giao tiếp với nhau.
Sử dụng Ansible provisioner để cài đặt và cấu hình một dịch vụ đơn giản (ví dụ: Redis) trên một máy ảo Vagrant.
Ngày 5: Cloud Computing
Buổi sáng:
Nền tảng của Cloud Computing:
Định nghĩa và các đặc điểm thiết yếu của cloud computing (On-demand self-service, Broad network access, Resource pooling, Rapid elasticity, Measured service).
Các mô hình triển khai cloud: Public Cloud, Private Cloud, Hybrid Cloud. Ưu và nhược điểm của từng mô hình.
Tìm hiểu sâu về kiến trúc của các public cloud providers (ví dụ: AWS Regions và Availability Zones).
Các mô hình dịch vụ Cloud Computing:
IaaS (Infrastructure as a Service): Định nghĩa, đặc điểm, use cases, ví dụ về dịch vụ (EC2, Azure VMs, GCP Compute Engine).
PaaS (Platform as a Service): Định nghĩa, đặc điểm, use cases, ví dụ về dịch vụ (AWS Elastic Beanstalk, Azure App Service, GCP App Engine).
SaaS (Software as a Service): Định nghĩa, đặc điểm, use cases, ví dụ về dịch vụ (Gmail, Salesforce, Dropbox).
So sánh chi tiết IaaS, PaaS, SaaS về mức độ quản lý và trách nhiệm của người dùng và nhà cung cấp.
Buổi chiều:
Các khái niệm quan trọng trong Cloud Computing:
Elasticity và Scalability (Vertical và Horizontal scaling trong cloud).
Fault Tolerance và High Availability trong cloud.
Pay-as-you-go pricing model.
Cloud Security: Chia sẻ trách nhiệm giữa người dùng và nhà cung cấp.
DevOps và Cloud: Mối quan hệ và lợi ích.
Virtualization trong bối cảnh Cloud Computing:
Vai trò của hypervisors trong việc cung cấp IaaS.
Network Virtualization và Storage Virtualization trong cloud.
Software-Defined Networking (SDN) và Software-Defined Storage (SDS) trong cloud.
Mini Project:
So sánh chi tiết kiến trúc của ít nhất hai public cloud providers (ví dụ: AWS và Azure) về cách họ tổ chức Regions và Availability Zones.
Phân tích một ứng dụng web đơn giản và xác định các thành phần có thể được triển khai dưới dạng IaaS, PaaS, và SaaS.
Mô tả mô hình chia sẻ trách nhiệm bảo mật trong cloud computing và nêu rõ trách nhiệm của người dùng đối với các dịch vụ IaaS, PaaS, và SaaS.
Ngày 6: Cloud Computing - Network và Storage
Buổi sáng:
Cloud Networking:
Virtual Private Cloud (VPC): Khái niệm, thành phần (Subnets, Route Tables, Network ACLs, Security Groups, Internet Gateway, NAT Gateway).
Load Balancers trong cloud (ELB, ALB, NLB trên AWS; Azure Load Balancer; GCP Load Balancer).
DNS trong cloud (Route 53 trên AWS; Azure DNS; Cloud DNS trên GCP).
Content Delivery Networks (CDNs) trong cloud (CloudFront trên AWS; Azure CDN; Cloud CDN trên GCP).
Hybrid Connectivity (VPN, Direct Connect/ExpressRoute/Interconnect).
So sánh cách các cloud providers triển khai các dịch vụ mạng cốt lõi (VPC, Load Balancer, DNS).
Buổi chiều:
Cloud Storage:
Object Storage (S3, Azure Blob Storage, Google Cloud Storage): Kiến trúc, tính năng, use cases, pricing.
Block Storage (EBS, Azure Managed Disks, Persistent Disks): Kiến trúc, tính năng, use cases, pricing.
File Storage (EFS, Azure Files, Cloud Filestore): Kiến trúc, tính năng, use cases, pricing.
Database Services (RDS, Aurora, DynamoDB, Cosmos DB, Cloud SQL, Cloud Spanner): Các loại database và use cases.
So sánh cách các cloud providers cung cấp các loại hình lưu trữ khác nhau (Object, Block, File) và các dịch vụ database.
Mini Project:
Nghiên cứu về dịch vụ VPC của một cloud provider (ví dụ: AWS VPC) và vẽ sơ đồ một kiến trúc VPC đơn giản cho một ứng dụng web có nhiều tầng.
So sánh chi tiết về tính năng và giá cả giữa dịch vụ object storage của ba cloud providers (AWS S3, Azure Blob Storage, Google Cloud Storage).
Tìm hiểu về một dịch vụ database được quản lý (Managed Database Service) trên một cloud provider và mô tả các lợi ích của việc sử dụng dịch vụ này so với việc tự quản lý database trên máy ảo.
Ngày 7: Cloud Computing - Quản lý và Vận hành
Buổi sáng:
Identity and Access Management (IAM) trong Cloud:
Users, Groups, Roles, Policies.
Principle of Least Privilege.
Multi-Factor Authentication (MFA).
So sánh dịch vụ IAM của các cloud providers (AWS IAM, Azure AD, Google Cloud IAM).
Monitoring và Logging trong Cloud:
Metrics, Logs, Traces.
Các dịch vụ monitoring (CloudWatch, Azure Monitor, Cloud Monitoring).
Các dịch vụ logging (CloudWatch Logs, Azure Monitor Logs, Cloud Logging).
Alerting và Notification.
Buổi chiều:
Automation và Infrastructure as Code (IaC):
Khái niệm và lợi ích của IaC.
Các công cụ IaC phổ biến (Terraform, AWS CloudFormation, Azure Resource Manager, Google Cloud Deployment Manager).
Giới thiệu về cách sử dụng Terraform để quản lý cơ sở hạ tầng trên nhiều cloud providers.
Cost Management trong Cloud:
Các yếu tố ảnh hưởng đến chi phí cloud.
Các công cụ và phương pháp theo dõi và tối ưu hóa chi phí cloud.
Tagging và Resource Grouping.
Best Practices cho việc vận hành ứng dụng trên cloud (Reliability, Performance Efficiency, Security, Cost Optimization, Operational Excellence).
Mini Project:
Nghiên cứu về dịch vụ IAM của một cloud provider và mô tả cách tạo một role với quyền hạn cụ thể để cấp cho một ứng dụng.
Tìm hiểu về một công cụ IaC (ví dụ: Terraform) và viết một đoạn code đơn giản để tạo một resource (ví dụ: một virtual machine) trên một cloud provider (có thể sử dụng free tier).
Tìm hiểu về các best practices để tối ưu hóa chi phí cho một workload cụ thể trên cloud (ví dụ: một web server có lượng truy cập biến động).
Xem lại phần 1: https://yentrinh.hashnode.dev/syllabus-tham-khao-cho-devops-learning-checklist-part-1
Xem lại phần 2: https://yentrinh.hashnode.dev/syllabus-tham-khao-cho-devops-learning-checklist-part-2