[IaC] 01. IaC(Infrastructure as Code)란?
카테고리: IAC
태그: iac
[IaC] 01. IaC(Infrastructure as Code)란?
🔔 IaC(Infrastructure as Code)의 개념
코드를 사용하여 인프라 구성 및 제어 위해 인프라 오케스트레이션을 통한 스크립트 기반 인프라 제어 기술
IaC는 인프라의 코드화를 지칭하며, 인프라 구성 관리 도구에 의한 설정의 코드화, 구성 정보화 전체를 지칭한다.
인프라 관리 도구 중 Configuration 도구는 직접 실제 기기에 설정하는 대신 서버나 미들웨어의 구성 정보와 설정 정보를 정의 파일에 기재하고 도구를 이용하여 정의 파일 대로 설정을 수행하는 도구로, 정의 파일에 기술하는 것만으로 인프라의 구성과 설정을 선언으로 기재할 수 있게 되기 때문에 인프라 플랫폼별에 대한 지식을 필요로 하지 않게 되었다.
또한 인프라를 코드로 표현한다고 하여도, 코드화를 위한 고도의 프로그래밍 지식을 필요로 하지 않으며, 대부분의 컨피규레이션 도구에서는 DSL(Domain Specific Languages)로 인프라 구성과 컨피그(Config)를 기술할 수 있게 되었다.
따라서 인프라 엔지니어도 애플리케이션 엔지니어도 인프라 설정/운영에 대해서 서로의 방향에서 다가가는 것이 가능하게 되었다.
(1) IaC 구현을 위한 주요 기술
(a) Bootstrap
- 인프라의 초기 설정을 의미하며, 일반적으로 서버, 네트워크 및 스토리지와 같은 새로운 환경에 필요한 기본 리소스를 설정하는 작업
| 대표적인 도구 | 설명 |
|---|---|
| Kickstart | 운영 체제의 설치 및 구성을 자동화하는 도구 |
| Vagrant | 가상 머신 환경을 구축하고 관리하기 위한 도구 |
| Docker | 컨테이너화된 애플리케이션을 구축하고 관리하기 위한 도구 |
| Packer | 가상 머신 및 컨테이너 이미지를 구축하기 위한 도구 |
(b) Configuration
- 인프라 상태를 정의하고 관리하는 프로세스를 의미하며, Bootstrap이 끝난 환경에 대한 OS 및 미들웨어 설정/변경하는 작업
| 대표적인 도구 | 설명 |
|---|---|
| Ansible | 애플리케이션 및 시스템 관리를 위한 간단한 오픈 소스 자동화 플랫폼 |
| Chef | 인프라를 코드로 변환하는 자동화 플랫폼 |
| Puppet | 오픈 소스 Linux, Unix 및 Windows 시스템용 구성 관리 도구 |
| SaltStack | 오픈 소스 인프라 자동화 및 관리 플랫폼 |
(c) Ochestration
-
특정 결과를 달성하기 위해 여러 리소스와 서비스를 조정하는 프로세스를 의미하며, 여기에는 서로 다른 리소스 간의 종속성을 설정하고, 리소스의 라이프사이클을 관리하며, 서로 다른 환경에서 리소스가 일관되게 배포되고 관리되도록 보장하는 작업
-
결과물을 복수의 서버로 일괄 배포, 노드 간 연계 등 복수의 서버에 대한 설정 및 관리하는 작업
| 대표적인 도구 | 설명 |
|---|---|
| Kubernetes | 오픈 소스 컨테이너 오케스트레이션 시스템 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 플랫폼 |
| OpenShift | Kubernetes 위에 구축된 컨테이너 애플리케이션 플랫폼 |
| Nomad | 시스템 클러스터 전체에서 CPU, 메모리, 스토리지와 같은 리소스를 관리하기 위한 분산 시스템 커널 |
| Docker Swarm | Docker 컨테이너 클러스터링 및 스케줄링 도구 |
| Terraform | 다양한 클라우드 서비스 제공업체에서 서버, 스토리지, 네트워크 등의 인프라를 코드로 관리하고 제공하는 오픈소스 IaC 툴 |
| CloudFormation | AWS에서 제공하는 IaC 서비스로, AWS 클라우드 인프라 리소스를 코드로 관리 |
| Heat | 오픈스택에서 제공하는 IaC 툴로, 클라우드 인프라를 코드로 관리 |
(2) IaC(Infrastructure as Code)의 장점
| 장점 | 설명 |
|---|---|
| – 반복 작업 자동화 – 작업 시간 단축 가능 – 오류 감소, 빠른 복원 |
신속한 인프라 전개 및 배포 프로세스 자동화로 DevOps 기술측면 활용가능 |
댓글 남기기