Immutable vs Mutable
🔹 가변 (Mutable) 인프라와 불변 (Immutable) 인프라
![](https://velog.velcdn.com/images/binest03459/post/a1b179c2-8f15-47a8-837c-37533ccb74be/image.png)
Pets vs Cattle
![](https://velog.velcdn.com/images/binest03459/post/33457dd7-c347-4c44-a59c-d50ee4cf3e77/image.png)
🔹 Pets (≈Mutable)
- 폐기할 수 없는 인프라
- 장애 시 전체 점검 / 로그를 사람이 하나하나 확인
- 절대 다운될 수 없는 고유한 시스템
- 일반적으로 수동으로 구축, 관리
🔹 Cattle (≈Immutable)
- 폐기할 수 있는 인프라
- 장애시 서버를 단순히 재구동 하거나 자동화를 통해 사람의 개입없이 해결
- 자동화된 도구를 사용
🔹 Terraform 이란?
![](https://velog.velcdn.com/images/binest03459/post/211b57ec-3d1d-4476-8c1d-a26445e7a697/image.png)
🔹 Terraform Life Cycle
![](https://velog.velcdn.com/images/binest03459/post/9d9e3733-59ca-4f6e-85cc-169425088eb7/image.png)
🔹 Terraform Flow
![](https://velog.velcdn.com/images/binest03459/post/ff2c0b92-5cbc-4b16-a398-d516e03e76c0/image.png)
- 테라폼의 3가지 형상
1. Terraform 구성 소스 : 현재 관리자가 작성 / 수정하고 있는 코드
- Terraform state : 가장 최근에 배포한 테라폼 코드 형상
- 실제 인프라 : 실제로 Cloud 환경에 배포되어 있는 인프라
🔹 테라폼 디렉토리 레이아웃
![](https://velog.velcdn.com/images/binest03459/post/cd500919-2ad0-4c6d-81a9-64c3122870e4/image.png)
🔹 테라폼을 사용하는 이유?
![](https://velog.velcdn.com/images/binest03459/post/d353c62b-bf1b-467e-a80a-468f8f7061dc/image.png)
- 불변 (Immutable) 인프라를 위해 사용
- 인프라를 가축(Cattle)과 같이 관리
- 프로비저닝과 인프라 재사용에 용이