Cloud/Cloud

Cloud) IaC (Infrastructure as Code)

Adım Kim 2022. 9. 19. 19:47

IaC [ Infrastructure as Code ] 란?

  • 인프라 구성을 프로그래밍 하는것처럼 처리한다해서 프로그래밍형 인프라라고 부른다.
  • 인프라 구성을 코드를 통해 자동으로 구축, 관리, 프로비저닝 한다.
  • 100개 정도 서버를 구성한다고 할 때, 수동설정의 경우 오랜 시간이 걸리고 구축도중 오류 발생 확률이 높다. 하지만 IaC 활용 설정으로 구성하면 하나의 코드롤 통해 모든 서버를 자동으로 구축할 수 있다.


IaC의 장점?

  • 비용절감 (여러 서버를 하나로 관리할 수 있어, 여러 관리자를 필요로 하지 않는다.)
  • 배포속도향상 (코드기반으로 배포하기 때문에 배포속도가 빠르다.)
  • 오류감소 (여러 서버를 하나로 관리하여 오류가 감소한다.)
  • 인프라 일관성 향상 (멱등성)


용어

프로비저닝 [ provisioning ]

   - 클라우드 서비스를 시작하고 구성하는것

   - 인프라를 설정하는 프로세스 시스템, 데이터, 네트워크 작동을 준비하는 과정

 

형상 관리 [ configuration management ]

   - 이력관리 (이전 버전을 관리하여 롤백 등 할 수 있다.)

   - 서버운영상 필요한 소프트웨어를 설치하고 설정으로 관리하는 것

   - 설정관리에 사용되는 여러 정보이력을 관리

   - IaC는 코드를 이용한 인프라 관리, 형상관리는 운영체제 상에서 패키지를 설치와 필요한 설정을 코드로 관리.

IaC vs 형상관리

   - Git도 하나의 형상관리 툴이라 할수있다.

 

배포 [ deploy ]

   - 프로비저닝된 서버를 실행시키기 위해 애플리케이션 버전을 제공하는 작업

 

오케스트레이션 [ orchestration ]

   - 여러 시스템 또는 서비스를 조정하는것

   - 오케스트레이션의 목표는 배포, 관리, 확장, 네트워킹을 자동화하기 위함

   - 대표적으로 쿠버네티스가 오케스트레이션 툴이다.



IaC Tools

 

AWS CloudFormation

   - AWS에서 제공하는 IaC서비스 (AWS에 특화된 인프라 구성)

 

Ansible

   - 별도의 Agent없이 IaC 서비스 제공

   - IaC는 여러 클라이언트 서버를 관리하기위해 Agent 서버가 있어야 하지만 Ansible은 SSH를 기반으로 하여 SSH 연결만 가능하면 IaC 서비스를 이용할 수 있다.

 

Terraform

   - GUI 기반으로 IaC 서비스 제공

 

Puppet, Chef 등 여러 Tool이 있다.