IaC(Infrastructure as Code)란 인프라를 코드로 나타낸 것을 의미,
즉 코드를 통해 인프라(서버, 네트워크)를 구축하는 방법을 뜻한다.
과거 인프라는(클라우드라는 개념이 생기기전) 기업이 서버 컴퓨터를 직접 구매해
자체 데이터센터에 설치하여 관리하는 방식인 온프레미스(On-Premiss)를 따랐다.
엔지니어가 모든 하드웨어(서버, db, 네트워크 장비 등)와
소프트웨어(운영체제, 어플리케이션 코드)를 설치 및 관리하였다는 것.
물리적 인프라를 직접 관리하기에 유지보수 부담이 컸고,
서비스 이용 급증에 따라 서버의 확장이 필요한 경우 빠르게 확장이 어려운 단점이 존재.
클라우드 탄생
클라우드는 서버 컴퓨터를 직접 구매하고,
데이터센터에 따로 서버를 설치할 필요가 없어
초기 투자비용이 적고, 서버를 쉽게 확장할 수 있으며(유연한 확장성),
개발자 대신 보안이나 하드웨어 장비를 높은 퀄리티로 관리해주기 때문에
관리자 입장에서 운영측면에서 부담이 적은 등의 장점을 갖는다.
IaC방식 탄생
클라우드(ex. aws)를 사용하여 인프라를 구축하는 것 또한 개발자가 설정을 해야 한다.
인프라 설정을 변경할 때마다, 인프라 설정을 추가할 때마다
개발자가 반복적으로 인프라를 변경 및 구축해야하고, 이로 인해 작업시간이 늘어나고,
인간이 설정하는 것이기 때문에 설정에 대한 실수도 증가할 수 있다.
그래서 인프라 구축을 직접 클라우드에 접속해 설정하는 것이 아니라
인프라 구성을 코드(code)로 정의하고,
작성한 코드를 기반으로 (특정) 명령어를 실행하여 배포하여,
클라우드 인프라에 리소스(서버)가 생성되는 일련의 과정인 IaC 방식이 탄생하게 된 것.
IaC는 코드를 통해 항상 동일한 인프라 구성으로 배포가 가능하다는 장점이 있다.
이는 개발자의 실수(에러)를 감소시킨다. 코드를 실행하여 인프라를 자동 배포하여
개발자의 반복적인 수동 작업을 최소화 시킬 수 있다. 코드는 깃을 통해 관리할 수 있기에
인프라 코드 변경사항 또한 추적할 수 있다(인프라 구성의 버전관리도 가능)
IaC 서비스 ex. AWS에서는 AWS CloudFormation(AWS Resource를 JSON/YAML로 정의)
멀티 클라우드(여러 클라우드(ex. AWS, Azure 등)를
동시에 관리할 수 있는 IaC 서비스) 툴의 예시로는 Terraform이 있다.
Terraform이란
인프라는 코드로 관리하는 IaC서비스다.
테라폼 코드로 다양한 클라우드(AWS, Azure 등)를 지원하며,
HCL(Harshicorp Configuration Language)문법을 따르며,
HCL은 JSON문법을 기반으로 개발됐기에 JSON 형식과 유사하다.
테라폼 코드/파일은 .tf확장자를 사용한다.
참고강의
[인프런] 테라폼과 IaC 아주 쉽게 이해하기! (입문 강의)
'공부기록용' 카테고리의 다른 글
| Http Method에서 GET, POST에 대한 고찰(생각 정리하기) (0) | 2025.10.16 |
|---|---|
| DTO, VO(ex. record class), DAO(ex. JpaRepository 구현체) 개념 정리 (0) | 2025.10.04 |
| RESTful (0) | 2025.10.03 |
| php 관련 study 기록 (0) | 2025.08.29 |
| php 환경설정, 폴더구조, 기초문법 일부 (3) | 2025.08.26 |