REST API를 사용하여 ‘SAS 컨테이너 런타임’ 이미지 업데이트하기

1. ‘SAS 컨테이너 런타임’이란?

SAS는 SAS Viya 2021.1.1.3에서 SAS 컨테이너 런타임(SAS Container Runtime, 이하 SCR)을 출시했으며, 그 이후 많은 고객이 운영환경에서 SCR을 구현했습니다. 이 혁신적인 런타임 엔진은 SAS 모델과 의사결정을 Open Container Initiative (OCI) 호환 컨테이너에 배포하는 역할을 합니다. SCR은 표준 기술을 사용하여 SAS Viya 외부에서 모델과 의사결정을 실행합니다. 클라우드 비용을 절약할 수 있는 가벼운 경량 형태로서, 환경 간의 쉬운 이동을 가능하게 하는 이식성을 갖추고 있으며, 트래픽 요구를 충족하기 위해 확장이 가능합니다.

SCR은 여러 가지 문제를 해결합니다. 먼저, 모델링 및 의사결정 코드를 쉽고 비용 효율적이며 신뢰할 수 있는 방식을 통해 개발환경에서 운영환경으로 이동할 수 있습니다. SCR은 SAS Viya 개발환경에서 제작된 모델링 및 의사결정코드를 작지만 빠르고 확장 가능하며 처리량이 큰 시스템들로 구성된 생산 환경으로 이동시켜주는데, 이 생산 환경에서 애플리케이션은 REST API를 통해 모델링 및 의사결정 점수에 액세스할 수 있습니다.

SCR은 SAS 코드를 위한 런타임 컨테이너를 생성합니다. 컨테이너는 코드와 그에 필요한 모든 종속성을 패키지화하여 응용 프로그램이 다양한 환경에서 빠르고 신뢰성 있게 실행되도록 하는 표준 소프트웨어 단위입니다. 이는 컨테이너가 어떠한 클라우드 또는 온프레미스 환경에서도 실행될 수 있음을 의미합니다. 또한 이 컨테이너는 실행을 위해 SAS Viya를 필요로 하지 않음을 뜻합니다.

분석모델 또는 의사결정 흐름이 현재 지속적으로 사용되고 있다는 가정을 해보겠습니다. 이 모델 또는 의사결정 흐름은 여전히 유효하지만, 기본 이미지와 패키지가 모두 최신 상태인지 확인해야 합니다. 이를 통해 최신 보안 취약점이 해결되었는지를 확인할 수 있습니다. 어떤 옵션을 사용할 수 있을까요?

하나의 옵션은 전체 소프트웨어 개발 수명주기(Software Development Lifecycle, SDLC) 프로세스를 거쳐 현재 버전의 SAS Viya 플랫폼에서 SCR 이미지를 다시 게시하는 것입니다.

대안적으로 또 다른 접근 방법이 있습니다. 이 포스팅에서는 Decisions Runtime Builder API의 사용법, 특히, /decisionsRuntimeBuilder/update 엔드포인트를 사용하여 게시된 SCR 이미지를 업데이트하는 방법을 알아보겠습니다.

SAS Viya REST API를 사용하여 게시된 이미지의 이진 파일을 업데이트할 수 있습니다. 이는 의사결정 또는 분석 모델을 다시 게시하여 의사결정이나 분석 모델의 점수를 부여하는 SAS 컨테이너 런타임 바이너리를 업데이트할 필요가 없음을 의미합니다. 이 기능은 SAS 컨테이너 런타임 매뉴얼에 문서화되어 있습니다 (Updating SAS Container Runtime Binary Files in a Published Image).

REST API를 사용한 게시 및 업데이트 프로세스는 아래 다이어그램에 설명되어 있습니다. 이미지 업데이트는 2단계로 표시되어 있습니다.

Decisions Runtime Builder API REST 서비스는 다음을 사용하여 이미지의 새 버전을 생성합니다:

시스템에 배포된 SCR 버전에 해당하는 바이너리 파일(SAS Viya 플랫폼).

현재 이미지에 있는 모델 또는 의사 결정 코드.

Model Manager Quick Start Tutorial과 qs_reg_pmmlmodel 모델을 사용하여 설명적 테스트를 수행했습니다.

2. 시나리오

이 접근 방식이 사용될 수 있는 여러 시나리오가 있습니다. 예를 들어:

프로세스적 관점에서, 보안 업데이트 및 이미지(바이너리 파일) 업데이트를 SAS Viya에서 재게시할 필요없이 적용할 수 있습니다.

디자인 및 프로덕션 환경 간에 엄격한 분리가 있으며, 별도의 레지스트리를 사용합니다.

긴급 업데이트가 필요할 수 있으며, 이는 재해 복구를 위한 것일 수 있습니다.

원래 모델 또는 의사 결정 흐름 코드가 소실되었습니다.

