[Ansible] #1.1 IaC 개요, 장점

[Ansible] #1.1 IaC 개요, 장점

IaC 의 개요와 장점을 알아보자.


1. IaC 개요


IaC(Infrastructure as Code : 코드형 인프라)는 인프라를 웹 인터페이스 및 대화 형식의 도구를 사용해 수동적으로 인프라를 구성하는 것이 아닌, 시스템이 읽을 수 있는 인프라 정의 파일을 통해 인프라의 구성 관리 및 배포를 자동화하는 것을 일컫는다.
인프라는 물리적 하드웨어 뿐만 아니라 가상 컴퓨터, 클라우드 등 관련 리소스를 IaC 를 통해 구성 관리 및 배포할 수 있다.

IaC 는 폭발적으로 확장되는 컴퓨팅과 차세대 웹 프레임워크와 같은 새로운 기술을 구현하고 구성하는 어려움에 대한 해결책으로 발전하게 되었고, 기업들은 이런 기술을 통해 스케일링 확장하는 문제도 해결할 수 있었다.

2006년 경 산업을 뒤흔든 새로운 이슈가 제기 되었는데, Amazon Web ServiceEC2에 얼마 전 릴리스 된 Ruby on Rails 1.0 을 배포하는 것이었다.
이것을 해결하기 위해 새로운 도구들이 계속해서 등장하게 되었고 IaC 의 필요성과 탄생하게 된 배경이 되었다.

표준화된 코드로 인프라를 모델링하고 알려진 모범 사례를 이용해 인프라를 설계, 구현 및 배포할 수 있는 기능이 필요했고, 인프라를 소프트웨어 프로젝트와 같은 코드를 이용해 인프라의 애플리케이션을 신속하고 정확하게 표준화 되도록 배포할 수 있었다.

인프라에서 가장 중요한 것은 격리(isolation) 이라고 할 수 있다.
논리적으로 격리를 구현하여 물리적으로 분리되어 있는 것 처럼 인프라를 구성하는 것이 중요하다.
가상화를 통해 추상화를 구현하고, 플랫폼의 인스턴스를 생성, 삭제 등 라이프 사이클(생명 주기)을 코드로 관리할 수 있다.

요즘 인프라, 클라우드에서는 Web, GUI 기반으로는 관리하지 않는다.
DevOps 로서 추구해야 하는 목적은 자동화(Automation)다.
아무래도 그래픽 기반에서는 자동화 하기 힘들다.

2. IaC 장점


  • 비용 절감
    • 일반적으로 비용이라고 하면, 물리적인 리소스도 당연히 포함되지만 인적 자원, 즉 인건비도 포함된다.
    • IaC 로 자동화를 구현하면 사람의 수동적인 인프라 관리를 위한 리소스가 절약되므로 비용 절감이 가능하다.
  • 빠른 속도
    • 인프라 구성 관리 및 배포를 자동화 함으로서 신속한 실행을 가능하게 하고, 효율적으로 작업할 수 있는 가시성을 제공한다.
    • 일일이 손으로 수정하는 일련의 과정을 거치는 것 보다는 자동화된 코드가 훨씬 빠른것은 자명하다.
  • 안정성
    • 대부분의 오류, 보안적 이슈는 사람에 의해 발생한다. 즉, IaC 를 사용하면 수동으로 구성할 떄와 같은 사람의 실수와 관련된 위험을 제거할 수 있다.
    • 완벽한 것은 존재할 수 없고, 하루에도 몇 번씩 오류가 발생할 수 있으며 이를 사전에 완전히 방지하는 것은 불가능하기 때문에, 어떻게 신속하게 대처하느냐가 중요하다.
    • DR(Disaster Recovery) 를 극복하기 위해서 기존에 자동화된 코드를 마련해 놓는다면 사고를 방지할 수 있을 것이다.
  • 코드화 및 버전 관리
    • 코드로 구성되어 있기 떄문에, 다른 사람과의 공유가 용이하다.
    • Git 과 같은 VCS(Version Control System) 를 이용하면 변경 사항 이력을 남길 수 있어 추후 문제가 발생했을시 어떤 부분이 변경되어 발생한 문제인지 확인하기 쉽다.
  • 재사용성
    • 인프라를 코드화하고 관련 리소스를 그룹 및 모듈화해서 필요 시 재사용할 수 있다.

© 2022. All rights reserved.