Server

TOSCA 모델을 활용한 서비스 자동화

범데이 2025. 8. 28. 23:28

이전에 진행했던 프로젝트에서 TOSCA 모델을 활용해 서비스 아키텍처를 정의하고 자동화된 배포 환경을 구성한 경험이 있었다.

 

그 과정에서 단순한 스크립트 기반 자동화보다 한 단계 발전된, 서비스 구조 자체를 모델링하는 방식의 장점을 직접 체감할 수 있었다.

 

이 글에서는 그 경험을 바탕으로 TOSCA 모델이 무엇인지, 어떤 방식으로 활용되는지, 그리고 실제 예시 모델은 어떻게 생겼는지를 정리해보고자 한다.

 


 

TOSCA란?

TOSCA(Topology and Orchestration Specification for Cloud Applications)는 OASIS에서 정의한 표준 언어로,

클라우드 애플리케이션과 네트워크 서비스를 **구성 요소 간 관계(Topology)**와 **배포 및 관리 방법(Orchestration)**으로 표현한다.

 

즉, 단순히 인프라 자원만 정의하는 것이 아니라,

  • 어떤 VM이 필요하고,
  • 그 위에 어떤 애플리케이션이 올라가며,
  • 어떤 순서와 관계로 배포되어야 하는지

 

를 하나의 모델(YAML 기반)로 기술할 수 있다.

 

 

왜 TOSCA를 사용하는가

  • 표준화: 특정 벤더나 플랫폼에 종속되지 않고 다양한 클라우드 환경에서 동일하게 활용 가능
  • 자동화: 모델을 기반으로 자동화 도구와 결합해 인프라·서비스 배포를 단순화
  • 확장성: 멀티 클라우드 및 컨테이너 환경에서도 재사용 가능
  • 이식성: 동일한 모델을 다른 클라우드 환경에 적용 가능 → 서비스 이동성이 높아짐

 

적용 방식

1. 서비스 구조 모델링

TOSCA는 NodeRelationship이라는 두 가지 주요 개념을 사용한다.

  • Node: VM, 네트워크, 웹서버, 데이터베이스 같은 구성 요소
  • Relationship: 어떤 요소가 어디에 배포되는지, 어떤 순서로 연결되는지 표현

이를 통해 전체 서비스 구조가 하나의 템플릿으로 관리되며, 동일한 환경을 쉽게 재현할 수 있다.

 

2. 배포 오케스트레이션

작성된 모델은 Ansible 같은 자동화 도구와 연계하여,

  • VM 생성
  • 컨테이너 배포
  • API 연동

과 같은 절차가 순차적으로 자동 실행된다.

배포 순서와 의존성까지 모델에서 제어할 수 있다는 점이 큰 장점이다.

 

 

실제 예시: TOSCA YAML 모델

아래는 VM 위에 웹 애플리케이션을 배포하고, 데이터베이스와 연결하는 구조를 단순화해 표현한 예시다.

tosca_definitions_version: tosca_simple_yaml_1_3

topology_template:
  node_templates:

    my_vm:
      type: tosca.nodes.Compute
      properties:
        disk_size: 20 GB
        mem_size: 4096 MB
        num_cpus: 2

    my_webserver:
      type: tosca.nodes.WebServer
      requirements:
        - host: my_vm
        - dependency: my_database

    my_database:
      type: tosca.nodes.Database
      properties:
        db_name: my_app_db
        user: admin
        password: passw0rd

 

 

 

예시 모델 해석 (상세)

  1. my_vm (Compute 노드)
    • 실제 애플리케이션이 실행될 가상머신(혹은 물리 서버)을 의미한다.
    • 속성(properties)에서 CPU 개수, 메모리 크기, 디스크 용량을 지정한다.
    • 오케스트레이터(OpenStack, Kubernetes 등)는 이 정의를 읽고 필요한 자원을 자동 할당한다.
    • 운영자가 직접 VM을 만들 필요 없이, 모델에서 바로 선언하면 된다.
  2. my_webserver (WebServer 노드)
    • 실제 서비스가 올라가는 웹 애플리케이션 서버를 의미한다.
    • requirements에서 두 가지 관계가 정의되어 있다:
      • host: my_vm → 웹서버가 my_vm 위에서 실행되어야 함
      • dependency: my_database → 웹서버가 DB와 연결되어야 함
    • 이를 통해 배포 순서가 보장된다. (VM → DB → WebServer)
  3. my_database (Database 노드)
    • 서비스에서 사용할 데이터베이스를 의미한다.
    • 속성(properties)에는 초기 설정 값(db_name, user, password)이 정의된다.
    • 배포 시 자동으로 DB 인스턴스가 생성되고, 지정된 이름과 계정으로 초기화된다.

 

 

 

전체 구조의 의미

  • 배포 순서: VM이 먼저 생성되고, DB가 준비된 후, 웹서버가 설치된다.
  • 관계 정의: 웹서버는 VM 위에서 동작하며, 동시에 DB와 연결된다.
  • 자동화 효과: YAML 파일 하나만으로 인프라 + 애플리케이션 + 관계까지 모두 정의할 수 있다.
  • 운영 편의성: 사람이 일일이 VM 생성 → 웹서버 설치 → DB 연결을 수행하지 않아도 된다.

 

 

정리

TOSCA 모델은 단순한 인프라 자동화 스크립트가 아니라, 서비스 아키텍처를 코드처럼 다루는 표준 언어다.

이전에 프로젝트에서 활용했을 때도 느꼈지만, TOSCA는 자동화, 표준화, 이식성 확보라는 세 가지 측면에서 큰 장점을 제공했다.

앞으로 멀티 클라우드와 컨테이너 환경이 확산될수록, 이러한 모델 기반 접근은 더 중요한 역할을 할 것이다.

 

 

 

728x90
반응형