[그게 뭔가요] 클라우드 시대, 꼭 필요한 ‘애플리케이션 현대화’

“기존 앱과 데이터를 비즈니스 요구 사항에 맞게 클라우드 중심 모델로 업데이트하는 프로세스.” (마이크로소프트)
“오래된 레거시 소프트웨어 시스템을  업데이트해 비즈니스를 위한 소프트웨어 제공 성능을 개선하는 프로세스.” (레드햇)
“최신 언어, 프레임워크 및 인프라 플랫폼을 비롯해 최신 컴퓨팅 접근 방식에 맞게 기존 소프트웨어를 업데이트하는 작업.”(VM웨어)

클라우드 환경의 확산 속 애플리케이션 개발과 배포 환경도 변화가 일어나고 있다. 그 과정에서 나온 말이 ‘애플리케이션 현대화’다. 기업마다 표현은 조금씩 다르지만 공통적으로 레거시(기존) 체제를 바꾼다는 말이 담겼다. 기존의 온프레미스 환경에서 클라우드로의 전환이 낳은 새로운 패러다임이다.

애플리케이션 현대화란? 왜 필요할까

현대화라는 말에서 알 수 있듯 앱 개발과 배포 환경을 기존 레거시 시스템에서 현대의 흐름에 맞춰 변환하는 게 핵심이다. 가트너는 “비즈니스에 최신 기능을 제공하기 위한 새로운 기능 통합을 포함해 레거시를 새로운 애플리케이션 또는 플랫폼으로 마이그레이션하는 것”이라고 정의한다.

과거에는 1년에 한 번, 아니 몇 년에 한 번씩만 업데이트해도 문제가 없었지만 지금의 시대에서는 앱 개발과 배포, 업데이트 주기가 갈수록 짧아져 이에 대응해야 하는 숙제가 생겼다. 지금에야 찾아보기 힘들지만 예전에는 졸라맨 같이 생긴 아이콘이 공사하고 있는 화면이 웹사이트에 띄워진 경우가 빈번했다. 서비스를 멈추고 유지보수하는 시간이다. 장애에 대응하고 시스템을 보수하는 시간 동안 업무는 마비되고, 고객들은 해당 작업이 끝나기만을 기다려야 했다.

하지만 갈수록 복잡해지는 시스템에 최신 IT 기술을 적용하고 트렌드를 적용해야 하는 지금의 시장 환경에서는 빠른 속도와 더불어 서비스 중단도 없어야 한다. 그래서 기존 앱을 클라우드 기반 앱으로 전환하고 유연성과 독립성을 높이는 게 앱 현대화의 핵심이다.

예를 들어 보면 쉽다. 이커머스 기업이 있다고 치자. 기업 내부로 치면 기존 온프레미스에서 돌리던 ERP나 결재 시스템이 있을 테고, 외부 고객 대상으로는 상품을 판매하는 온라인 쇼핑몰 관리 시스템이 있을 테다. 회사가 성장하면서 관리해야 하는 직원 정보는 늘어나고 결재 횟수나 형태도 다양해질 수 밖에 없다. 반대로 외부 고객을 위한 쇼핑몰 관리시스템 또한 매일 들어오거나 빠지는 재고관리부터 고객 응대 프로세스, 레이아웃 구성 등 크고 작은 변화가 빈번하다.

만약 온프레미스 환경에서 통으로 개발해 놓은 앱이었다면 관리 메뉴 하나를 넣고 빼는 일조차 어려울 수 있다. 하나의 패키지 형태로 만든 앱은 한 부분만 손보려고 해도 처음부터 다시 뜯어고쳐야 해서다.섣불리 개선에 나섰다가 예상과 다른 상황을 맞닥뜨리면 비용 측면에서도 큰 손해가 발생할 수 있다. 갑자기 앱 이용자가 늘어날 경우에 대비하는 것도 필요한데, 온프레미스였다면 서버를 새로 사야 했지만 클라우드를 통하면 비용은 아끼고 원하는 용량은 쉽고 빠르게 확보할 수 있다.

이처럼 변화가 빈번한 현재의 흐름에서 앱 배포를 자동화하고 전 주기를 관리해 서비스 중단을 일으키지 않는 ‘지속적인 통합·배포(CI·CD)’는 선택이 아닌 필수가 됐다. 이에 구형 앱을 재구성해 유연성을 높이는 게 앱 현대화의 목적이다.

