풀루미(Pulumi) 완벽 해설: 데브옵스를 위한 현대적 인프라스트럭처-코드 도구
인프라스트럭처-코드(IaC)란?
인프라스트럭처-코드(Infrastructure-as-Code, IaC)는 서술형 코딩 언어를 사용하여 리소스 프로비저닝과 관리 체계를 자동화하는 프로세스입니다.
IaC가 등장하기 전에는 시스템 관리자가 서버 리소스를 수동으로 구성, 배포, 관리해야 했습니다. 앱을 배포하기 전에 베어메탈 머신을 직접 구성해야 했습니다. 수동 인프라 관리는 많은 문제를 야기했습니다. 비용이 많이 들고, 느리며, 확장이 어렵고, 인적 오류가 발생하기 쉬웠습니다.
클라우드 컴퓨팅의 도입으로 가상화 환경 배포가 간소화되었지만, 관리자는 여전히 환경을 수동으로 배포해야 했습니다. 클라우드 공급자의 웹 기반 대시보드에 로그인하여 버튼을 클릭해 원하는 서버 구성을 배포해야 했습니다.
하지만 수백 대의 서버를 여러 클라우드 공급자와 위치에 가능한 한 빨리 배포해야 할 때, 모든 것을 수작업으로 하는 것은 비현실적입니다.
IaC는 데브옵스 팀이 간단한 지침으로 대규모, 멀티 프로바이더 환경에서 인프라를 배포하고 관리할 수 있게 합니다. 구성 파일을 작성하고 실행하기만 하면 원하는 환경이 자동으로 배포됩니다. 코드 알고리즘이 필요한 환경 유형을 정의하고, 자동화가 이를 배포합니다.
풀루미(Pulumi)란?
풀루미는 가장 인기 있는 프로그래밍 언어를 활용하여 클라우드 리소스 프로비저닝과 관리를 단순화하는 오픈소스 인프라스트럭처-코드 도구입니다.
2017년 설립된 풀루미는 데브옵스 팀이 인프라스트럭처-코드 개념에 접근하는 방식을 근본적으로 바꾸었습니다. 도메인 특화 언어(DSL)에 의존하는 대신, 풀루미는 조직이 실제 프로그래밍 언어를 사용하여 클라우드 네이티브 인프라를 프로비저닝하고 폐기할 수 있게 합니다.
자체 언어와 구문으로 인프라를 코드로 정의하는 테라폼(Terraform)과 달리, 풀루미는 실제 언어를 사용합니다. 파이썬(Python), 자바스크립트(JavaScript), 타입스크립트(TypeScript)로 구성 파일을 작성할 수 있습니다. 즉, 인프라 관리만을 위해 새로운 프로그래밍 언어를 배울 필요가 없습니다.
풀루미가 다른 유사 솔루션과 어떻게 비교되는지 보려면 '풀루미 vs 테라폼' 기사를 읽어보세요.
클라우드 네이티브 플랫폼으로서 풀루미는 가상 서버, 컨테이너, 애플리케이션, 서버리스 함수 등 모든 유형의 클라우드 인프라를 배포할 수 있습니다. AWS, 마이크로소프트 애저, PNAP 베어메탈 클라우드 등 여러 클라우드 공급자의 리소스도 배포 및 관리할 수 있습니다.
풀루미의 독창적인 IaC 접근 방식은 데브옵스 팀이 인프라를 선택한 언어로 작성된 애플리케이션처럼 관리할 수 있게 합니다. 풀루미를 사용하면 함수, 루프, 조건문을 활용하여 동적 클라우드 환경을 만들 수 있습니다. 풀루미는 개발자가 수천 줄의 코드를 복사-붙여넣기 하는 번거로움을 없애고 재사용 가능한 구성 요소를 만들 수 있게 돕습니다.
풀루미가 지원하는 프로그래밍 언어:
- 파이썬 (Python)
- 자바스크립트 (JavaScript)
- Go
- 타입스크립트 (TypeScript)
- .NET 언어 (C#, F#, VB)
풀루미 작동 원리
풀루미는 멀티 언어 및 멀티 클라우드 특성 덕분에 데브옵스 환경에서 가장 선호되는 IaC 도구가 되었습니다. 데브옵스 엔지니어에게 친숙한 리소스 관리 방법을 제공합니다.
풀루미는 클라우드 객체 모델과 평가 런타임을 통해 이를 실현합니다. 사용자가 어떤 언어로 작성한 프로그램이든, 어떤 클라우드 리소스를 관리하려는지 파악하고 프로그램을 실행합니다. 이는 본질적으로 언어 중립적이고 클라우드 중립적이기 때문에 가능합니다.
핵심 풀루미 시스템을 구성하는 세 가지 구성 요소:
- 언어 호스트 (Language host). 풀루미 프로그램을 실행하여 환경을 생성하고 리소스를 배포 엔진에 등록합니다.
- 배포 엔진 (Deployment engine). 리소스를 생성, 업데이트, 삭제, 복제할지 결정하기 위해 수많은 검사와 계산을 수행합니다.
- 리소스 공급자 (Resource providers). 언어와 클라우드 공급자 사양에 따라 백그라운드에서 패키지와 플러그인을 자동으로 다운로드합니다.
풀루미는 웹 앱이나 명령줄 인터페이스(CLI)를 통해 인프라를 관리할 수 있게 합니다.
풀루미를 사용하려면 먼저 등록하여 계정을 생성해야 합니다. 등록 후 프로그래밍 언어와 클라우드 서비스 공급자를 지정합니다.
CLI를 선호한다면 로컬 머신에 설치하고 계정으로 인증한 후 클라우드 공급자에서 받은 비밀 자격 증명을 제공해야 합니다.
풀루미 작동 방식에 대한 자세한 설명은 이 빠른 튜토리얼을 참조하세요.
풀루미의 8가지 특징과 장점
1. 오픈소스: 풀루미는 개인 사용 시 무제한 무료입니다. 다만 팀 내에서 사용하려면 소액의 연간 요금을 지불해야 합니다.
2. 멀티 언어: 선호하는 프로그래밍 언어로 인프라 구성 파일을 작성하세요. 언어 중립적인 IaC 플랫폼으로서 풀루미는 새로운 프로그래밍 언어를 배우도록 강요하지 않으며, 도메인 특화 언어도 사용하지 않습니다. 풀루미에서는 YAML 코드를 단 한 줄도 작성할 필요가 없습니다.
3. 멀티 클라우드: 수많은 클라우드 서비스 공급자 전반에서 인프라와 리소스를 프로비저닝, 확장, 폐기할 수 있습니다. 피닉스냅(phoenixNAP)의 베어메탈 클라우드 플랫폼, 구글 클라우드, AWS, 마이크로소프트 애저 등이 포함됩니다.
4. 기능 풍부한 CLI: 풀루미를 다재다능하게 만드는 원동력은 단순하면서도 강력한 명령줄 인터페이스(CLI)입니다. CLI를 통해 터미널에서 일련의 명령을 실행하여 클라우드 인프라와 서버를 배포하고 폐기합니다. 리눅스, 윈도우, OS X에서 풀루미를 사용할 수 있습니다.
5. 클라우드 객체 모델: 내부 클라우드 객체 모델은 프로그램이 어떻게 구성되는지에 대한 자세한 개요를 제공합니다. 어디서든 어떤 클라우드 공급자에서든 클라우드 소프트웨어를 관리할 수 있는 통합 프로그래밍 모델을 제공합니다.
6. 스택 (Stacks): 스택은 다른 프로그램과 구별되는 클라우드 프로그램의 격리된 인스턴스입니다. 풀루미를 사용하면 다양한 목적으로 수많은 스택을 배포할 수 있습니다. 예를 들어 스테이징 스택, 테스트 스택, 프로덕션 스택을 배포하고 폐기할 수 있습니다.
7. 재사용 가능한 구성 요소: 수천 줄의 코드를 복사-붙여넣기 할 필요가 없습니다. 풀루미는 기존 코드를 다른 프로젝트에서 재사용할 수 있게 하여 모범 코딩 관행을 따르도록 돕습니다. 코드는 단일 인스턴스만 정의하는 것이 아니라 전체 아키텍처를 정의합니다.
8. 통합 아키텍처: 데브옵스 조직은 구성 요소를 사용하고 재사용하여 인프라를 관리하고 독창적인 아키텍처와 테스트 정책을 구축할 수 있습니다. 이러한 자유로움은 팀이 내부 플랫폼을 구축할 수 있게 합니다.
결론
풀루미의 인기 프로그래밍 언어 지원은 데브옵스가 인프라 관리에 시간을 낭비하지 않고 생산성을 유지하도록 돕습니다. 풀루미가 독점 언어를 강요하지 않는 유일한 IaC 도구는 아니지만, 클라우드에 구애받지 않기 때문에 의심할 여지 없이 가장 유연합니다.
이미 앱을 실행하는 데 사용하는 언어로 구성 파일을 작성하여 여러 클라우드 공급자 전반에서 풀루미의 힘을 활용할 수 있습니다.