[P1] AWS CDK: Giải Pháp Infrastructure as Code Hiện Đại cho AWS

Sat, November 9, 2024 - 3 min read View Count
AWS CDK Infrastructure as Code

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ố

3. AWS CloudFormation

  • 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.

AWS CDK Architecture

Công cụ Phát triển

1. CDK Toolkit

  • CLI chính để làm việc với CDK
  • Quản lý việc tạo và deploy applications

2. AWS Toolkit for VS Code

  • 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.