Infrastructure as Code

박형석·2022년 4월 15일
0

IaC

목록 보기
1/1

코드형 인프라(IaC)

IaC는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말한다.

IaC를 사용하면 인프라 사양을 담은 구성파일이 생성되므로 구성을 편집하고 배포하기가 더 쉬워진다. 그리고 매번 동일한 환경을 프로비저닝 하도록 보장한다.

IaC는 구성 사양을 코드화하고 문서화함으로써 구성관리를 지원하며, 구성 변경 사항을 문서화하지 않고 임시로 변경하는 일을 막을 수 있다.

IaC가 나오게 된 환경적인 이유

원래 인프라 프로비저닝은 시간과 비용이 많이 드는 수동 프로세스였다. 하지만 이제 데이터 센터의 물리적 하드웨어가 아니라 가상화, 컨테이너, 클라우드 컴퓨팅을 이용하여 인프라 관리를 하게 되었다.

클라우드 컴퓨팅이 등장하면서 인프라 구성 요소의 수가 늘어났고, 날마다 더 많은 애플리케이션이 프로덕션 환경에 릴리스되고 있습니다. 이에 따라 더 잦은 빈도로 가동하고, 중지하고, 확장할 수 있는 인프라가 필요해졌습니다. IaC 이용 사례를 확립하지 않으면 현재 인프라의 규모를 관리하기가 갈수록 어려워질 것입니다.

조직은 IaC를 이용해 IT 인프라 요구 사항을 관리함과 동시에 일관성을 높이고 오류 및 수동 구성을 줄일 수 있습니다.

IaC에 대한 두가지 접근 방식

IaC에 대한 접근방식에는 다음과 같은 두가지 방식이 있다.

  • 선언적 접근
  • 명령형 접근

선언적 접근 방식

  • 필요한 리소스와 리소스의 속성 등 바람직한 시스템 상태를 정의하면 IaC 툴이 바람직한 상태로 구성해 준다.
  • 선언적 접근 방식에서는 시스템 오브젝트의 현재 상태 목록을 유지하며, 이를 통해 인프라를 더 쉽게 관리할 수 있다.
  • 명령적 방식보다 멱등성이 뛰어나다.

명령적 접근 방식

  • 바람직한 구성을 얻기 위한 특정 명령을 정의하고, 정의된 명령을 올바른 순서로 실행해야 한다.
  • 명령적 도구 사용 시, 사용자는 자동화 플랫폼에 수행할 작업을 지시하기 위해서 충분한 지식을 갖추고 있어야 한다.

차이점

명령적 방식은 원하는 인프라를 갖추기 위해서 단계적으로 명령을 내리는 것이고, 선언적 방식은 최종 솔루션 상태를 정의하고 자동화 플랫폼이 이 상태를 달성하는 방식이다.

IaC의 장점

  • 비용절감: 주로 인적인 비용이 절감되어 자동화로 인한 작업효울 증대
  • 배포속도 향상: 인프라 구성과 관리를 자동화 함으로써 효율적인 개발과 배포를 할 수 있다.
  • 오류 감소: 휴면 에러를 제거할 수 있다.
  • 인프라 일관성 향상: 표준화된 포맷과 규칙으로 작성된 코드 문서를 통해 누구나 읽을 수 있고 확인 가능.
  • 구성 변동 제거
  • 코드로써의 장점을 가진다(작성 용이성, 재사용성, 유지보수)

가변인프라와 불변인프라

이들의 특징과 차이점을 아라보자

가변인프라

가변인프라 라는 어려운 말이 붙었지만 쉽게 생각하면 온프레미스 서버와 일맥상통한다.
왜 "가변"이라는 말이 붙게 되었냐면 서버가 생성된 뒤 변경가능한 형태이기 때문이다. 엔지니어와 관리자가 수동으로 패키지를 업/다운그레이드 하고, 서버 하나하나의 설정파일을 수정하고, 새 코드를 기존 서버에 배포한다.

이러한 면 들을 봤을때 하나하나 관리를 해 주어야 하고 챙겨줘야 하는것 때문에 흔히 애완동물이라고 표현을 많이 한다. 이와 반대되는 개념으로 불변 인프라가 있는데 이것은 흔히 가축(e.g. 소떼)라고 불린다.

불변인프라

서버가 배포된 이후 절대 변경되지 않는 형태의 인프라 패러다임이다. 만약 업데이트, 수정, 변경을 해야 한다면 공용 이미지에 적절한 수정을 한 새 서버가 프로비저닝되어 기존 서버를 대체한다.

그래서 변경사항들이 발생하게 되면 기존의 인프라를 처분하고 새 인프라로 교체하는 방식으로 하기 때문에 간단하고, 일관성 있고 ,예측 가능한 배포 프로세스이다.

불변인프라 예시

  • 도커 컨테이너
  • AWS EC2 등등

불변인프라 장점(와 동시에 가변인프라의 단점)

  • 서버의 교체와 확장이 용이하다.(가변인프라는 매우 힘들다)
  • 배포가 쉽다: 단 한번의 변경만으로도 새 서버로 서비스할 수 있게 배포 프로세스를 줄인다.
  • 수평확장이 쉽다: 모든 서버가 동일한 생성 프로세스를 이용하기 때문에, 서비스 환경을 복제하는것이 쉽다. 이로인해 수평적 확장을 간단하게 해 준다.
  • 간단한 롤백과 복구 프로세스: 새 이미지를 배포하기 위해 사용한 프로세스는 이전 버전으로 롤백하는것에 동일하게 사용될 수 있다.

가변 불변 차이점

가변인프라는 배포된 이후 변경이 가능하도록 설계되었고, 불변인프라는 변경되지 않고 교체되도록 만들어졌다.

가변인프라에서 장애가 발생하게 된다면 치명적인 요인이 된다. 서버를 다시 살려내기 위해서 많은 시간과 노력, 비용이 발생할 수도 있다.
하지만 불변인프라에서는 장애가 발생하게 된다면 그 부분만 교체를 하여 빠르고 저렴하게 장애대응이 가능하다.

다음 포스팅에서는 선언적 접근방식 IaC인 테라폼에 대해 포스팅 할 것이다.

:)

profile
Better Than Yesterday

0개의 댓글