클라우드 네이티브 애플리케이션
상태바
클라우드 네이티브 애플리케이션
  • 투이컨설팅
  • 승인 2017.12.06 03:51
  • 조회수 2540
  • 댓글 0
이 콘텐츠를 공유합니다

투이컨설팅 왕석균 이사


2기 차세대 구축이 완료된 기업들을 중심으로 클라우드 이전에 대한 관심이 높아지고 있다. 하지만 내부 사용자 중심으로 활용되는 시스템들은 클라우드 이전으로 얻을 수 있는 비용적인 혜택이 크지 않고 전자금융감독규정 개정안에서 '비중요 정보처리시스템'에 대해 클라우드 전환이 가능하도록 몇 가지 규정이 완화되었다지만 이미 내부적으로 충분한 공간, 상면시설, 통신 등 IT인프라가 있는데 굳이 클라우드 방식으로 전환해야 할 명분이 적다. 타 기업의 의미 있는 사례가 나올 때까지 개념 검증(PoC) 수준의 적용을 시도하거나 관망하는 기업들이 대부분이다.

클라우드 도입 검토는 단순히 비용절감 측면에서만 검토되어선 안 된다. 클라우드 성숙도 모델의 최상위 레벨에 도달하게 되면 단순히 비용 측면의 혜택뿐 아니라 개발과 운영 측면에서 최고의 효율성을 확보하게 되며 이 과정에서 IT부서의 대대적인 혁신을 동반하게 된다. 과거 메인프레임 환경에서 오픈 환경으로의 이전 과정에서 경험했던 변화 이상의 혁신이 필요하다는 의미이다. 

당연히 충분한 준비과정 없이 클라우드 환경으로 전환되었을 경우 나아지기는커녕 전에 없던 혼란을 초래할 수도 있다. 이러한 측면에서 클라우드 도입 검토가 인프라 부서 중심으로 이루어지고 있는 부분은 아쉬운 대목이다. 본 기고에서 클라우드에 최적화된 애플리케이션인 “클라우드 네이티브 애플리케이션”이 무엇이고 기존 애플리케이션들과 어떻게 다른지 알아보면서 클라우드 이전에 대한 준비를 위해 IT부서가 고민해야 할 과제를 알아보고자 한다.


‘클라우드 네이티브 애플리케이션’이란 무엇인가?

‘클라우드 네이티브 애플리케이션’은 클라우드 환경에 최적화되어 서비스 되도록 개발된 애플리케이션을 말한다. SaaS(Software as a service)로 서비스되고 있는 애플리케이션들이 이에 해당한다.

클라우드 환경에 최적화된 애플리케이션들은 개발ㆍ배포ㆍ운영 방법에 있어 기존 애플리케이션들과 차별화 된다. 클라우드는 엔터프라이즈 데이터 센터를 운영할 자본 투자와 직원에 대한 집중도를 제거하는 대신 무한한 주문형 및 종량제 컴퓨팅 능력을 대체해 넣은 환경이다. 많은 클라우드 관련 생태계에서 축적해온 노하우들은 이러한 능력을 극한으로 끌어올렸다. 따라서 클라우드에 최적화된 애플리케이션 환경에 맞춰 개발된 애플리케이션들은 다음과 같은 특징을 갖는다.

▶ 첫 번째로 기존 애플리케이션 대비 즉각적인 배포가 가능하다. 물리적인 운영환경에 관계없이 새로운 애플리케이션의 배포가 가능하고 잘못된 배포에 대해서도 즉각적인 복구가 가능하다. 

▶ 두 번째로 장애발생 시 타 서비스에 영향을 주지 않으면서도 빠르게 복구할 수 있다. 이는 장애 영향을 받는 서비스 구성범위가 제한되어 있고 장애가 퍼지지 않도록 의존성을 최소화 하기 때문이다. 물론 장애 상황을 쉽게 파악할 수 있는 도구들은 기본적으로 클라우드 서비스 환경에서 제공되는 것이 일반적이며 정형화된 유형의 장애들은 시스템이 자동으로 복구하게 된다.

▶ 세 번째로 기존 애플리케이션들은 스케일 업(CPU, 메모리 등의 확장, scale up)을 통해서만 확장 가능하지만 클라우드 환경에서는 비용부담이 적고 빠른 스케일 아웃(새로운 가상서버에 서비스를 배포하여 확장, scale out)이 가능하고 작고 균일한 서버들의 가상화를 통한 워크로드 오케스트레이션(workload orchestration)이 이뤄진다.