실제 시나리오를 제공하기 위해, 개발환경이 운영환경과 구별되는 상황을 고려해 보겠습니다. 이러한 경우에는 일반적으로 비운영 및 운영 용도의 별도 레지스트리가 있습니다. 게다가, 자동화된 파이프라인을 사용하여 이러한 레지스트리 간에 이미지를 원활하게 전송하는 것이 일반적입니다. 아래는 Microsoft Azure 클라우드 구현 예제를 사용하여 이 시나리오를 설명하는 그림입니다.

3. SAS 컨테이너 런타임 이미지 업데이트

decisionsRuntimeBuilder 엔드포인트를 호출할 때, SAS Viya 액세스 토큰과 함께 다음 정보를 제공해야 합니다:

imageURI: 이미지의 레지스트리 위치(URI).

publishDestination: SAS 컨테이너 런타임 이미지의 게시 대상.

publishTag: 업데이트된 SAS 컨테이너 런타임 이미지에 할당할 게시 태그.

REST API를 호출하는 명령을 실행하는 가장 쉬운 방법 중 하나는 변수 대체 과정을 간소화하기 위해 템플릿(스크립트)을 생성하고 사용하는 것입니다.

이 예시에서 curl 명령은 다음과 같이 나타났습니다.

명령을 실행하면 출력은 다음과 유사할 것입니다.

4. 결과 살펴보기

SAS Viya Stable-2023.08에서 생성된 원본 SCR 이미지가 사용되었습니다. 이 예에서는 SAS Viya LTS-2023.10 버전에서 생성된 새 SCR 이미지가 원본 이미지를 업데이트하는 데 활용되었습니다.

그런 다음 Docker 환경을 사용하여 원본 및 업데이트된 이미지를 검사했습니다. 먼저 SCR 이미지의 크기를 비교했습니다. 다음 스크린샷에서는 버전 2 이미지가 더 크다는 것을 보여줍니다. 원본 이미지는 590MB이고 새로운(업데이트된) 이미지는 656MB입니다.

docker history 명령을 사용하여 레이어를 검사하고 변경 사항을 확인했습니다. 그런 다음 출력을 파일로 리디렉션하고 icdiff 를 사용하여 두 파일의 내용을 비교했습니다. 이 과정에서 다음 출력이 생성되었습니다.

SCR 이미지의 업데이트된, 제거된 또는 추가된 레이어가 보입니다. 왼쪽 출력은 원본 이미지에 해당하고, 오른쪽 출력은 'v2' 업데이트된 이미지의 레이어를 나타냅니다.

5. 결론

REST API를 사용하여 이미지를 업데이트하는 것은 간단하지만, 게시 대상을 생성해야 하며, SAS Viya 플랫폼은 대상 레지스트리에 액세스하기 위해 필요한 권한을 요구한다는 점에 유의해야 합니다.

요약하면, SAS 컨테이너 런타임(SCR)은 이동과 확장이 가능하며, 효율적이며 민첩한 방식으로 SAS 애플리케이션을 컨테이너화하고 배포함으로써 현재의 분석 환경에서 컨테이너화 기술의 이점을 활용하는 조직에게 중요한 역할을 합니다. SCR은 다음과 같은 이유로 유용합니다:

포터빌리티(Portability): SCR은 Kubernetes 클러스터, OpenShift, Docker Swarm 또는 독립형 Docker 호스트를 포함한 다양한 인프라 환경에서 SAS 애플리케이션의 이동성을 가능하게 합니다.

확장성 (Scalability): 컨테이너화를 통해 SAS 애플리케이션은 수요에 따라 동적으로 확장되거나 축소될 수 있습니다.

자원 효율성: 컨테이너는 가벼우며 호스트 운영 체제의 커널을 공유하여 전통적인 가상 머신에 비해 효율적인 자원 활용을 실현합니다.

단순화된 배포 및 관리: SCR은 컨테이너 오케스트레이션, 모니터링 및 라이프사이클 관리를 자동화하는 도구와 기능을 제공하여 SAS 애플리케이션의 배포 및 관리를 단순화합니다.

유연성과 민첩성 (Flexibility and Agility): SCR은 Continuous Integration/Continuous Deployment (CI/CD) 파이프라인, 마이크로서비스 아키텍처 및 Infrastructure as Code (IaC)와 같은 현대적인 DevOps 관행과 방법론을 채택할 수 있도록 조직에게 권한을 부여합니다.

이상으로 REST API를 사용하여 ‘SAS 컨테이너 런타임’ 이미지를 업데이트하는 방법을 설명드렸습니다.

SAS 컨테이너 런타임의 장점을 활용하시어 업무에 효율성을 더하시길 바랍니다.

*이 글은 Michael Goddard와 Sophia Rowland의 글을 번역, 편집한 것입니다.