1. CI/CD
CI/CD란?
소스코드 변경부터 테스트와 배포까지의 과정을 자동화하기 위한 개념이다.
개발자가 코드 작성
↓
Git Push
↓
┌─────────────┐
│ CI │
│ 빌드 / 테스트 │
└─────────────┘
↓
┌─────────────┐
│ CD │
│ 배포 │
└─────────────┘
↓
실제 서비스CI — Continuous Integration(継続的インテグレーション)
여러 개발자의 코드를 지속적으로 통합하면서 빌드와 테스트를 자동으로 수행하는 것.
예:
Git Push
↓
Build
↓
Test
↓
성공 ✓목적은 문제를 빨리 발견하는 것.
CD — Continuous Delivery / Deployment
CI가 끝난 코드를 실제 환경에 전달하거나 자동 배포하는 것.
Build
↓
Test
↓
Deploy
↓
EC2 / ECS / Lambda 등2. AWS CodePipeline
CI/CD의 전체 흐름(Pipeline)을 관리하는 AWS 서비스
쉽게 말하면 여러 작업을 연결해서
"코드가 변경되면 → 빌드하고 → 테스트하고 → 배포해"
라는 흐름을 자동화한다.
GitHub 등
↓
Source
↓
Build
↓
Test
↓
Deploy여기서 중요한 점은 CodePipeline 자체가 모든 작업을 직접 하는 것은 아니라는 것.
다른 AWS 서비스와 연결해서 전체 흐름을 관리한다.
예를 들어:
CodePipeline
│
├─ Source → GitHub / CodeCommit 등
│
├─ Build → CodeBuild
│
└─ Deploy → CodeDeploy 등한 줄 정리
CodePipeline = CI/CD 작업의 흐름을 연결하고 관리하는 서비스
3. Infrastructure as Code (IaC)
CDK와 CloudFormation을 이해하려면 먼저 IaC를 알아야 한다.
IaC = Infrastructure as Code
즉 AWS 콘솔에서 일일이 클릭해서 서버를 만드는 대신,
코드로 인프라를 정의하고 생성하는 방식이다.
예를 들어 콘솔에서:
EC2 생성
→ VPC 설정
→ Security Group 설정
→ IAM Role 설정
→ S3 생성
하는 것을 코드로 작성한다.
Infrastructure
├── VPC
├── EC2
├── S3
├── IAM Role
└── RDS
장점
- 동일한 환경을 다시 만들 수 있음
- 설정 실수를 줄일 수 있음
- Git으로 변경 이력을 관리할 수 있음
- 개발/테스트/운영 환경을 비슷하게 만들기 쉬움
- 팀 개발에 유리함
4. AWS CloudFormation
AWS의 대표적인 IaC 서비스.
AWS 리소스를 Template에 정의하면 CloudFormation이 실제 AWS 리소스를 생성한다.
CloudFormation Template
↓
CloudFormation
↓
Stack
↓
┌─────────────────┐
│ VPC │
│ EC2 │
│ S3 │
│ IAM Role │
└─────────────────┘
여기서 중요한 용어가 Stack.
Stack이란?
CloudFormation으로 함께 관리되는 AWS 리소스의 묶음이라고 생각하면 된다.
예:
MyWebAppStack
├── VPC
├── EC2
├── S3
└── IAM Role
Stack을 삭제하면 해당 Stack이 관리하는 리소스들도 설정에 따라 함께 삭제할 수 있다.
5. AWS CDK
CDK = Cloud Development Kit
CloudFormation보다 개발자에게 익숙한 방식으로 IaC를 작성할 수 있게 해주는 도구다.
CloudFormation에서는 YAML/JSON 등을 작성하지만 CDK에서는
- TypeScript
- JavaScript
- Python
- Java
- C#
- Go
등의 프로그래밍 언어를 사용할 수 있다.
예를 들어 TypeScript CDK에서는 대략:
new s3.Bucket(this, "MyBucket")
처럼 작성할 수 있다.
그리고 중요한 관계가 있다.
내가 작성한
CDK 코드
↓
cdk synth
↓
CloudFormation Template
↓
CloudFormation
↓
AWS 리소스 생성
즉,
CDK가 CloudFormation과 별개의 인프라 생성 시스템이라기보다, 코드를 이용해 CloudFormation을 편리하게 사용하는 방식
이라고 이해하면 좋다.
CloudFormation vs CDK
| CloudFormation | CDK | |
| 목적 | IaC | IaC |
| 작성 | YAML/JSON 등 | TypeScript, Java 등 |
| 특징 | AWS 리소스를 직접 선언 | 프로그래밍 언어로 작성 |
| 실행 관계 | 리소스를 생성 | CloudFormation 템플릿을 생성 |
6. CDK 구조 ⭐
App → Stack → Construct
App
│
├── Stack
│ ├── Construct
│ ├── Construct
│ └── Construct
│
└── Stack
├── Construct
└── Construct
App
CDK 애플리케이션 전체.
App
├─ DevelopmentStack
└─ ProductionStack
Stack
배포 단위가 되는 AWS 리소스의 묶음.
WebAppStack
├─ EC2
├─ S3
└─ IAM
CloudFormation의 Stack과 연결되는 개념이다.
Construct
CDK의 기본 구성 요소.
AWS 리소스나 여러 리소스를 조합한 구조를 표현한다.
예:
new s3.Bucket(...)
이런 것도 Construct다.
암기
App
↓
Stack
↓
Construct
↓
AWS Resource
7. IAM
IAM = Identity and Access Management
AWS에서 인증과 권한을 관리하는 서비스다.
쉽게 말하면:
누가(Who) 무엇을(What) 할 수 있는가?
를 관리한다.
예를 들어:
사용자 A
→ S3 읽기 가능
→ EC2 생성 불가능
사용자 B
→ EC2 관리 가능
→ RDS 관리 가능
8. 인증(Authentication)과 인가(Authorization) ⭐
인증(認証 / Authentication)
"당신은 누구입니까?"
사용자의 신원을 확인한다.
ID + Password
↓
로그인
↓
"Nine이라는 사용자구나!"
인가(認可 / Authorization)
"당신에게 이 작업을 할 권한이 있습니까?"
Nine 로그인 성공
↓
EC2 삭제 요청
↓
권한 확인
↓
허용 / 거부
따라서:
인증
"누구인가?"
↓
인가
"무엇을 할 수 있는가?"
9. IAM Role(IAMロール) ⭐
IAM Role은 AWS 서비스나 사용자 등이 일시적으로 맡을 수 있는 권한의 집합이다.
예를 들어 EC2에서 S3 파일을 읽어야 한다고 하자.
안 좋은 방식:
EC2
↓
Access Key 저장
↓
S3 접근
Access Key가 유출될 위험이 있다.
대신:
EC2
↓
IAM Role
↓
"S3 Read 권한 있음"
↓
S3
처럼 Role을 부여할 수 있다.
그래서
IAM Role = 필요한 주체에게 AWS 리소스 접근 권한을 부여하기 위한 역할
이라고 우선 이해하면 된다.
10. Auth0는 무엇인가?
여기서는 IAM과 구분하는 게 중요하다.
Auth0는 웹/앱에 로그인과 사용자 인증·인가 기능을 구현하는 데 사용하는 Identity 플랫폼이다.
예를 들어 우리가 Vue + Spring Boot 서비스를 만든다면:
사용자
↓
Vue
↓
Auth0
↓
로그인 / 인증
↓
Spring Boot API
같은 형태로 사용할 수 있다.
반면 AWS IAM은 기본적으로:
개발자 / AWS 서비스
↓
IAM
↓
AWS Resource
EC2 / S3 / RDS ...
처럼 AWS 리소스에 대한 접근 제어에 사용된다.
따라서 처음에는 이렇게 구분하면 충분하다.
| IAM | Auth0 | |
| 주요 대상 | AWS 사용자/서비스 | 내가 만든 앱의 사용자 |
| 목적 | AWS 접근 권한 관리 | 앱의 로그인/인증/인가 |
| 예 | EC2 → S3 접근 | 사용자 → 웹앱 로그인 |
📌용어 정리
① CI/CD
→ 빌드·테스트·배포 등의 개발 프로세스를 자동화
② CodePipeline
→ AWS에서 CI/CD 흐름을 연결하고 관리
③ IaC
→ 인프라를 코드로 정의하고 관리
④ CloudFormation
→ Template을 기반으로 AWS 인프라를 생성/관리
⑤ CDK
→ TypeScript/Java 등의 코드로 인프라를 정의 → CloudFormation으로 변환
⑥ CDK 구조
→ App → Stack → Construct
⑦ IAM
→ AWS의 인증 및 접근 권한 관리
→ 인증 = 누구인가? / 인가 = 무엇을 할 수 있는가?
'[Cloud & Infrastructure] > AWS' 카테고리의 다른 글
| AWS 핵심 서비스 복습 노트 (API Gateway, Lambda, DynamoDB, S3, CloudWatch, CloudFormation, IAM) (0) | 2026.09.12 |
|---|