2017년 3월 24일 금요일

[217호 웹진: 공학트렌드] 클라우드 SW 사례 연구 - 아키텍처


클라우드 SW 사례 연구 - 아키텍처
소프트웨어의 환경이나 네트워크 속도가 빨라지면서 클라우드 서비스의 관심이 늘어가는 추세지만 지금까지도 시스템 구동을 위해서는 서버와 스토리지, 네트워크를 설치하는 부담을 가지고 있다. 클라우드 서비스는 이러한 부담을 줄이는 매우 효과적인 방법으로 알려져 있고 구글이나 아마존과 같은 클라우드 서비스 업체는 소프트웨어 개발 환경까지 클라우드 서비스로 제공하면서 클라우드 서비스는 더 늘어날 것으로 보인다. 소프트웨어는 어떻게 구성하느냐에 따라 성능이 큰 차이를 보이기 때문에 이번 회에서는 효과적인 소프트웨어 구성을 위한 클라우드 아키텍처에 대한 정의와 필요한 요소에 대해 살펴보기로 한다.
사례 연구 전 확인 사항

클라우드(Cloud) 서비스의 정의

클라우드 서비스는 사용하려는 기술이나 장비에 대한 정확한 지식이 없어도 사용할 수 있도록 도와준다. 그리고 하나의 시스템을 구축하여 서비스하기 위해 필요한 하드웨어, 소프트웨어, 네트워크를 모두 구입하거나 대여해서 사용하게 되는데 클라우드 서비스는 이 모든 것을 네트워크를 통해 공유 받아 사용하게 된다(그림1).

<그림1> 클라우드 서비스의 특징
출처: SW 아키텍처 컨퍼런스 – 클라우드 아키텍처 개론

그림1과 같이 클라우드 서비스는 필요한 기능이나 장비를 요구사항에 맞게 제공받고 네트워크를 통해 접속하여 물리적인 자원을 공유 받아 사용하게 된다. 필요한 만큼 사용하고 사용한 만큼 비용을 지불하면 되는데 필요하다면 탄력적으로 줄이거나 늘리기도 한다.
초기 투자 비용도 상당수 줄일 수 있기 때문에 자본 비용과 운용, 유지 부담이 적고 시스템 구축이나 소프트웨어 개발 기간이 단축되고 외부 요인에 유연하고 즉각적으로 대응할 수 있다. 또한 네트워크를 통해 협업이나 정보 공유가 용이하고 장비 분실에 따른 위험이 낮으며 사업 연속성이 높아지는 것이 장점이다.
아마존에서는 클라우드 서비스를 사용하는 이유에 대해 70대30으로 설명하고 있는데 그림2에 나타나있다. 클라우드 서비스를 설치하고 나면 자산에 대한 설치, 운영의 신경을 줄여 비즈니스에 더 집중할 수 있다는 것을 확인할 수 있다(그림3).

<그림3> 클라우드 서비스를 사용하는 이유
출처: amazon

클라우드 서비스의 종류

클라우드 서비스에는 소프트웨어를 서비스하는 SaaS와 플랫폼을 서비스하는 PaaS, 그리고 인프라를 서비스하는 IaaS로 구분할 수 있다. 이전에는 서버, 스토리지, 네트워크 등과 같이 물리적인 하드웨어 위주의 IaaS가 많았지만 최근에는 완제품의 소프트웨어를 제공하는 SaaS도 증가하고 있다. 여기에 소프트웨어를 개발하는 개발 환경 자체를 서비스하는 PaaS도 점차 늘어나고 있어 클라우드 서비스는 지속적으로 늘어날 것으로 예측되고 있다(표1).

<표1> 클라우드 서비스의 종류와 특징
출처: SERI

클라우드 서비스는 소프트웨어를 구동시키기 위해 필요한 모든 것을 제공해준다. 클라우드 개념이 시작되면서 가장 먼저 발전된 것은 하드웨어 분야인 IaaS였다. 비용이나 관리적으로 가장 많은 자원이 소요되는 분야이기도 했지만 소프트웨어나 사용처의 특성을 크게 고려하지 않아도 서비스할 수 있었기 때문이다. IaaS 이후 가상의 서버를 비롯해 다양한 플랫폼들도 직접 구매하지 않고 클라우드 서비스를 통해 활용하기 시작했고, 소프트웨어 개발과 구동 환경이 일반화 되면서 PaaS의 사용도 활발해지기 시작했다. PaaS의 사용은 플랫폼의 표준적인 모델을 제공하였고 이에 기반하여 완성된 소프트웨어를 제공하는 SaaS도 제공되기에 이르렀다(그림4).

<그림4> 클라우드 서비스의 구분
C:\Users\sds\Downloads\d-img5 (1).png
출처: LG CNS

클라우드 아키텍처의 구성

