Terraform을 활용한 Samsung Cloud Platform 서비스 배포
개요
Terraform 은 코드를 통해 인프라 자원을 구성 및 관리할 수 있도록 지원하는 IaC(Infrastructure as Code) 도구입니다. 오픈소스 Terraform 툴과 Samsung Cloud Platform향으로 개발된 Terraform Provider 를 활용하여 Samsung Cloud Platform의 다양한 자원을 자동으로 구성하고 관리할 수 있습니다.
본 문서에서는 운영계 Samsung Cloud Platform에 다수의 자원을 배포하기 위한 사전 작업과 자원을 배포하는 과정 및 방법에 대해 설명합니다.
아키텍처 다이어그램
- Samsung Cloud Platform에서 Terraform 작업을 위한 인증키를 생성하고 환경설정을 진행한다.
- Samsung Cloud Platform에 배포할 자원 및 환경에 대한 구성안을 코드(.tf 파일)로 작성한다.
- 배포 환경에 대한 Provider를 외부 저장소(Terraform Registry)로부터 가져온다. (
terraform init) - Terraform 명령어를 수행하여 Samsung Cloud Platform에 자원 생성 계획을 확인하고 인프라 생성 작업을 수행한다. (
terraform plan→terraform apply) - Console 및 인프라 상태저장 파일(.tfstate)을 통해 인프라 리소스 생성을 확인한다. (
terraform state list)
사용 사례
Multi Region에 동일한 작업 환경 구성
국내외 다수 사업장에 동일한 애플리케이션 환경을 운영하는 경우, Terraform을 활용하여 Samsung Cloud Platform Project에서 사용 가능한 다수 리전에 자원을 동시에 배포/관리할 수 있습니다. 코드를 사용한 배포 방식을 통하여 작업자는 작업 시간을 단축할 수 있으며, 배포/관리 간 발생 가능한 휴먼 에러를 최소화할 수 있습니다.
Landing Zone 구성
신규 서비스나 계열사 환경을 반복적으로 개설하는 경우, Samsung Cloud Platform의 모범 사례를 바탕으로 구성된 Landing Zone을 Terraform 코드로 관리하여, 높은 재활용성을 바탕으로 다수 환경에 신속한 구축이 가능합니다. 사용자가 애플리케이션을 배포하기 위하여 사전 구성이 요구되는 네트워킹, 워크로드 등의 자원은 Terraform 코드로 미리 작성되며, 해당 코드를 배포하여 자동으로 사전 정의한 Landing Zone이 구성됩니다.
선결 사항
- 사용자의 작업 환경에 Terraform 설치 및 인터넷 연결이 필요합니다.
- 사용자의 작업 환경과 배포 대상 Samsung Cloud Platform 간 API 전달이 가능해야 합니다. (443 포트)
제약 사항
Terraform을 활용하여 Samsung Cloud Platform에 배포 가능한 상품 목록은 현재 지속적으로 추가되고 있습니다. 상세 내용은 Terraform Registry의 Samsung Cloud Platform Provider Documentation을 참고하시기 바랍니다.
고려 사항
- Terraform 작업 간 활용되는 Samsung Cloud Platform의 Credential 정보가 외부에 노출되지 않도록 주의가 필요합니다.
- 작업 후 생성되는 .tfstate 파일은 생성 자원에 대한 모든 정보를 기록하고 있으므로, 안전한 위치에 보관하시기 바랍니다.
관련 서비스
본 가이드에서 설명하는 기능 또는 구성과 연결되는 Samsung Cloud Platform의 서비스 목록입니다. 서비스 선택 및 설계 시에 참고하세요.
| 서비스군 | 서비스 | 상세 설명 |
|---|---|---|
| Management | IAM | 사용자의 본인 여부 확인 및 접근권한 부여를 통해 서비스 및 자원에 접근 가능한 범위를 제어하는 서비스 |
| Management | Organization | Account를 조직 단위별로 구성하여 계층적으로 관리하고 리소스 접근 권한을 제어하는 서비스 |
| Management | Quota Service | 계정 내에서 각 서비스에 설정된 최대 리소스 수, 작업 수, 또는 항목 수(쿼터)를 관리하는 서비스 |
| Management | Resource Groups | 리소스를 그룹화하여 효율적으로 관리하는 서비스 |
| Management | ServiceWatch | 생성한 자원의 지표, 로그, 이벤트 등을 수집하여 모니터링하고 성능, 운영 상태 등 자원 전반에 대한 관찰성을 제공하는 다양한 도구를 제공하는 서비스 |
| Management | Logging&Audit | 사용자가 수행하는 모든 작업 내역을 저장하여 클라우드 자원에 대한 변경 추적 및 감사를 지원하는 서비스 |
| Management | Resource Explorer | 생성한 자원을 통합 검색하고 태그를 관리하는 서비스 |
| Compute | Virtual Server | 클라우드 컴퓨팅에 최적화된 가상 서버 |
| Compute | Bare Metal Server | 가상화하지 않고 물리적으로 분리된 CPU, 메모리 등의 컴퓨팅 자원을 단독으로 할당 받아 사용할 수 있는 고성능 물리 서버 |
| Compute | Block Storage | 블록 단위로 데이터를 저장하여 대규모 데이터 처리와 DB 워크로드에 사용되는 스토리지 |
| Compute | Multi-node GPU Cluster | 대규모의 고성능 AI 연산을 위해 물리 GPU 서버를 가상화 없이 제공하는 서버 |
| Storage | Block Storage(BM) | Bare Metal Server에 연결하여 사용하는 블록 스토리지 |
| Storage | File Storage | 네트워크 연결을 통하여 연결된 서버들이 손쉽게 데이터를 저장하고 공유하는 스토리지 |
| Storage | Parallel File Storage | 대용량 데이터를 빠르고 효율적으로 처리할 수 있는 All NVMe 기반의 고성능 병렬 파일 스토리지 |
| Storage | Backup | 사용자의 데이터를 안전한 방식으로 백업하고 유사시에 복구하는 서비스 |
| Networking | VPC | 클라우드 환경에서 논리적으로 분리된 고객 전용 사설 네트워크 공간을 제공하는 서비스 |
| Networking | Security Group | 가상 서버에서 발생하는 Inbound/Outbound 트래픽을 제어하는 가상 논리 방화벽 |
| Networking | Firewall | VPC 및 Load Balancer에서 발생하는 트래픽을 제어하는 가상의 논리적 방화벽 서비스 |
| Networking | Load Balancer | 사용자가 예측하기 어려운 트래픽 증가 또는 서버 장애 발생 시 가용한 서버로 트래픽을 자동 분산하는 서비스 |
| Networking | GSLB | 글로벌 특정 지역에 트래픽이 증가할 경우 DNS 기반으로 가용한 인접 지역으로 네트워크 트래픽을 자동으로 분산하는 서비스 |
| Networking | DNS | 사람이 인식하기 편리한 도메인 이름을 시스템이 식별 가능하도록 숫자로 이루어진 IP 주소로 변환하여 서비스에 접속할 수 있도록 해 주는 서비스 |
| Networking | Direct Connect | 고객 네트워크와 Samsung Cloud Platform을 안전하고 빠르게 연결하는 서비스 |
| Networking | VPN | 고객 네트워크와 Samsung Cloud Platform을 암호화된 가상 전용망을 통해 연결하는 서비스 |
| Container | Kubernetes Engine | 경량화된 가상 컴퓨팅과 컨테이너와 이를 관리하기 위한 쿠버네티스 클러스터를 제공하는 서비스 |
| Database | MySQL(DBaaS) | 오픈소스 관계형 데이터베이스(RDBMS) MySQL을 간편하게 생성하고 관리하는 서비스 |
| Database | MariaDB(DBaaS) | MySQL과의 호환성이 높은 MariaDB를 간편하게 생성하고 관리하는 서비스 |
| Database | PostgreSQL(DBaaS) | 오픈소스 PostgreSQL을 간편하게 생성하고 관리하는 서비스 |
| Database | EPAS(DBaaS) | EPAS를 간편하게 생성하고 관리하는 서비스 |
| Database | Microsoft SQL Server(DBaaS) | Microsoft SQL Server를 간편하게 생성하고 관리하는 서비스 |
| Database | CacheStore(DBaaS) | 빠른 데이터 처리 능력의 Key-value 인메모리 데이터 스토어 |
| Data Analytics | Search Engine | Elasticsearch Enterprise 버전과 OpenSearch 버전을 간편하게 생성하고 관리하는 서비스 |
| Data Analytics | Event Streams | Apache Kafka 클러스터를 간편하게 생성하고 관리하는 서비스 |
| Data Analytics | Vertica(DBaaS) | 대용량 데이터 분석/처리를 위한 Data Warehouse 기반의 고가용성 엔터프라이즈 데이터베이스 |
| Security | Certificate Manager | 사용자가 인증 기관(CA)으로부터 발급받은 SSL/TLS 인증서 배포 및 통합 관리를 지원하는 서비스 |
| Financial Management | Planned Compute | 서버 타입의 사용기간을 약정하여 무약정 자원을 약정 요금으로 사용하는 할인정책 |
| Financial Management | Cost Management | 서비스 비용을 관리하고 비용 관련 정보를 효율적으로 확인할 수 있는 서비스 |
