4/15 데브옵스 Infrastructure as Code (코드형 인프라)

IaC의 의미와 필요성

AWS 콘솔을 이용해 인프라 구성을 진행하는 것이 항상 좋은 일일까요?

 

다음을 가정해봅시다

위 그림에서의 인프라를 완전히 다른 리전에 똑같이 복제하고 싶을 경우

특히, 해당 리전이 갑자기 사용할 수 없는 상황에 직면했을 경우

기존과는 다른 새로운 아키텍처를 빠른 시간 내에서 적용해야 할 경우


수동 설정의 한계

수동설정은 쉽게 서비스를 제공하고, 아키텍처를 빠르게 실험해볼 수 있다는 점에서 유리하지만, 많은 단점도 가지고 있습니다.

휴먼 에러 때문에 서비스를 설정할 때에 잘못 설정하기 쉽습니다

설정을 통해 예측되는 상태를 관리하기 어렵습니다

환경 설정에 대한 내용을 다른 팀 멤버에 전달하기 어렵습니다


IaC

DevOps의 주요 가치 중 하나는 바로 자동화입니다.

코드형 인프라(Infrastructure as Code), 즉 IaC는 설정을 코드로 작성하여 클라우드 인프라스트럭처의 생성/수정/삭제를 자동화하는 방법입니다.

이는 서버, 데이터베이스, 네트워크, 배포 프로세스, 테스트 등 거의 모든 것을 코드로 관리할 수 있다는 의미입니다.

기존에는 (하드웨어) 서버 준비, 네트워킹과 같은 운영적 측면이 물리적 영역과 대응합니다.

실제로, 선을 연결하고, 하드웨어를 준비하는 것처럼 말이죠. 그러나 현재와 같은 클라우드 네이티브 환경에서는, 운영적 측면이 모두 코드로 대체될 수 있습니다.

이는 달리 얘기하면, IaC는 인프라스트럭처의 설계도가 될 수 있습니다.


IaC의 장점

IaC는 다음과 같은 특징 및 장점을 가집니다.

인프라를 만드는 과정이 자동화되므로, 오류가 훨씬 덜 발생하고 안전합니다.

IaC는 쉽게 공유할 수 있고, 버전 관리에도 용이합니다.

코드와 현재 상태를 비교하여, 추후 인프라 상태의 변경에 따르는 위험을 분석하고 검증할 수 있습니다.

배포 과정을 소수의 시스템 관리자만 진행하는 것이 아닌, 개발자 스스로가 배포하고 인프라를 통제할 수 있는 환경으로 만들 수 있습니다.


프로비저닝 vs. 배포 vs. 오케스트레이션

프로비저닝

시스템, 데이터 및 소프트웨어로 서버를 준비하고 네트워크 작동을 준비합니다. Puppet, Ansible 등과 같은 구성 관리 도구를 사용하여 서버를 프로비저닝할 수 있습니다. 이처럼, 클라우드 서비스를 시작하고 구성하는 것을 "프로비저닝"한다고 합니다.

배포

배포는 프로비저닝된 서버를 실행하기 위해 애플리케이션 버전을 제공하는 작업입니다. 배포는 AWS CodePipeline, Jenkins, Github Actions를 통해 수행할 수 있습니다.

오케스트레이션

오케스트레이션은 여러 시스템 또는 서비스를 조정하는 작업입니다. 오케스트레이션은 마이크로서비스, 컨테이너 및 Kubernetes로 작업할 때 일반적인 용어입니다. 오케스트레이션도구로는 Kubernetes, Salt, Fabric가 있습니다.

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Bootcamp/Daily Review 다른 글

    이전 글

    다음 글