Skip to content

Commit 649095f

Browse files
committed
docs: pulumi
1 parent 0212b16 commit 649095f

File tree

2 files changed

+71
-1
lines changed

2 files changed

+71
-1
lines changed

DevOps/Pulumi/Pulumi.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Pulumi 개요
2+
3+
## Summary
4+
Pulumi는 프로그래밍 언어를 활용하여 인프라를 코드(Infrastructure as Code, IaC)로 정의하고 관리할 수 있는 도구이다. 기존의 선언형 IaC 도구(Terraform, CloudFormation 등)와 달리, Pulumi는 **TypeScript, Python, Go, .NET(C# 등)과 같은 일반적인 프로그래밍 언어**를 사용하여 클라우드 리소스를 정의할 수 있도록 지원한다.
5+
6+
## Details
7+
8+
### Pulumi란?
9+
Pulumi는 **클라우드 네이티브 인프라 관리**를 위한 Infrastructure as Code(IaC) 도구이다.
10+
일반적인 IaC 도구들과 달리 Pulumi는 기존의 선언형 DSL(Domain-Specific Language)이 아닌 **일반적인 프로그래밍 언어**를 사용하여 인프라를 정의할 수 있도록 설계되었다.
11+
12+
Pulumi를 사용하면 다음과 같은 작업을 수행할 수 있다.
13+
14+
- 클라우드 리소스를 **코드 기반**으로 선언
15+
- **AWS, Azure, GCP, Kubernetes 등의 멀티 클라우드** 환경을 지원
16+
- **풀 스택 인프라**(서버, 데이터베이스, 네트워크, 컨테이너, 애플리케이션)를 코드로 정의
17+
- 코드에서 **반복문, 조건문, 함수, 모듈화 등의 프로그래밍 기능** 활용 가능
18+
19+
### Pulumi의 동작 방식
20+
Pulumi는 다음과 같은 주요 컴포넌트로 구성된다.
21+
22+
1. **Pulumi SDK**
23+
- 사용자가 작성한 코드를 실행하여 클라우드 리소스를 정의하고 배포하는 역할을 함.
24+
- TypeScript, Python, Go, .NET 등의 언어 SDK를 제공.
25+
26+
2. **Pulumi CLI**
27+
- `pulumi up`, `pulumi destroy` 등의 명령어를 통해 코드 기반 인프라를 배포하고 관리할 수 있음.
28+
- 실행 시 Pulumi 프로그램을 해석하여 상태(State)를 기반으로 변경 사항을 적용.
29+
30+
3. **Pulumi State(상태 관리)**
31+
- Pulumi는 Terraform처럼 리소스 상태를 저장하여 변경 사항을 추적.
32+
- 로컬 파일 또는 Pulumi Cloud(기본 옵션), S3, Azure Blob Storage, GCS 등을 사용하여 상태 관리 가능.
33+
34+
4. **Pulumi Service (선택적 사용)**
35+
- Pulumi가 제공하는 클라우드 기반 관리 서비스.
36+
- 여러 사용자가 협업할 수 있도록 프로젝트 및 권한 관리 기능 제공.
37+
38+
### Pulumi의 실행 과정
39+
Pulumi를 실행하면 다음과 같은 과정이 진행된다.
40+
41+
1. **코드 작성**
42+
- TypeScript, Python, Go 등을 사용하여 클라우드 리소스를 선언.
43+
44+
2. **`pulumi up` 실행**
45+
- Pulumi CLI가 실행되면 코드가 실행되고 리소스가 생성됨.
46+
- 상태(State)와 비교하여 변경 사항을 감지하고, 적용할 내용을 미리 보여줌.
47+
48+
3. **리소스 프로비저닝**
49+
- Pulumi는 클라우드 API를 호출하여 실제 리소스를 생성/업데이트/삭제.
50+
51+
4. **상태 저장**
52+
- 변경 사항을 Pulumi State에 저장하여 다음 실행 시 이를 기반으로 변경 사항을 추적.
53+
54+
### Pulumi의 장점
55+
Pulumi는 다음과 같은 장점을 제공한다.
56+
57+
| 특징 | 설명 |
58+
|------|------|
59+
| **일반적인 프로그래밍 언어 사용** | TypeScript, Python, Go, C# 등을 사용하여 인프라 코드 작성 가능 |
60+
| **멀티 클라우드 지원** | AWS, Azure, GCP, Kubernetes 등을 단일 코드베이스에서 관리 가능 |
61+
| **상태 관리** | Pulumi Cloud 또는 로컬/원격 저장소를 통해 상태를 저장하고 변경 사항을 추적 |
62+
| **모듈화 및 코드 재사용** | 함수, 라이브러리, 패키지 시스템을 활용하여 코드 재사용 가능 |
63+
| **동적 구성 가능** | 조건문, 반복문, 변수 등을 활용하여 동적 인프라 설정 가능 |
64+
65+
## Reference
66+
**link:** External reference
67+
- [Pulumi 공식 문서: How Pulumi Works](https://www.pulumi.com/docs/iac/concepts/how-pulumi-works/)

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
| Backend | 백엔드 프레임워크와 관련된 내용 | 0 |
99
| Cloud | 클라우드 컴퓨팅과 관련된 내용 | 1 |
1010
| DevGeneral | 디자인 패턴, 방법론 등의 내용 | 6|
11-
| DevOps | DevOps와 관련된 내용 | 0 |
11+
| DevOps | DevOps와 관련된 내용 | 1 |
1212
| Databases | 데이터베이스와 관련된 내용 | 0|
1313
| Frontend | 프론트 프레임워크와 관련된 내용 | 0 |
1414
| Languages | 다양한 프로그래밍 언어와 관련된 내용 | 23|
@@ -63,6 +63,9 @@
6363
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┣━&nbsp;📄[**Definition_of_Refactoring**](./DevGeneral/Refactoring/Definition_of_Refactoring.md)</br>
6464
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┣━&nbsp;📄[**Reasons_for_Refactoring**](./DevGeneral/Refactoring/Reasons_for_Refactoring.md)</br>
6565
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┗━&nbsp;📄[**When_to_Refactoring**](./DevGeneral/Refactoring/When_to_Refactoring.md)</br>
66+
┣━&nbsp;📂[**DevOps**](./DevOps)</br>
67+
┃  &nbsp;&nbsp;┗━&nbsp;📂[**Pulumi**](./DevOps/Pulumi)</br>
68+
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┗━&nbsp;📄[**Pulumi**](./DevOps/Pulumi/Pulumi.md)</br>
6669
┣━&nbsp;📂[**Languages**](./Languages)</br>
6770
┃  &nbsp;&nbsp;┗━&nbsp;📂[**JavaScript**](./Languages/JavaScript)</br>
6871
┃  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┣━&nbsp;📂[**DataTypes**](./Languages/JavaScript/DataTypes)</br>

0 commit comments

Comments
 (0)