클라우드 서비스로 인해 소프트웨어 개발에 대한 새로운 패러다임이 나타나고 있다. 온-프레미스(On-premise; 그림4)에서는 물리적 서버 준비, 운영체제 설치, 서비스 배포 등에 수많은 시간이 걸렸지만 클라우드 서비스를 활용하면서 단시간에 원하는 자원을 준비하고 서비스를 배포할 수 있게 되었고 확장과 가용성을 가질 수 있게 되었다.
이러한 클라우드 서비스는 두가지 방법으로 구축할 수 있는데 사외의 클라우드 서비스를 받는 방법과 사내의 클라우드 서비스를 받는 방법이다. 사외든 사내든 사용자 입장에서는 구분 없이 클라우드 서비스를 활용할 수 있는데 예를 들어 사내의 개발 표준이나 환경, 방법 등이 사외와는 다르게 구성된다면 사내에 클라우드 서비스를 구축해서 제공하지만 개발자에게는 사외인지 사내인지 구분하기 어렵다. 따라서 서비스 종류, 방법, 용량 등을 고려해 아키텍처를 구성하는 것이 좋다. 그림5는 클라우드 아키텍처의 예를 나타낸다.

<그림5> 클라우드 아키텍처의 예
C:\Users\sds\Downloads\helloworld-1092-17.png
출처: NBP

클라우드 아키텍처 구성 프로세스

클라우드 아키텍처를 구성하기 위해서는 클라우드 서비스에 요구되는 비즈니스 관점의 요구사항과 기능을 파악하여 어떤 클라우드 서비스를 어떻게 적용할 것인지를 선택하고 적용되는 클라우드 제품과 서비스의 주요 기술 요소와 품질 요소를 분석하여 아키텍처 수립에 반영한다. 클라우드 아키텍처가 구성되면 참조 모델의 아키텍처 정의와 대안 아키텍처 검토에 따라 최종 아키텍처를 확정한다(그림6).

<그림6> 클라우드 아키텍처 구성 프로세스
C:\Users\sds\Downloads\01-cloud-07-cloud-arch.png
출처: 홍릉과학출판사 - 소프트웨어 아키텍처로의 초대
사례 연구

아마존 웹 서비스 기반 문서 중앙화 서비스

출처: AWS Summit Seoul 2016 - https://www.slideshare.net/awskorea/centralized-document-management-solution-on-aws-dukjae-lee

N사에서는 부서나 외부 업체와의 공동 작업과 모바일 스마트 워크로 업무 환경이 변하고 있고 전사 문서를 체계적으로 관리하여 컴플라이언스 문제를 줄이면서 인프라가 안정적이고 유연하게 운영되도록 클라우드 기반의 문서 중앙화 서비스를 제공한다.

<그림7> N사의 클라우드 기반의 문서 중앙화 서비스 개념
출처: AWS Summit Seoul 2016

이 서비스의 특징은 클라우드를 사용함으로써 서버나 네트워크의 설치나 유지보수가 불필요하게 되고 데이터의 백업이나 신속한 장애 대응이 용이하다고 강조하고 있다. 여기에 클라우드 사용량에 기초한 비용 산정이 효율적이고 향후 유연한 확장이 가능한 것을 얘기하고 있다.
또한 기존 아키텍처에서는 단일 데이터 센터와 네트워크 환경 의존성이 높아 비즈니스 로직이 매우 비효율적으로 움직일 수 밖에 없는 상태였다. 이 서비스에 클라우드를 적용하면 그림8의 오른쪽 그림과 같은 아키텍처로 만들 수 있다. 비즈니스 로직을 특징에 따라 구분하여 별도의 서비스 부문으로 분리함으로써 데이터베이스나 네트워크와 같은 인프라의 부담을 줄여주고 있다. 또 추가되는 비즈니스 로직이 있을 때마다 같은 형태의 서비스 부문을 추가하면 되기 때문에 일관된 관리 방법을 유지할 수 있는 장점이 있다.
<그림8> 클라우드 서비스 아키텍처로 전환
출처: www.josemhernandez.com/mentalidad-cloud

그림9는 본 사례의 서비스를 하이브리드 형태로 구성한 것인데 개인 문서와 같이 복잡도나 공유도가 높지 않은 비즈니스 부문은 기존처럼 중앙 관리 식으로, 사내외 적으로 공유도가 높고 보호가 필요한 비즈니스 부문은 클라우드 식으로 관리하면서 인프라 보안, 데이터 보호, 취약점 분석 등을 수준에 맞게 수행하고 있다.

<그림9> 클라우드 서비스 아키텍처(하이브리드)
출처: AWS Summit Seoul 2016
기대 효과와 결론
데이터, 개발 환경이나 인프라의 설치, 운영, 확장 등에서 클라우드가 차지하는 비중이 점점 더 높아지고 있다. 시스템 마다 시스템에 맞는 환경을 설치하고 운영해야 하는 불편함이 클라우드로 인해 해소될 수 있고 소프트웨어 개발자들도 개발에 더 집중할 수 있기 때문일 것이다. 또한 클라우드 서비스를 반복적으로 사용함으로써 데이터 보호와 관리, 인프라와 네트워크 구축, 그리고 보안 관리가 더 체계적으로 발전될 수 있을 것이다. 앞으로 더 나은 클라우드 서비스가 나타날 것이라는 기대가 생기는 이유다.


Keyword: software engineering, cloud service, paas, saas, iaas, amazon web service, cloud software architecture