본문 바로가기
  • 지요미의 IT성장일기
카테고리 없음

IaC(코드형 인프라)

by 지요미=P 2024. 2. 21.
728x90

코드(스크립트)를 작성 및 실행하여 인프라를 생성, 배포, 수정, 정리하는 것을 말한다.

이는 서버를 물리적으로 설치하는 등의 하드웨어 측면을 포함하여 운영의 모든 측면을 소프트웨어적으로 생각하는 중대한 사고 전환을 보여준다. 코드형 인프라의 핵심은 서버, 데이터베이스, 네트워크, 로그파일, 애플리케이션 구성, 문서, 자동화된 테스트, 배포 프로세스 등 거의 모든 것을 스크립트로 관리할 수 있다.

코드형 인프라 도구로는 애드혹 스크립트, 구성 관리 도구, 서버 템플릿 도구, 오케스트레이션 도구, 프로비전 도구가 있다.

 

 

 

1. 애드혹 스크립트 (라틴어)

#!/bin/bash

yum install -y httpd

systemctl enable --now httpd

echo "Hello World" > /var/www/html/index.html

 

수행할 작업을 단계별로 나누고 bash와 같은 언어를 사용하여 각 단계를 코드로 정의하고 작성된 스크립트를 서버에서 수동으로 실행하는 것입니다. 코드를 직접 작성하여 매번 수동으로 맞춤 코드를 작성해야 되기 때문에 간단한 설치에 적합함!

 

 

2. 구성관리 도구(Configuration)

*.conf / *.cnf

 

셰프, 퍼핏, 앤서블, 솔트스택 등은 모두 구성 관리 도구로써 대상 서버에 소프트웨어를 설치하고 관리하도록 설계되어 있다. bash 스크립트와 비슷해 보이지만 애드혹 스크립트를 사용할 때와 다른 여러가지 장점이 있다.

 

   - 코딩규칙

      구성 관리 도구는 문서화, 파일 레이아웃, 명확하게 이름 붙여진 매개 변수, 시크릿 관리 등을 포함하는 코딩 규칙으로

       일관되고 예측 가능한 구조를 제공한다.

 

   - 멱등성 (중복된 작업 스킵 ; but 버젼이 다르면 설치함)

      구성 관리 도구는 실행 횟수에 관계없이 설정 파일을 사용하여 소프트웨어가 설치되지 않았을 경우에만 설치하고

      소프트웨어가 동작하지 않는 경우에만 동작하도록 한다. 

 

   - 분산형 구조

      애드혹 스크립트는 단일 로컬 머신에서만 실행되도록 설계되어 있지만 앤서블과 같은 구성관리 도구는 원격의 수많은 

      서버를 관리하기 위해 특별히 설계된 것이다. 관리가 필요한 서버들의 IP를 정리한 host파일을 생성하고 플레이북을

      정의하여 실행한다.

 

 

3. 서버 템플릿 도구

도커, 패커, 베이그런트와 같은 서버 템플릿 도구는 여러 서버를 시작하고 각각 동일한 코드를 실행하여 서버를 구성하는 기존 방식과 다르게 운영체제, 소프트웨어, 파일 및 기타 필요한 모든 내용을 포함하고 있는 스냅샷으로 이미지를 생성하여 모든 서버에 이미지를 설치할 수 있다. 실행은 서버에 이미지를 배포하고 할 수 있다.

 

 

4. 오케스트레이션 도구

쿠버네티스

서버 템플릿 도구는 VM이나 컨테이너를 생성하기에 좋은 도구이지만 관리 부분이 부족하기 때문에 오케스트레이션 도구가 필요하다. 오케스트레이션 도구는 VM과 컨테이너 배포, 효율적 업데이트 및 롤백, 자동복구(치유), 자동확장(조정), 로드 밸런싱, 서로 식별하고 통신할 수 있게 서비스 검색 기능을 제공한다. 쿠버네티스를 사용하면 도커 컨테이너를 어떻게 관리할지를 코드로 정의할 수 있다. 오케스트레이션 도구의 종류로는 온프레미스에서 클러스터를 구축할 수 있는 쿠버네티스, 마라톤/메소스, 도커스웜, 노마드 등이 있으며 퍼블릭 클라우드에서는 AWS EKS, Azure AKS, GCP GKE가 있다.

 

 

5. 프로비전 도구

구성 관리, 서버 템플릿 및 오케스트레이션 도구가 각 서버에서 실행되는 코드를 정의한다면 테라폼, 클라우드포메이션, 오픈스택 히트와 같은 프로비전 도구는 서버 자체를 생성한다. 서버 생성만 하는 것이 아니라 사실상 설정도 하고 있어서 인프라에 관한 거의 모든 부분을 프로비저닝할 수 있다.

 

자주 쓰지만, 테라폼보다 사용되지 않은 이유는

cloudformation은 AWS만 히트는 히트만 사용에 국한되어 있는데

테라폼은 모두 사용이 가능해서 더 많이 사용하며 곧 유료화가 진행될 예정임

 

 

IaC (코드형 인프라) 장점

수동으로 코드를 변환하지 않아도 되므로 소프트웨어를 효율적으로 배포할 수 있다.

IaC는 데브옵스의 일종으로 이를 도입한 조직은 배포 횟수를 200배 늘렸고

오류를 24배 빠르게 개선하며 배포 시간을 2,555배 줄였다.

 

 

1. 자급식 배포

'마법의 명령어'를 알고 있는 소수의 시스템 관리자만 프로덕션 환경에 접속하여 배포를 진행해 왔다. 

하지만 인프라를 코드로 정의하면 전체 배포 프로세스를 자동화할 수 있으며 개발자도 필요할 때마다 자체적으로 배포를 진행할 수 있다.

 

 

2. 속도와 안정성

배포 프로세스를 자동화하면 사람이 진행하는 것보다 훨씬 빠르게 컴퓨터가 배포를 진행할 수 있다.

자동화된 프로세스는 일관되고 반복 가능하며 수동으로 진행했을 때보다 오류가 적게 발생하기 때문에 안전하다.

 

 

3. 문서화

시스템 관리자뿐만 아니라 누구나 읽을 수 있는 소스 파일로 인프라 상태를 나타낼 수 있다.

즉 모든 사람이 인프라 구조를 이해하고 업무를 볼 수 있도록 해준다.

 

 

4. 버전 관리

인프라 변경 내용이 모두 기록된 코드형 인프라 소스 파일을 저장할 수 있으므로 버전을 쉽게 관리할 수 있다.

시스템에 문제가 생겼을 때 문제가 발생한 지점을 찾기가 수월하다. 문제의 내용을 확인한 다음 문제가 없던 이전 코드로 다시 되돌리면 문제가 해결된다.

 

 

5. 유효성 검증

인프라 상태가 코드로 정의되어 있으면 코드가 변경될 때마다 검증을 수행하고 일련의 자동화된 테스트를 실행할 수 있다.

 

 

6. 재사용성

인프라를 재사용 가능한 모듈로 패키징할 수 있으므로 모든 제품을 매번 처음부터 배포하는 대신 문서화되고 검증된 모듈로 일관되게 배포할 수 있다.

 

728x90