이러한 특징을 갖는 클라우드 네이티브 애플리케이션을 만들기 위해서는 다음과 같은 기술들에 대해 알아야 한다.

① Twelve-Factor App: 아래 특징을 가진 SaaS 앱을 만들기 위한 방법론
    - 설정 자동화를 위한 절차(declarative)를 체계화 하여 새로운 개발자가 프로젝트에 참여하는데 드는 시간과 비용을 최소화한다.
    - OS에 따라 달라지는 부분을 명확히 하고, 실행 환경 사이의 이식성을 극대화 한다.
    - 최근 등장한 클라우드 플랫폼 배포에 적합하고, 서버와 시스템의 관리가 필요없게 된다.
    - 개발 환경과 운영 환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능하다.
    - 툴, 아키텍처, 개발 방식을 크게 바꾸지 않고 확장(scale up) 할 수 있다.


② Micro Service: 애플리케이션을 HTTP방식의 API와 같은 경량 매커니즘으로 통신하는 작은 서비스 모음으로 개발하는 접근 방식

    - 마이크로 서비스는 데브옵스(DevOps)에 맞춰 SOA를 현실화 한 아키텍처 스타일이다.
    - 기존 SOA의 실패 원인이 너무 많은 책임을 ESB에 할당하고자 했던 것임에 주목하여 API 게이트웨이(Gateway) 등 단순한 서비스간 중계 형태를 띄고 있다.
    - 이벤트 기반(Event Driven) 아키텍처를 지향하고 있다.


③ Container: 리눅스 커널에서 출발한 경량(Light weight)의 효과적인 가상화 기법
    - 도커 등이 대표적인 컨테이너 제품이다..
    - 모든 앱(App)이나 컴포넌트가 단일한 플랫폼 소프트웨어를 사용하므로 오버해드가 적다.
    - 애플리케이션이나 컴포넌트의 배포와 재배포가 빠르다.


④ Multitenancy: 단일 소프트웨어 인스턴스가 서버에서 실행되고 여러 임차인에게 서비스를 제공하는 소프트웨어 아키텍처를 의미
    - 즉 애플리케이션, 데이터베이스 등을 여러 사용자 그룹에서 공유하면서도 각자 정보 및 서비스 독립성을 유지토록 만드는 기술을 말함
    - 데이터베이스 멀티테넌시 등에 대해서는 찬반 의견이 있음


⑤ PaaS: IaaS 환경에 최적화된(웹 기반의) 애플리케이션ㆍ소프트웨어 개발 플랫폼
    - 애플리케이션ㆍ소프트웨어 개발에 필요한 도구와 기능, 서비스들이 패키징된 일종의 클라우드 미들웨어를 말함
    - 최종 목표는 개발자는 개발에만 신경 쓰게 하자는 것!
    - IT자원이 항상 서비스 가능한 상태(즉 호스팅된 상태)로 제공됨
    - 클라우드 상에서 개발과 딜리버리가 가능

    - IT자원을 셀프서비스나 API를 통해 사용할 수 있도록 함


넷플릭스의 클라우드 이전 사례

대규모 클라우드 이전 사례로 항상 언급되는 것이 넷플릭스 사례이다. 디지털 기업의 혁신 사례로 자주 등장했던 넷플릭스가 클라우드 환경으로 이전하게 된 이유는 2008년 심각한 데이터베이스 손상으로 3일간 DVD 배송이 지연되는 문제를 겪은 후, 수직 확장되는 단일 실패 지점(예: 넷플릭스 데이터 센터의 관계형 데이터베이스)에서 벗어나 신뢰성 높고 수평 확장이 가능한 클라우드 내 분산 시스템으로 이전해야 할 필요성을 체감했기 때문이다.

넷플릭스의 클라우드 이전은 간단하지 않았다. 물경 7년이라는 시간을 걸려서야 이전을 완료한 데는 나름 이유가 있었다. 클라우드로 가장 쉽게 이전하는 방법은 데이터 센터의 모든 시스템을 있는 그대로 AWS에 가져다 놓는 것이지만, 그렇게 되면 데이터 센터가 지닌 모든 문제와 한계점을 그대로 옮기는 것밖에 되지 않는다. 그렇기 때문에 넷플릭스에서는 클라우드 네이티브 방식을 택하여 사실상 모든 기술을 재구축하고 운영 방식을 근본적으로 바꿨다. 

