ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ansible: IaC개요
    공부합시다!/Ansible 2022. 7. 3. 09:03
    728x90

    IaC: Infrastructure As Code 인프라스트럭처 애즈 코드

    한 마디로 code로서 모든 Infra를 관리한다는 의미!

    이 얼마나 획기적인 일인가?

    IT Evolution

    100대의 서버를 사람이 설치하고 동일한 세팅을 해야한다면.... 아니 그 이상이라면

    반드시 실수가 생기게 마련이다! - 요걸 Human Error 라고 합니다. ㅎㅎ

     

    Scale X Complexity > Skills

     

    헌데 이걸 모드 Code로써 자동화하고 항상 그 상태가 유지되게 한다면 - 선언형 언어라는 뜻입니다. ㅋㅋ

    Kubernetes에서 경험을 해겠지만 K8S 역시 항상 config file에 기술한 대로 Infra를 유지하기 위해 노력합니다.

    바로 요런걸 IaC라 합니다. - code로서 인프라를 배포하고 유지, 관리하며 자동화

    이와 반대되는 개념은 절차적(명령형) 언어라고 합니다. 항상 순서대로 실행이 되어야 한다는 의미지요!  c, c++ 등

     

    크게 두가지 정도로 분류합니다.

     

    1. IaC

     1.1. 배포관리

      1.1.1. 가상머신, App을 배포하는데 촛점이 맞추어져 있습니다.

      1.1.2. HashiCorp 사의 제품이 주류를 이루고 있습니다. vagrant, terraform, vault 등

      1.1.3. 배포뿐 아니라 간단한 구성관리도 가능 - 점점 다른 영역을 넘보고 있는 추세입니다.

     1.2. 구성관리

      1.2.1. 가상머신이나 App 배포 후 그 구성을 설정, 관리, 유지, 수정 하는데 촛점이 맞추어져 있습니다.

      1.2.2. 종류

       1.2.2.1. puppet

       1.2.2.2. chef

       1.2.2.3. salutstack

       1.2.2.4. Ansible

    Ansible vs Puppet vs Chef

    2. Pull Base & Push Base

     2.1. Pull Based

      2.1.1. Puppet과 Chef는 Agent를 필요로 한다. - 수많은 서버에 어떻게 Agent를 배포할 것인지

      2.1.2. Agent들은 주기적으로 중앙 서버에 구성정보를 확인 - 네트워크 트레픽은?

     2.2. Push Based

      2.2.1. Agent가 필요없다 - SSH 통신

      2.2.2. 항상 멱등성(몇번을 수행해도 같은 결과)을 보장한다.

     

    3. Mutable VS Immutable

     3.1. 가변(Mutable) Infra

      3.1.1. 여러 관리 대상 인프라가 독립적으로 관리되며 별도의 변경 사항을 가지는 형태.

      3.1.2. Ansible, Chef, Puppet, Saltstack 등 대부분 구성 관리 도구는 가변 인프라에 초점

      3.1.3. 가상화, 컨테이너, 클라우드 컴퓨팅이 널리 퍼지기 이전에 서버 인프라는 물리(Baremetal) 서버를 중심으로 구성

      3.1.4. 정기적인 업데이트, 핫 픽스, 패치, 수동적인 변경 등 수 많은 변경이 발생

      3.1.5. 각 서버는 인프라 전체에서 동일하지 않고 고유의 독립된 개체로 관리.

     

     3.2. 불변(Immutable) Infra

      3.2.1. Infra가 배포된 후 절대로 변하지 않음.

      3.2.2. Cloud Instance Image 나 Container Image 처럼 변하지 않는 Image를 배포.

      3.2.3. Docker 는 App 뿐만 아니라 run time 자체를 Image 화해서 Container 실행환경 자체를 프로버저닝하고 관리.

      3.2.4. 마이크로 서비스 아키텍쳐(MSA) 환경에서 불변 인프라의 필요성은 더욱 증가

      3.2.5. 모놀리식 아키텍쳐에서는 불변 인프라가 필요하지 않음.

      3.2.6. 왜냐하면 하나의 환경에 애플리케이션 전체가 구성이 되었기 때문에 단일환경만 잘 설치해놓고 장애 대비

       3.2.6.1. 불변 인프라 요약

    • 어떤 시점의 서버 상태를 저장해 복제할 수 있게 하자는 개념
    • 한번 설정된 서버는 수정없이 파기되므로 멱등성 불필요
    • 버전관리 기능
    • Scale In, Out 용이
    • 인프라 환경 변경 용이
    • 서버를 Configuration Drift 없이 깨끗하게 유지-
    • 컨피그레이션 드리프트 : 손으로 직접 수정한 업데이트와 전반적인 엔트로피 증가로 인해 인프라 서버들이 시간이 갈수록 점점 서로 다른 상태가 되는 현상

    자! 그럼 다음시간에는 Ansible에 대해서 살펴보겠습니다.

    728x90
Designed by Tistory.