컨테이너 기반의 마이크로서비스 아키텍쳐 시대 도래

최근 어플리케이션 아키텍쳐를 이야기 할 때 마이크로 서비스에 대한 아키텍쳐(Architecture)에 대해 많은 개발자들의 관심들이 쏟아지고 있습니다. 마이크로서비스(Microservice) 아키텍쳐(Architecture)란 무엇일까요?

기존 소프트웨어(어플리케이션)의 아키텍쳐는 모놀리틱(Monolithic) 아키텍쳐(Architecture)를 대부분 사용 하여 왔습니다. 모놀리틱(Monolithic) 아키텍쳐(Architecture)란 모든 기능들이 하나의 구조로 포함 되는 방식을 이야기 합니다.

 

아래 그림처럼, 이 방식의 단점으로는 기능들이 많아지고 용량이 커지며 새로운 문제가 발생 했을 경우 수정에 많은 시간이 걸린 다는 단점 입니다.

 

그래서 이러한 단점을 극복 하고자 관심을 가지는 아키텍쳐(Architecture)가 마이크로 서비스(Microservice) 아키텍쳐(Architecture)에 관심을 갖게 되었습니다. 즉, 하나의 구조가 아닌 각각의 기능들이 작게 나뉘어 연동되어 전체적인 기능들을 수행 하는 구조가 마이크로 서비스(Microservice) 아키텍쳐(Architecture) 입니다. 이러한 마이크로서비스 아키텍처를 이용하려는 궁극적인 이유를 다시 한번 생각 해보면 고품질 서비스를 빠르게 적용하려는 것이 최종적인 목적이 됩니다. 그래야 빠르게 변화해야만 살아 남는 IT 생태계에서 살아 남을 수 있는 방법이 되는 것입니다. 마이크로 서비스 아키텍쳐를 빠르게 적용 하려면 기존의 어플리케이션을 관리, 배포, 서비스 하는 방법과 구조에도 변화가 필요 합니다. 왜냐하면 MSA(Micro Service Architecture)가 되면서 대두 되는 문제들이 있기 때문입니다. 문제점들을 살펴 보면 서비스의 개수가 많아 지고 그 기능들의 연관성이 복잡해 진다는 것 입니다.

 


 

작게 나누어 실행 하고 적용 하는 기술에 장점을 준 기술은 컨테이너(Container)기술이 한 몫 했고 그 컨테이너들을 생성, 관리 해 준 기술이 도움을 준 것이 Docker기술 입니다. 도커(Docker)가 위의 전체적인 오케스트레이션 기술이 필요한데 근래에 각광 받고 있는 것이 Kubernetes가 인기가 많아 졌습니다. 물론 단순하게 마이크로서비스에 컨테이너와 도커가 적합 한 점도 있겠지만 여러가지 복합적으로 알맞은 부분들이 도커와 컨테이너의 사용이 올라가는 이유 이기도 합니다.

그럼 MSA로 구성, 도입 하는 것에 기술적으로 잘 되었다면 문제가 없을까요 ? 현실은 그렇지만은 않습니다. 해외 성공 사례를 먼저 살펴 보면 오래된 (2012년) 월마트 캐나다의 경우가 있습니다. 분당 600만 페이지 조회 감당을 못하다가 소프트웨어들을 MSA를 도입하여 성공 하였으며 MSA로 전환 도입 하면서 성공을 한 사례가 있습니다.

(https://youtu.be/SPGCdziXlHU참조)

국내의 사례는 쿠팡의 사례를 들 수 있습니다. 쿠팡은 MSA를 도입 하면서 시스템을 클라우드로 이전 한 것으로도 유명 합니다. 쿠팡은 MSA를 도입하고 클라우드로의 이전을 성공 시키면서 하루에 200회 이상의 업그레이드와 안정적인 서비스를 현재 하고 있습니다.

(자세한 내용은 https://medium.com/coupang-tech/%ED%96%89%EB%B3%B5%EC%9D%84-%EC%B0%BE%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%9A%B0%EB%A6%AC%EC%9D%98-%EC%97%AC%EC%A0%95-94678fe9eb61 참조)

이러한 성공 사례들에서 살펴 보면 몇가지 공통 되는 것들이 있었는데, 신속한 프로비저닝과 배포, 모니터링, DevOps문화 수용, 테스트 이런 것들이 문제점으로 겪었고 모두 변화가 이루어져 종합적으로 MSA로 전환 하고 성공적으로 서비스를 만들어 냈다는 것들을 알 수 있었습니다. MSA에 대해 국제적인 동향을 보자면 약 70%가 마이크로 서비스를 사용 중 이거나 조사 중 이며 1/3 정도가 생산적으로 사용 하고 있다는 조사가 있습니다.

 


 

회사 규모에서는 작은 회사들이 사이에서 더 활용한다고 말하고 있으며, 중간 규모 기업의 절반과 소규모 기업의 44 %가 이미 개발 또는 생산에 마이크로 서비스를 사용하고있는 것으로 나타났습니다. 대기업의 38 %가 마이크로 서비스를 전혀 사용하지 않는다고 응답했으며 26 %는 조사 중이지만 아직 구현하지는 않았습니다. 대규모 조직의 36 %만이 개발 또는 생산에 마이크로 서비스를 사용하고 있습니다 (Nginx조사 결과). 이 결과는 국내와는 매우 다른 상황이 됩니다. 조사 자료가 없지만 제가 실제 여러 고객들을 만나 MSA를 이야기 하면 약 10% 정도만 단어를 알고 있을 정도 입니다. 빠른 변화와 성장, 문제점 해결을 하고자 하는 기업들은 MSA 도입, 전환을 분명 고려 해야 할 것이며 위에 기술한 내용들을 헤쳐 나가 원활한 서비스와 건강한 문화의 IT 기업들이 생겨 났으면 하는 바람 입니다.