① 마이크로 서비스 도입: 아키텍처 면에서 넷플릭스는 거대한 앱을 수백 개의 마이크로 서비스로 나누어 마이그레이션하고 NoSQL 데이터베이스를 사용하여 데이터 모델을 반정규화(denormalization) 했다. 

② DevOps 환경 구축: 각 마이크로 서비스는 도커(배포 기술 중 하나) 기반 하에 느슨하게 결합된 개발 운영(DevOps) 환경을 갖추게 되면서 엔지니어링 팀이 셀프서비스 툴로 독립적인 결정(서비스 배포 등)을 내릴 수 있게 되면서 혁신이 가속화되었다. 

③ 지속적인 딜리버리: 예산 승인, 중앙화된 릴리스 관리, 몇 주에 걸친 하드웨어 프로비저닝 주기를 도입해 지속적인 콘텐츠 전달이 가능해졌다.

④ 자체 회복력(Resilient)을 가진 아키텍처: 클라우드 기반 시스템을 포함한 대용량 분산 시스템에서는 시스템 장애 발생이 불가피하므로 기본 인스턴스에 장애가 발생할 경우에는 기본 하드웨어 가용성에 의존하는 대신 자체 회복력(Resilient)을 가질 수 있도록 시스템 아키텍처를 설계했다. 클라우드 환경에서 회복력을 가질 수 있도록 시스템 아키텍처를 구축하고 거듭해서 테스트(자동으로 시스템을 고장(?)내는 프로그램 가동)를 진행한다. 그 결과 넷플릭스는 이중화와 점진적 축소 운영 원칙 하에 불안정한 컴포넌트 상에서도 안정적으로 운영되는 시스템을 구축했다.

이 과정에서 새로운 시스템을 여럿 구축해야 했으며, 새로운 기술도 배워야 했다. 넷플릭스가 클라우드 네이티브 기업으로 변신하는 데는 많은 시간과 노력이 필요했지만, 클라우드 마이그레이션을 통해 글로벌 TV 네트워크로서 지속적인 성장을 이뤄나갈 밑거름을 마련할 수 있었다.


마치면서

최근 AIG생명 한국 지점은 프라이빗 클라우드(Private Cloud) 시스템을 기반으로 한 미래형 데이터센터 인프라를 전면 구축, 완료했다고 10월 12일 밝혔다. KB국민은행은 9월 26일 정식 오픈한 대화형 뱅킹플랫폼 ‘리브똑똑’ 에서 아마존웹서비스의 인프라를 간접적으로 이용하고 있다. 하나금융그룹도 내년 초를 목표로 하이브리드 클라우드 도입을 추진한 핀테크 관련 핵심 플랫폼을 클라우드 기반으로 우선 구축한다는 계획이다.

국내기업들의 클라우드 이전은 먼 미래 이야기가 아니라 당장 코앞에 닥친 현실이다. 중요한 것은 클라우드 이전을 통해 무엇이 좋아질 수 있을 것인가와 어떻게 효과를 극대화 할 것인가에 대한 해답을 찾는 일이다. 넷플릭스는 2008년 대비 스트리밍 서비스 이용 회원 수가 8배 증가하고, 지난 8년간 월간 스트리밍 시간이 무려 1천배 가량 증가했음에도 무리없이 탄력적으로 시스템을 운영할 수 있게 됐다.
서비스 가용성 역시 대폭 증가했다. 과거의 데이터 센터를 이용하던 시절에는 서비스 중단이 발생하는 경우가 빈번했다. 클라우드 이전 이후 전반적인 가용성이 꾸준히 증가해 서비스 가용성 목표인 99.99%에도 다가섰다.

이러한 성과는 7년여에 걸쳐 무수히 많은 시행착오를 통해 전체 시스템을 클라우드 네이티브 환경으로 이전한 결과다. 내후년이 되면 대부분의 2기 차세대시스템 구축 프로젝트들이 마무리되고 새롭게 3기 차세대에 대한 고민이 본격화 될 시기다. 3기 차세대시스템은 아직 윤곽이 확실하지 않지만 적어도 클라우드 네이티브 환경에 대한 고려가 필요하며 이를 위한 전략수립과 학습은 지금부터 시작해야 할 필요가 있다.


- 끝 -



※ 위 내용은 '투이톡모바일 앱을 통해서도 확인하실 수 있습니다.
하루 5스마트해지는 시간~투이톡!!

 다운로드

댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.