본문으로 건너뛰기

산업 자동화 환경을 위한 Infrastructure as Code

Software Defined Automation(SDA)은 고객이 Infrastructure as Code(IaC) 를 사용하여 SDA 플랫폼 리소스를 정의, 배포 및 관리할 수 있도록 하는 Terraform provider를 도입하고 있습니다. 이 기능은 현재 프라이빗 프리뷰로 제공됩니다. 참여에 관심이 있으신 경우 SDA에 문의해 주십시오.


개발 배경​

SDA에서 새 테넌트를 생성할 때 고객은 일반적으로 프로젝트, 디바이스, 게이트웨이, 볼트, 문서, 리소스 그룹 등 광범위한 리소스를 구성해야 합니다. 현재 이 작업은 두 가지 방법으로만 수행할 수 있습니다.

1. 웹 콘솔에서의 수동 설정​

  • 시간이 많이 소요되고 반복적임
  • 구성 오류가 발생하기 쉬움
  • 반복 수행이나 감사가 용이하지 않음
  • 버전 관리 및 변경 이력 없음

2. SDA API를 사용한 사용자 지정 자동화​

REST 또는 GraphQL API를 사용하는 것은 수동 구성보다 확장성이 뛰어나지만, 나름의 과제가 따릅니다.

  • 상당한 개발 노력과 API에 대한 이해가 필요함
  • 스크립트에 보일러플레이트 코드가 누적되는 경향이 있음
  • 고객이 멱등성, 재시도 및 부분 실패 복구를 직접 처리해야 함
  • 사용자 지정 상태 관리가 필요함
  • 사이트, 팀 및 공급업체 전반에 걸쳐 표준화하기 어려움

이러한 과제들이 종합적으로 작용하여 신규 사이트 및 테넌트의 온보딩 속도를 필요 이상으로 늦추고 불필요한 운영 리스크를 초래합니다.


개발 중인 기능​

이러한 문제를 해결하기 위해 SDA는 HashiCorp의 업계 표준 IaC 프레임워크를 사용하는 자체 개발 Terraform provider를 개발하고 있습니다. Terraform을 사용하면 간단한 선언형 언어(HCL)로 원하는 시스템 상태를 정의할 수 있으며, Terraform이 다음을 처리합니다.

  • 배포
  • 업데이트
  • 롤백
  • 드리프트 감지
  • 삭제
  • 상태 관리

이는 SDA가 자체 AWS 클라우드 인프라를 관리하기 위해 내부적으로 사용하는 것과 동일한 기술입니다.

Terraform Provider로 가능한 작업​

완전히 구현되면 고객은 다음을 포함한 모든 SDA 리소스를 Terraform을 통해 프로비저닝하고 관리할 수 있습니다.

  • 리소스 그룹(중첩 그룹 포함)
  • 프로젝트
  • 디바이스
  • 게이트웨이
  • 문서
  • 볼트 및 시크릿
  • 향후 추가될 SDA 객체

Terraform 구성은 다른 코드와 마찬가지로 Git에 저장할 수 있으며, 이를 통해 다음이 가능해집니다.

  • 변경 사항 추적
  • 동료 검토
  • 재현 가능한 배포
  • 자동화된 CI/CD 워크플로

작동 방식​

Terraform은 Terraform의 선언형 구성 파일과 SDA의 API(REST 및 GraphQL) 사이의 가교 역할을 하는 사용자 지정 provider를 통해 SDA와 통신합니다.

  • 사용자는 HCL로 리소스를 정의합니다.

    resource "sda_resource_group" "example" {
    name = "Production"
    parent_id = "root"
    }
  • Terraform이 이를 SDA에 대한 API 호출로 변환합니다

  • SDA가 그에 따라 리소스를 생성, 업데이트 또는 삭제합니다

  • Terraform이 상태를 유지 관리하고 실제 시스템 상태가 원하는 구성과 일치하도록 보장합니다


현재 제공 범위​

현재 Terraform provider는 다음 기능을 제공합니다.

  • 리소스 그룹 조회
  • 리소스 그룹 생성
  • 리소스 그룹 업데이트
  • 리소스 그룹 삭제
    (중첩 계층 구조 포함)

provider 아키텍처, API 추상화 및 패턴의 상당 부분이 이미 확립되었으며, 제품이 발전함에 따라 이곳에 문서화될 예정입니다.

기술 참고 사항​

이 프로젝트는 SDA의 GraphQL 및 REST API를 사용하여 구축되었습니다.

  • GraphQL은 SDA의 내부 프런트엔드 ↔ 백엔드 통신에 매우 효율적이지만, Terraform provider에서 구현하기에는 더 복잡합니다.
  • REST는 외부 자동화 도구를 위한 업계 표준으로 남아 있으며, 당사는 고객을 위해 REST 엔드포인트를 지속적으로 지원하고 개선해 나갈 것입니다.

Terraform Provider 사용에 관심이 있으신가요?​

SDA Terraform provider는 현재 프라이빗 프리뷰 단계입니다.
SDA 환경을 위한 Infrastructure as Code를 살펴보고자 하는 얼리 어답터를 환영합니다.

참여에 관심이 있으신 경우 SDA에 문의해 주십시오.

당사는 고객과 직접 협력하여 다음을 진행합니다.

  • 사용 사례 평가
  • 프라이빗 프리뷰 액세스 활성화
  • 온보딩 지원 제공
  • 최종 릴리스를 위한 피드백 수집