
Quản lý Secrets và CI/CD với Terragrunt
Tìm hiểu cách quản lý Secrets an toàn và tích hợp Terragrunt vào quy trình CI/CD để tự động hóa việc triển khai Infrastructure as Code trong môi trường production.
Nơi mình lưu lại những suy nghĩ, bài học và ghi chép kỹ thuật.

Tìm hiểu cách quản lý Secrets an toàn và tích hợp Terragrunt vào quy trình CI/CD để tự động hóa việc triển khai Infrastructure as Code trong môi trường production.

Tìm hiểu cách Terragrunt giúp quản lý nhiều môi trường và nhiều AWS Account một cách nhất quán, giảm lặp cấu hình và mở rộng repository theo quy mô doanh nghiệp.

Tìm hiểu cách Terragrunt tự động quản lý dependency giữa các Terraform project, xây dựng dependency graph và triển khai infrastructure theo đúng thứ tự.

Tìm hiểu ba tính năng mạnh mẽ nhất của Terragrunt giúp loại bỏ gần như toàn bộ cấu hình lặp lại trong Terraform project: include, generate và read_terragrunt_config.

Tìm hiểu cách tổ chức một repository Terragrunt theo chuẩn production để quản lý nhiều môi trường, nhiều AWS Account và hàng trăm Terraform project một cách rõ ràng, dễ mở rộng.

Sau khi hiểu Terraform, đã đến lúc tìm hiểu Terragrunt—một công cụ giúp quản lý Infrastructure as Code ở quy mô production bằng cách giảm lặp code, quản lý dependency và tổ chức repository hiệu quả.

Terraform rất mạnh, nhưng khi số lượng môi trường và module tăng lên, việc quản lý dần trở nên khó khăn. Trong bài viết này, chúng ta sẽ tìm hiểu những giới hạn của Terraform và lý do Terragrunt ra đời.

Tổng hợp những sai lầm phổ biến mà hầu hết mọi người đều gặp khi sử dụng Terraform, từ quản lý state, module, workflow cho đến collaboration trong production.

Tìm hiểu Terraform Remote State Backend, lý do vì sao Local State không phù hợp cho production và cách Remote Backend trở thành nền tảng cho mọi dự án Terraform chuyên nghiệp.

Hướng dẫn đưa hạ tầng đã tồn tại vào Terraform một cách an toàn bằng terraform import và Import Blocks, tránh tạo lại resource và từng bước chuyển sang Infrastructure as Code.

Hướng dẫn cách tổ chức Terraform repository theo chuẩn production để dễ mở rộng, dễ review và quản lý nhiều môi trường như dev, staging và production.

Khám phá những tính năng Terraform được sử dụng nhiều nhất trong thực tế như for_each, count, locals, dynamic blocks, depends_on và lifecycle để viết Infrastructure as Code gọn gàng, dễ bảo trì và mở rộng.

Hiểu Terraform Data Sources là gì, khi nào nên sử dụng, cách Terraform đọc Infrastructure đã tồn tại và cách kết hợp Data Sources với Resources trong các dự án thực tế.

Hiểu cách Terraform Provider hoạt động phía sau, từ Provider, Resource, Data Source đến giao tiếp với Cloud API. Đây là nền tảng quan trọng để sử dụng Terraform hiệu quả.

Terraform Module không chỉ là cách tái sử dụng code. Một module được thiết kế tốt sẽ giúp hạ tầng dễ bảo trì, mở rộng và sử dụng trong nhiều môi trường. Bài viết này chia sẻ tư duy thiết kế Terraform Module từ góc nhìn của một Software Engineer.

Terraform State là thành phần quan trọng nhất của Terraform nhưng cũng là thứ dễ bị hiểu sai nhất. Bài viết này giải thích Terraform State là gì, vì sao Terraform cần State, cách State hoạt động và những nguyên tắc quan trọng khi làm việc với State trong môi trường production.

Terraform không chạy tuần tự như một Bash script. Bài viết này giải thích execution model của Terraform từ Desired State, State, Dependency Graph đến Plan, Apply, Refresh và Drift để bạn hiểu Terraform thực sự hoạt động như thế nào.

Infrastructure as Code không chỉ là Terraform hay một file .tf. Trong bài viết đầu tiên của series này, mình chia sẻ vì sao IaC ra đời, những vấn đề của việc quản lý hạ tầng thủ công và cách tư duy "Infrastructure as Code" thay đổi cách mình xây dựng hệ thống.

Khám phá cách JVM Execution Engine chuyển đổi bytecode thành mã máy để thực thi. Tìm hiểu cách Interpreter, JIT Compiler, Code Cache, cơ chế phát hiện hotspot và Garbage Collector phối hợp với nhau để mang lại hiệu năng vượt trội cho các ứng dụng Java.

Khám phá cách JVM tổ chức và quản lý bộ nhớ thông qua Runtime Data Areas như Heap, Stack, Method Area, Metaspace và PC Register. Hiểu vòng đời của object, cơ chế Garbage Collection và cách từng vùng nhớ ảnh hưởng đến hiệu năng cũng như khả năng mở rộng của ứng dụng Java.

Khám phá kiến trúc của Java Virtual Machine (JVM) và tìm hiểu cách Class Loader Subsystem nạp class một cách động. Hiểu vai trò của Bootstrap, Platform, Application ClassLoader, Parent Delegation Model và toàn bộ quy trình nạp class trong các ứng dụng Java.

Spring Boot là một trong những framework Java phổ biến nhất để xây dựng REST API. Tuy nhiên, trong quá trình phát triển, hầu như lập trình viên nào cũng sẽ gặp phải một số lỗi hoặc vấn đề quen thuộc. Trong bài viết này, chúng ta sẽ cùng điểm qua những lỗi phổ biến, tìm hiểu nguyên nhân và cách xử lý để giúp quá trình phát triển ứng dụng trở nên ổn định và hiệu quả hơn.

Tìm hiểu cách sử dụng Postman Scratch Pad để gửi API request mà không cần đăng nhập Workspace. Hướng dẫn nhanh, đơn giản và phù hợp cho quá trình phát triển cục bộ.

GitHub Packages là dịch vụ lưu trữ package cho phép bạn public hoặc private package của mình. Bài viết này hướng dẫn cách cấu hình dự án Maven và thiết lập GitHub Actions để tự động publish Java package lên GitHub Packages với xác thực và quản lý version phù hợp.

SDKMAN giúp cài đặt và quản lý nhiều phiên bản Java cùng các công nghệ trên nền JVM một cách đơn giản. Bài viết này hướng dẫn cài đặt SDKMAN, cài Java và chuyển đổi giữa các phiên bản Java trên máy phát triển.

Trong thực tế, bạn có thể sử dụng nhiều tài khoản Git cho các repository khác nhau. Bài viết này hướng dẫn cách cấu hình nhiều SSH key trên macOS và chọn đúng key cho từng tài khoản GitHub, GitLab hoặc Bitbucket.

Tìm hiểu cách tạo SSH Key trên macOS để xác thực an toàn với GitHub, GitLab, Bitbucket và máy chủ từ xa. Hướng dẫn từng bước từ tạo khóa, thêm public key đến kiểm tra kết nối.