어플리케이션 배포, 이게 최선입니까?

이 글은 Apps101 과정의 마지막 글입니다.

앞서의 Apps101 과정을 통해 Nginx-Tomcat-MySQL로 구성된 웹서비스를 배포해봤습니다. 다들 별 어려움없이 쉽게 따라하실 수 있었을 겁니다. 어플리케이션 배포가 Apps를 통해 이렇게 쉽게 되는 구나를 느끼셨기를 바랍니다.

하지만, 아무리 쉬운 일이라도 반복해서 하게 되면 여간 귀찮은 일이 아닙니다.  또한, Nginx, Tomcat, MySQL의 각각의 세밀한 설정을 완벽하게 입맞에 맞게 설정하는 데에는 많은 시간이 걸립니다. 힘들지만 정성스레 작업한 설정을 다시 처음부터 한다면 짜증나는 일이죠.

Apps는 여기에서 한 발 더 나아가, 여러분이 구성한  Nginx-Tomcat-MySQL 삼총사의 구성을 그대로 한번에 저장해서 언제든지 다시 사용할 수 있도록 합니다.

서비스 카탈로그란

앱스의 “서비스 카탈로그” 기능은 컨테이너와 구성을 하나의 묶음으로 관리 복제, 배포 해 줄 뿐만 아니라 편집 및 버전 관리 기능을 제공하고 있습니다.

하나의 사용자 서비스 어플리케이션을 운영하기 위해서는 HTTP Server, WAS, Database와 같은 다양한 어플리케이션들을 배치하고 설정 정보를 지정해 주어야 합니다.

또한 일반적으로 웹서비스에서 “Nginx(Apache) – Tomcat- MySql(Mariadb)” 조합을 많이 사용하고 있듯이 이러한 어플리케이션 구성 및 배치는 비즈니스 형태 뿐만 아니라 전산운영 조직이 가지고 있는 기술 역량과 경험 등에 따라서 일정한 패턴의 어플리케이션 조합으로 구성됩니다.

그러나, 기존의 컨테이너 기반 인프라 환경에서 이렇게 패턴화되어 있는 어플리케이션들을 배포(배치, 설정)하기 위해서는 컨테이너 배포 및 구성/설정 작업을 수동으로 하나하나 해주어야 하므로유사한 어플리케이션 패키지를 복제할 때마다 반복적으로 설치, 설정 작업을 수행하는 불편함이 있습니다.

그러므로 지역, 단계 혹은 클라우드 인프라를 기준으로 동일한 애플리케이션들을 배포할 경우에는, 개별 컨테이너 별로 배포할 필요없이 하나의 패키지 단위로 한번에 애플리케이션들을 편리하게 배포할 수 있습니다.

이번 포스트에서는 이러한 앱스의 “서비스 카탈로그” 기능을 이전 포스트들에서 사용했던 “Nginx-Tomcat-Mysql” 서비스맵을 활용하여 서비스 카탈로그 템플릿으로 저장하고 저장된 템플릿을 다른 워크스페이스에 배포해 보도록 하겠습니다.

서비스 카탈로그 저장

“기본기, 한시간만 하면 할수 있다.” 를 무사히 수행했다면 다음과 같이 “서비스맵 > Default 서비스맵 그룹 > nginx-tomcat-mysql 서비스맵이 생성되었을 것입니다.

아래와 같은 서비스 화면에서 “nginx-tomcat-mysql” 링크를 클릭하여 서비스맵 화면을 오픈 합니다.

앱스 서비스맵 조회 화면

“nginx-tomcat-mysql 서비스맵”은 아래 그림과 같이 3개의 컨테이너로 구성되어 있습니다.

서비스맵 화면에서 “카탈로그로 저장“버튼을 클릭합니다.

앱스 서빗 맵에서 카탈로그로 저장 버튼 클릭

신규로 템플릿 생성 시 ‘신규’ 카테고리를, 기존 템플릿을 업데이트 할 시 ‘기존’ 카테고리 선택 합니다.
현재는 신규로 템플릿을 만들어야 하므로 “신규“를 선택합니다.

카탈로그 이름 “catalog-web” 을 입력하고 Shared Type은 “워크스페이스“를 선택합니다.
그리고 간단한 설명을 입력합니다. 설명은 markdown 형식을 지원합니다.

앱스 카탈로그로 저장 시 설명 입력

좌측메뉴에서 “카탈로그“를 선택하여 카탈로그 화면으 오픈되면 우측 상단의 “서비스 카탈로그“를 클릭 합니다.

아래와 같이 이전에 저장했던 “catalog-web” 가 조회되는 것을 확인할 수 있습니다.

앱스 서비스 카탈로그 목록에서 저장했더 카탈로그 확인

카탈로그 배포

저장된 서비스 카탈로그를 배포하기 위해서 카탈로그 화면에서 아래 그림에서와 같이 “catalog-web” 항목의 “배포” 버튼을 클릭합니다.

앱스 서비스 카탈로그에서 배포 버튼 클릭

우리가 저정했던 “catalog-web” 는 아래 그림과 같이 3개의 컨테이너와 3개의 configmap 총 6개의 객체로 구성되어 있음을 화면을 통해 확인 할 수 있습니다.

아래와 같이 원하는 서비스 맵그룹, 클러스터를 선택해주고 서비스 맵, 네임스페이스 이름을 각각 입력하고 “배포” 버튼을 클릭합니다.
여기서는 각각 “wordpress”, “catalog-copy”, “catalog-copy” 를 입력하였습니다.

앱스 서비스 카탈로그 배포 시, 배포 관련 정보 입력

정상적으로 배포되면 아래와 같이 catalog-copy 서비스에 배포 결과가 보여집니다.
배포된 서비스 카탈로그의 Nginx, Tomcat, Mysql 컨네이터가 Running 되었음을 확인 할 수 있습니다.

앱스 서비스 카탈로그 배포 후 컨테이너 동작 상태 확인

배포 확인

확인을 위해 좌측 “서비스” 메뉴를 선택하면 아래 그림에서와 같이 “catalog-copy” 서비스맵이 추가 된 화면을 확인 할 수 있습니다.

앱스 서비스 맵 현황에서 서비스 카탈로그로 배포했던 컨테이너 추가 확인

“catalog-copy” 서비스맵을 선택해 서비스맵 화면으로 이동 후 우측 상단의 설정정보를 선택하면 아래 그림에서와 같이 Nginx , Tomcat, Mysql 개 컨테이너 외 3개의 ConfigMap 도 배포 되었음을 확인할 수 있습니다.

마치며

살펴본 바와 같이 앱스는 “서비스 카탈로그” 를 통해 일반적인 웹서비스 인프라인 Nginx-Tomcat-MySql 구성을 간단한 클릭과 몇번의 입력만으로 템플릿으로 저장하고 재 배포 할 수 있었습니다.

이번에는 설명되지 않았지만 컨네이터를 추가하거나 서비스 포트 변경, 설정정보 변경 등의 편집 기능을 제공하고 이렇게 변경된 내용의 히스토리를 관리하는 강력한 버전관리 기능도 제공합니다.

서비스 카탈로그” 기능을 활용하여 원하는 다양한 형태나 방식의 어플리케이션 구성 템플릿을 만들어 활용해 보시기 바랍니다.