Xem những bài viết cùng series
Giới thiệu
AWS Cloud Development Kit (CDK) là một công cụ infrastructure as code hiện đại, cho phép developers định nghĩa cloud infrastructure bằng các ngôn ngữ lập trình phổ biến thay vì YAML hay JSON. Bài viết này sẽ giúp bạn hiểu rõ về AWS CDK và tại sao nó là một bước tiến quan trọng trong việc quản lý infrastructure trên AWS.
Tại sao cần Infrastructure as Code?
Khi làm việc với AWS, có nhiều cách để cấp phát tài nguyên trên AWS:
1. Manual Provisioning (AWS Console)
- Phù hợp cho học tập và thử nghiệm
- Dễ gây lỗi và không nhất quán
- Khó tái sử dụng và tốn thời gian
2. Scripting (Bash/Python + AWS CLI)
- Tự động hóa được quy trình
- Thiếu cơ chế xử lý lỗi đáng tin cậy
- Khó rollback khi gặp sự cố
- Infrastructure as Code đầu tiên của AWS
- Sử dụng JSON/YAML để định nghĩa resources
- Có cơ chế rollback tự động
- Hạn chế về khả năng lập trình và tái sử dụng
AWS CDK: Modern Solution
CDK được xây dựng trên nền tảng CloudFormation nhưng mang lại nhiều ưu điểm vượt trội:
- Sử dụng ngôn ngữ lập trình quen thuộc (Python, TypeScript,…)
- Tận dụng được các tính năng của ngôn ngữ lập trình
- Tự động chuyển đổi code thành CloudFormation template
Các Khái niệm Cốt lõi trong CDK
1. CDK Application
- CDK Application là container cấp cao nhất chứa toàn bộ infra code của bạn
2. Stacks
- Đơn vị triển khai độc lập
- Mỗi stack đại diện cho một tập hợp các tài nguyên AWS sẽ được triển khai cùng nhau. Mỗi stack trong CDK tương ứng với một stack trong CloudFormation, nghĩa là khi bạn triển khai stack CDK, nó sẽ tạo ra hoặc cập nhật một stack CloudFormation tương ứng trong AWS.
3. Constructs (3 cấp độ)
- Constructs là các khối cơ bản trong CDK, dùng để định nghĩa hạ tầng của bạn. Có 3 cấp độ constructs:
- L1 Constructs: Map 1:1 với CloudFormation resources. Nó được tự động sinh ra từ các thông số kỹ thuật của CloudFormation, vì vậy tên và thuộc tính của L1 giống hệt với tài nguyên CloudFormation tương ứng.
- L2 Constructs: High-level abstractions hơn với cấu hình mặc định tốt. L2 được xây dựng trên các L1 constructs và giúp đơn giản hóa quá trình định nghĩa các tài nguyên AWS thông dụng mà không cần quan tâm đến mọi chi tiết cấu hình.
- L3 Constructs: Patterns kết hợp nhiều services. Còn được gọi là Patterns , chúng kết hợp nhiều dịch vụ và constructs để tạo ra các giải pháp hạ tầng phức tạp. L3 constructs giúp triển khai các kiến trúc phổ biến, như ứng dụng web toàn diện, bằng cách cung cấp các mẫu thiết kế đã được cấu hình sẵn.

Công cụ Phát triển
- CLI chính để làm việc với CDK
- Quản lý việc tạo và deploy applications
- Plugin hỗ trợ phát triển
- Cung cấp CDK Explorer để quản lý components
Kết luận
AWS CDK đại diện cho thế hệ tiếp theo của Infrastructure as Code, kết hợp sức mạnh của lập trình hiện đại với độ tin cậy của CloudFormation. Điều này giúp developers có thể định nghĩa infrastructure một cách hiệu quả và maintainable hơn, đồng thời giảm thiểu rủi ro trong quá trình deployment.
Nếu bạn đang tìm kiếm một giải pháp Infrastructure as Code cho AWS, CDK là một lựa chọn đáng cân nhắc, đặc biệt nếu bạn đã quen thuộc với các ngôn ngữ lập trình hiện đại.