1. IaC와 테라폼

2023. 7. 19. 10:11북리뷰/테라폼으로 시작하는 IaC

728x90

코드형 인프라(Infrastructure as Code) : 인프라가 코드로 표현되고, 코드가 인프라를 설명. UI나 커멘드를 이용한 수동 조작이 아닌 코드로 대상을 관리

 

1.1 인프라 자동화의 성숙도 변화

 

1단계 : 메뉴얼

인프라 관련 모든 정보와 구성-변경 방법, 기존 아키텍처를 워드-엑셀 등으로 문서화 (와...쌍팔년도야?)

 

2단계 : 스크립트

반복되는 작업은 작업자가 스크립트를 작성하여 자동화

비슷한 스펙의 인프라나 애플리케이션 런타임 선호

반복적인 지루한 작업 줄이고, 미리 정의한 동작을 한 번에 실행해서 오류가 줄어듬

허나, 동작하는 코드 양이 많아지면 시스템 응답 및 상태도 고려해야. 최종 상태가 스크립트 결과와 일치하지 않을 수도 있음

 

3단계 : 가상 머신(VM)

미리 구성된 가상 머신 이미지를 템플릿화해서 저장하고 반복적으로 사용 가능

필요한 패키지나 솔루션을 미리 설정하고 저장

하이퍼파이저와 관리 도구를 통해 확장이 쉬움

스냄숏을 통해 상태 보관 가능

허나, 가상화 솔루션 범위에 미포함하거나 서로 다른 툴 사용시 일관된 관리 불가능

하이퍼바이저 의존하게 됨

이미지 변경을 위한 수작업 여전히 존재

 

4단계 : 클라우드 인프라

인프라를 더 이상 소유하지 않고 상품화된 인프라와 데이터 센터 사용해서 리소스를 원격 관리

API를 통해 더 많은 기술 계층을 가상화

빠른 인프라 시작과 확장성이 뛰어남

자동화 API 제공

허나, 클라우드 제공자마다 서로 다른 API를 제공하므로 멀티 클라우드 자동화를 위해서는 개별적인 작업 필요

 

5단계 : 컨테이너

물리적 머신과 가상 머신을 지나 OS를 가상화한 환경을 제공

빠른 서비스 개발 가능

리소스 활용률 높이고 이전보다 더 자동화 가능

리소스 확장 가능, 빠른 배포 전략 도입 가능.

허나, 컨테이너 관리 및 배포를 위한 제어시스템, 모니터링 등도 신경써야

 

1.2 프로세스로서의 자동화

자동화는 각 프로세스 작업을 통합하고 재활용성을 높이는 것이 중요

워크플로우로 정의되는 프로세스 간 연계를 설계하면 모든 동작을 파악하기 쉬움

클라우드 같은 동적인 인프라 환경과 서로 다른 플렛폼의 기술을 융합하는 자동화를 위해선 프로세스적인 접근법 필요

작은 규모로 독립성을 유지 관리하면서 주기적인 변경과 적용 방식을 지향 -> 빠른 시장 적응과 장애 극복 능력 가져야

1.3 IaC의 이해

코드형 인프라 장점

자유롭게 변경

환경을 이해

반복적으로 동일한 상태 제작

인프라가 명확하게 문서화

 

IaC :

컴퓨터에서 읽을 수 있는 정의 파일(미리 구성이 정의된 코드 형태의 파일)을 사용해 인프라나 서비스를 관리하고 프로비저닝하는 프로세스

IaC 도입 장점

속도와 효율성 향상

버전 관리 가능

협업 쉬움

재사용성 높음

기술을 자산화 할 수 있음

단점

코드 문법 배워야

파이프라인 통합해야

대상 인프라에 대한 이해 필요

 

1.4 테라폼의 특성

테라폼 철학

1. 워크플로에 집중

2. 코드형 인프라

3. 실용주의

 

테라폼은 apply 같은 명령어로 구현된 동작으로 만들어진 코드를 실행하고 배포하는 방식을 취함

허나, 테라폼 자체만으로는 다양한 인프라와 서비스를 프로비저닝하는 것은 불가능

대상 인프라와 서비스를 테라폼으로 작업하기 위해서는 프로바이더가 둘 사이에서 인터페이싱해야

자바 개발 시 mysql 연동할 때 드라이버가 필요한 것과 비슷한 원리

 

1.5 테라폼 제공 유형

온프로미스 : 사용자 컴퓨팅 환경에 구성. 가장 널리 이용

hosted SaaS : Terraform Cloud로 불림. SaaS로 제공되는 구성환경으로 하시코프가 관리하는 서버 환경 제공

Private Install : Terraform Enterprise로 불림. 서버 설치형 구성 환경, 기업 사내 정책에 따라(사내 네트워크 망) 프로비저닝과 관리가 외부 네트워크와 격리

1.6 테라폼과 다른 도구 비교

앤서블 : 프로비저닝보다는 구성 관리에 장점

CloudFormation : AWS 환경을 프로비저닝하기 위한 도구,  더 코드적으로 자유롭게 프로비저닝이 가능한 CDK도 있음

ARM Template : Azure 환경을 프로비저닝하기 위한 도구

1.7 테라폼 사용 목적과 과제

기대효과

워크플로 : 인프라 구성에 대한 체계적인 워크플로 제공

자산화 : 프로비저닝 작업에 일관성을 보장하고, 축적된 프로비저닝 노하우 자산화 가능

표준화 : 조직 내부의 표준화 가능

프로비저닝 자동화 : 작업 수행 실행 계획 작성하여 빠른 프로비저닝 수행, 깃 , CI/CD등 통합할 수 있음

728x90

'북리뷰 > 테라폼으로 시작하는 IaC' 카테고리의 다른 글

3. 기본 사용법  (0) 2023.07.19