마치 컨테이너를 층층이 쌓거나 옆으로 늘어놓는 컨테이너 기술은 앱 현대화의 토대가 된다.

기억해야 할 개념

마이크로서비스아키텍처(MSA·Micro Service Architecture): 단독으로 실행할 수 있고 독립적으로 배치될 수 있는 ‘마이크로’ 단위로 기능을 쪼개 서비스하는 아키텍처다. 하나의 배포 시스템으로 구성한 모놀리틱(Monolithic) 아키텍처와 반대되는 개념이다. 모놀리틱 방식은 기능을 바꾸거나 추가하는 작업이 힘들어 유지보수에 드는 시간과 비용 소모가 컸다.

하지만 MSA를 통해 독립적인 작동 구조를 만들면 일부 장애가 발생하더라도 전체 서비스의 중단 없이 문제 부분만 고치면 돼 비용이 절감되고 인력 낭비가 줄어드는 장점이 있어 앱 현대화의 기본적인 방법론으로 자리 잡았다.

컨테이너(Containers): 애플리케이션 구조를 하나하나 작은 구성으로 쪼개는 기술을 말한다. MSA를 구현하기 위한 인프라로, 마치 선박의 컨테이너의 모습과 같다고 해서 이러한 이름이 붙었다. 기존의 서비스 출시 형태가 개발→테스트→운영의 큰 줄기로 이뤄진 가운데 자동화를 통해 개발부터 운영까지 이어지는 속도를 더 높이는 데 컨테이너 기술의 의의가 있다.

앱 구동에 필요한 필수요소를 컨테이너화하고, 어떤 부분에 문제가 생기거나 교체 필요성이 있을 때 해당 컨테이너만 손보면 돼 개발과 운영 과정을 일원하는 데브옵스(DevOps)를 구현이 쉽다. 분리된 각 컨테이너 공간에 앱과 운영 시스템이 들어있어 마치 하나하나가 별도의 앱인 것처럼 움직인다. 배 위에 컨테이너를 쌓고 이동시키듯 컨테이너별로 쉽게 옮길 수 있어 마이그레이션과 오케스트레이션 작업도 편리하다.

쿠버네티스(Kubernetes): 이렇게 컨테이너화된 앱을 관리하는 플랫폼이 쿠버네티스다. 해외에서는 줄여서 ‘K8s’라고 표기하기도 하는데 이는 K와 S 사이에 8글자(ubernete)가 있어서다.

각 컨테이너 관리와 자동 배포까지 지원하는 오케스트레이터로, 퍼블릭 클라우드나 프라이빗 클라우드 등 인프라 환경에 관계없이 컨테이너를 관리할 수 있다. 구글이 처음 만든 쿠버네티스는 현재 오픈소스로 공개되며 사실상 쿠버네티스 관리의 표준으로 자리잡았다. 클라우드네이티브컴퓨팅재단(CNCF)의 2021년 조사에 따르면 응답한 조직의 96%가 쿠버네티스를 사용한다고 답했다.

(자료=가트너)

접근 방식: 접근 방법으로는 크게 ▲리호스트(Re-host) ▲리플랫폼(Re-platform) ▲리팩터‘(Re-factor)를 꼽을 수 있다. 리호스트는 앱 개발과 구동 환경을 클라우드로 이전하는 것을 말하며, 일부 데이터베이스나 앱 구조 변경과 함께 플랫폼을 활용하는 형태를 리플랫폼이라고 한다. 리팩터는 아예 앱을 완전히 MSA로 재설계하는 형태로 가장 고도화한 앱 현대화 형태다.

넘어야 할 산도…

앱 현대화는 시장의 요구에 빠르고 능동적으로 대응하기 위함이지만 성공을 위해서는 넘어야 할 산이 있다. 우선 기초가 되는 MSA 개발의 복잡성이다. 독립적인 서비스로 나누기 때문에 호환성 체크나 데이터베이스 할당 등 신경 써야 할 것 많다.

또 마이크로한 구조라는 건 그만큼 일관적인 테스트와 배포가 어렵다는 뜻도 된다. 또 미숙한 개발자의 경우 장애가 발생했을 때 정확한 포인트를 찾는 데 어려움을 겪기도 한다. 이에 숙련도가 높은 기술 인력 확보가 앱 현대화의 선제 조건이자 성공을 위한 과제다.

글. 바이라인네트워크
<이진호 기자>jhlee26@byline.network

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다