최근 많은 기업들이 온 프레미스(on-premise) 환경에서 클라우드 환경으로 migration한다는 소식을 심심찮게 들을 수 있다.
혹은 on-premise와 퍼블릭 클라우드를 혼합한 하이브리드 형태로 운영한다는 소식도 마찬가지다.
그래서 정리해본다.
on-premise, CSP, MSP에 대해 알아보도록 하자.
on-premise 환경이라 함은 기업 내에 자사 소유의 물리적인 서버 장치를 두고 운용하는 상황을 의미한다. 다음의 예시를 확인해보자.
기업 A는 자사 서비스 '다모아'를 운영하기 위한 NAS Synology 10대를 이용해 사내 서버를 운영중이다. ( 물리적인 서버용 컴퓨터 10대를 기업 A측에서 직접 운영중이다 )
위와 같이 서비스 운영을 위해 직접 물리적인 컴퓨터 장치를 구매 및 OS 설치, 네트워크 환경 설정, 서비스 운영에 필요한 시스템 패키지
runtime(python, java, node.js ... etc),
db( mysql, postgresql, mongo db.. etc)
CI/CD( jenkins)
virtualization&deploy( docker/kubernetes )
등을 pc 10대에 직접 설치하여 인프라를 직접.. 직접.. 직접!! 운영하는 것을 on-premise 환경이라 한다. ( 이 과정에서 ansible 등을 사용할 수 있음 )
그런데 이 pc 10대가 항상 좋은 컨디션을 유지하진 않는다. 어떤 날은 기업이 입주한 건물에 정전이 발생할 수도 있고 어떤 날은 비가 내려서 pc 내부의 메인 보드가 습기에 차는 등의 이유로 pc가 다운될 수도 있다. pc가 다운되면?
서비스는 중지된다.
사용자 입장에서는 잘 되던 '다모아' 앱이 갑자기 404 에러를 내뿜으며 '접속할 수 없습니다'를 마주하게 될 것이다.
위와 같이 여러가지 예측할 수 없는 상황에 의해 pc가 멈출 수 있다. 그리고 이를 기업 내에 24시간 상주하는 직원이 아니라면 관리도 어려울 것이다. 서버 컴퓨터가 꺼질 때마다 slack 메시지 알림을 설정해놨다고 해도 서버 컴퓨터 꺼진 시간이 새벽 02:50분이라면 자다가 벌떡 일어나서 회사 달려가서 다시 서버컴퓨터 킬것인가?
몇 번은 그렇게 할 수 있지만 매번 그렇게 하기는 힘들다.
이런 인프라 관리를 용이하기 위해 등장한 것이 cloud이다.
이제 기업 A는 이런 컴퓨터 관리를 클라우드 업체 AWS의 EC2를 도입함으로써 수고를 덜 수 있다.
기존 서버용으로 운영하던 컴퓨터 10대를 당근마켓에 갖다 팔고 그 돈으로 AWS의 EC2 10대를 구독하기 시작했다.
이제 기업 A는 컴퓨터가 예측불가한 이유로 다운되는 것을 염려하지 않아도 된다.
AWS가 그런 이슈들을 다 해결해줄 것이기 때문이다.
하지만 1달을 운영하고 보니 EC2 10대를 구독했을 때가 기존보다(직접 10대의 서버컴퓨터를 운영하던 때보다) 비용이 3배 더 발생했음을 확인했다.
수고는 덜었지만 돈은 3배 더 많이 썼음을 확인했고 이를 위해 다시 서버용 컴퓨터 3대를 구매하여 3대만 직접 운영하고 EC2 7대로 구독 규모를 줄였다. ( 사내 서버컴퓨터 3대는 개발 테스트 용도로만 사용하였다 )
다시 1달이 흐르고 확인해보니 비용이 2달 전보다 1.5배 정도 더 발생했음을 확인했다.
10대를 직접 운영할 때보다 여전히 비용이 많이 발생했지만 1.5배는 용인할 수 있는 비용 규모였다.
이처럼 on-premise 환경과 cloud 환경을 적절히 혼합하여 사용하는 방식을 hybrid-cloud 방식이라고 한다.
사실 규모가 큰 회사들은 대부분 자체 데이터센터(혹은 전산실)를 두고 서버컴퓨터를 운영하는 것이 일반적이다.
자체 데이터센터를 준공하고(혹은 전산실을 구축하고) 컴퓨터들을 모두 구입하고 이를 24시간 모니터링하는 2~3교대 인원들의 인건비를 지불한다.
하지만 이들도 계산기를 두들기고 보니 직접 컴퓨터 장치들을 운영하는데 들어가는 전기세, 물리 장치 구매 비용, 인건비 등등을 계산해보니 cloud를 사용하는 것이 더 비용절감에 유리하다고 판단하였는지 많이들 클라우드로 옮기는 추세라고 한다.
여기서 CSP는 Cloud Service Provider의 약자이다. 클라우드 서비스 제공자는 대표적으로 AWS, GCP, Azure 등이 있다. 이들은 기업들의 인프라 관리를 용이하기 위해 자신들이 인프라를 구축하고(대량의 물리 컴퓨터를 구매하고 가상화 기술을 적용한 후 이중화를 위해 여러 지역에 비슷한 데이터 센터를 건립한다) 구축한 인프라를 바탕으로 컴퓨터를 임대(rental)해주는 기업들이다.
MSP는managed service provider의 약자로 CSP에서 제공하는 인프라 서비스를 바탕으로 고객사의 의뢰에 적합한 서비스 환경을 재구성해주는 기업이다. 다음의 예시를 들어보자.
기업 B는 현재 서비스 '다AI로' 를 운영하고 있고 현재 사내서버컴퓨터 100대를 운영하고 있다. 그런데 운영 관리에 들어가는 비용을 절감하기 위해 클라우드 서비스 도입을 고민하고 있다. 그런데 기존에 운영하고 있던 서비스 규모가 크고 복잡하게 얽혀있어 이에 적합한 아키텍처를 스스로 구상하기 어려운 상태이다. 이를 해결하기 위해 MSP 업체 C에 의뢰하기로 했다.
MSP 업체 C는 현재 기업 B 내부의 어플리케이션을 두루 살핀 후 적합한 클라우드 플랫폼은 GCP라고 판단했다. 그리고 GCP에서 제공하는 여러 가지 서비스들을 조합하여 현재 기업 B의 서비스의 운영에 안정성을 더할 수 있는 솔루션을 제시하였다. 그리고 이 솔루션을 구축해주기 위해 기업 B의 기존 어플리케이션 코드들을 정리하고 정리하여 GCP로 migration해주었다.
자 위의 예시를 간단하게 도식화 해보겠다.
기업 B -> MSP -> CSP
기업 B가 MSP에게 의뢰하고 MSP는 CSP의 인프라를 바탕으로 기업 B에게 적합한 솔루션을 구축해준다.
전형적인 B2B 사슬 형태이다.
물론 어플리케이션 규모가 크지 않다면 B가 직접 CSP의 서비스들을 확인하여 구축할 수 있다.
여기서 언급한 cloud 서비스는 대부분 public cloud service를 지칭하며 private cloud 서비스에 관해서는 나도 잘 모르는 부분이 많기에 충분한 학습이 이루어지면 언급하도록 하겠다.