일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스토어드 프로시저
- PS
- 이진탐색
- 스프링 폼
- CHECK OPTION
- JPQL
- 힙
- 일대다
- querydsl
- dfs
- fetch
- 데코레이터
- 유니크제약조건
- SQL프로그래밍
- 동적sql
- 즉시로딩
- 연관관계
- BOJ
- 지연로딩
- 낙관적락
- shared lock
- 다대일
- eager
- 백트래킹
- 연결리스트
- FetchType
- 다대다
- 비관적락
- execute
- exclusive lock
- Today
- Total
흰 스타렉스에서 내가 내리지
AWS CloudFormation 와 AWS CDK : 차이점과 장단점, 그리고 추천 방법 본문
# 개요
AWS 에서 인프라를 정의하고 관리하는 방법으로 CloudFormation 과 AWS CDK 가 있다.
두 도구 모두 AWS 리소스를 프로비저닝하고 관리하는 데 사용되지만, 각각의 방식에는 장단점이 존재하며, 특정 상황에서 더 적합한 도구를 선택하는 것이 중요하다.
1. CloudFormation
AWS CloudFormation 은 AWS 리소스를 JSON 또는 YAML 형식으로 정의할 수 있는 서비스이다.
리소스 간의 의존성, 조건 등을 선언적으로 정의할 수 있으며, 이러한 템플릿을 사용하여 AWS 에서 인프라를 배포하고 관리할 수 있다.
# 장점
- 직접적인 제어 : 사용자는 템플릿 파일에서 모든 리소스를 상세하게 정의하여 완전히 통제할 수 있다.
- 간결한 리소스 정의 : 간단한 리소스는 비교적 짧은 템플릿으로 정의할 수 있다. 예를 들어, 하나의 S3 버킷을 생성하거나, 간단한 IAM 정책을 추가하는 작업은 CloudFormation 템플릿에서 쉽게 처리할 수 있다.
# 단점
- 복잡한 인프라 관리의 어려움 : 복잡한 리소스 간의 관계나 조건을 처리하려면 템플릿이 매우 복잡해질 수 있다. 여러 리소스가 엮인 인프라를 정의하려면 템플릿이 길어지고, 유지보수가 어려워진다.
- 재사용성 부족 : CloudFormation 은 함수나 객체 지향적인 코드를 지원하지 않으므로 코드 재사용성이 떨어진다. 반복 작업이 많으면 매우 비효율적이다.
- 유연성 부족 : 선언적인 방식으로 작동하므로, 동적 값 생성이나 조건부 논리 처리에는 제약이 있다.
# 언제 CloudFormation 을 사용하면 좋을까?
CloudFormation 은 비교적 간단한 인프라, 예를 들어 S3 버킷, 단일 EC2 인스턴스 등 단순한 리소스를 빠르게 배포해야 하는 상황에서 적합하다.
또한 프로그래밍 언어를 사용하지 않고 AWS 리소스를 관리해야 하는 상황에서도 유리하다.
2. AWS CDK
AWS CDK (Cloud Development Kit) 는 프로그래밍 언어를 사용해 AWS 인프라를 정의하고 배포할 수 있는 Infrastructure as Code(IaC) 도구이다.
JavaScript, Python 과 같은 언어를 사용하여 인프라를 코드로 정의하고, 이 코드를 통해 CloudFomation 템플릿이 생성되어 AWS 에 배포된다.
CDK 는 AWS 리소스에 대해 상위 수준의 추상화를 제공해 간결한 코드로 복잡한 인프라를 쉽게 관리할 수 있게 해준다.
예시 : JavaScript 코드로 S3 버킷을 생성할 수 있다.
const bucket = new s3.Bucket(this, 'MyBucket', {
versioned: true,
removalPolicy: RemovalPolicy.DESTROY,
});
# 장점
- 프로그래밍 언어 지원 : CDK 는 TypeScript, Python, Java 등 프로그래밍 언어를 사용해 인프라를 정의할 수 있어, 복잡한 로직과 조건을 처리할 때 매우 유리하다.
- 코드 재사용성 : 객체지향 프로그래밍의 강점을 활용해 코드 모듈화가 가능하고, 재사용성이 뛰어나다. 여러 리소스를 필요에 따라 재사용하거나 조합하여 사용할 수 있다.
- 유연한 확장성 : 복잡한 인프라를 체계적으로 관리할 수 있으며, 조건문, 반복문, 함수 등 프로그래밍 언어의 모든 기능을 사용할 수 있다.
# 단점
- 학습 곡선 : CloudFormation 템플릿과 비교했을 때, 프로그래밍 언어를 배워야 하므로 초반 학습 곡선이 있다.
- 의존성 관리 : 프로그래밍 언어의 패키지 의존성 관리가 필요하며, 특히 CI/CD 파이프라인에 통합할 때에는 추가적인 관리가 필요할 수 있다.
# 언제 AWS CDK 를 사용하면 좋을까?
AWS CDK 는 복잡한 인프라를 배포할 떄 특히 유용하다.
여러 AWS 리소스 간의 상호작용을 정의하거나, 조건부 로직이 필요할 떄, 그리고 코드의 재사용성을 극대화해야 하는 경우 CDK 가 적합하다.
또한 장기적으로 관리와 확장이 필요한 프로젝트에서도 유리하다.
# 요약
- CloudFormation 은 간단한 리소스에 적합하며, 빠른 배포와 직관적인 선언적 정의가 장점이다.
- AWS CDK 는 복잡한 인프라를 체계적으로 관리하고, 재사용 가능한 코드를 작성할 수 있어 확장성과 유지보수성이 뛰어나다.
AWS CDK 로 S3 버킷 생성 하기 ------→ https://thisisjoos.tistory.com/799
'AWS' 카테고리의 다른 글
CF(1): CDN 과 Amazon CloudFront 소개 (0) | 2024.10.25 |
---|---|
AWS CDK 를 사용하여 S3 버킷 생성하기 (Python) (0) | 2024.09.21 |
CloudFormation 으로 서버리스 알리미 구축하기 (1) | 2024.09.14 |
CloudFormation 을 이용하여 IAM 역할 생성 및 정책 할당 (CLI 사용) (0) | 2024.09.13 |
AWS CloudFormation vs Terraform ? (0) | 2024.09.13 |