[아이티데일리] 솔트웨어의 박우환 이사는 ‘코드형 인프라로 클라우드 관리하기’에 대한 주제로 발표를 이어갔다. 박우환 이사는 IaC 개념을 소개했다. 그는 먼저 클라우드를 IaC 측면에서 재정의했다.

박 이사는 “흔히 클라우드는 인터넷으로 연결된 온라인 상에서 온디맨드 형태로 컴퓨팅 서비스를 이용하는 것으로 정의된다. 기술지원 관점에서는 기업의 데이터센터를 소프트웨어로 구현한 것이라고 볼 수도 있다”면서, “IaC 측면에서 클라우드를 API의 집합으로 정의해보고자 한다. 현재 대부분의 클라우드 기업들은 SDK(소프트웨어개발키트)를 제공하고 있다. 클라우드와 상호작용을 하고 특정 시스템을 만들기 위해서는 이를 활용해야 한다. 사용자 입장에서는 클라우드 서비스가 API의 집합체로 볼 수 있다”고 설명했다.

박우환 이사에 따르면, IaC에서 코드는 컴퓨팅 인프라를 프로비저닝하고 관리·자동화하기 위해 사용되는 정의 파일 및 스크립트다. 이러한 파일과 스크립트는 상위 수준의 언어인 YAML, JSON, HCL, 프로그래밍 언어 등으로 작성된다. IaC 도구는 유형에 따라 형상 관리(Configuration Management)와 오케스트레이션(Orchestration)으로 구분된다.

형상 관리는 서버, DB, 네트워킹 구성 요소와 같은 인프라 리소스 구성을 자동화하는 것을 의미하며, 오케스트레이션은 복잡한 인프라 시스템을 배포하고 관리하는 것을 조정한다는 의미다. 형상 관리에 앤서블(Ansible)이 사용되며, 오케스트레이션에는 테라폼(Terraform)과 클라우드포메이션(Cloudformation), AWS CDK, Pulumi 등이 쓰인다.

다음으로 박 이사는 데브옵스 관점에서 IaC를 사용하는 이유로 자동화, 일관성과 반복성, 성숙한 데브옵스 SW 개발 프로세스 및 도구 사용 등을 꼽았다.

 솔트웨어 박우환 이사
솔트웨어 박우환 이사

그는 “데브옵스 관점에서 IaC를 CI/CD의 한 부분으로 볼 수 있다. 요구사항이 변화함에 따라 SW를 재개발하고 재배포하듯이 이를 지원하는 인프라도 동시에 변화해야 한다. 코드로 인프라 배치를 자동화해 빠르게 개발로 이어지는 과정을 만들 수 있고 개발환경과 운영환경이 동시에 변화하기 때문에 안정성이 향상될 수 있다. 데브옵스를 구성하는 하나의 요소로 볼 수 있다”면서, “IaC의 워크플로우는 인프라 설계, 코드 작성, 배포&검증 작업을 거친 이후 프로젝트에 적합한 인프라인지 여부를 확인한다. 적합하다면 코드를 활용하고, 그렇지 않다면 다시 인프라 설계 단계로 돌아와 이 과정을 반복한다. CI/CD 파이프라인을 구성하는 방식과 유사한 점이 많다”고 설명했다.

마지막으로 박우환 이사는 “최근에는 IaC로 컨테이너와 쿠버네티스도 관리할 수 있다. 통상 쿠버네티스의 경우 자원을 정의하기 위해 YAML이라는 언어를 사용하는데, 매니페스트(Manifest) 파일을 통해 배포한다. 매니페스트 파일은 API 버전, 메타 데이터 스크립트 등으로 구분되며 간단하게 보이지만, 파일을 수정하기 위해선 상당히 기술이 필요하다”고 설명했다.

이어 그는 “IaC는 데브옵스에서 필수적인 요소이며, 성숙한 SW 개발 프로세스를 따르기 때문에 안정성이 높다. 특히 클라우드는 모든 것이 코드로 구성돼있으며, 이를 조정하고 관리하는 툴이 필요한데, IaC를 활용한다면 안정적으로 인프라를 구성하고 관리할 수 있다”고 덧붙였다.

저작권자 © 아이티데일리 무단전재 및 재배포 금지