마이크로서비스 아키텍처가 오늘날 애플리케이션 개발의 주류를 이루고 있다는 사실에 아직도 의심이 든다면, 이제 그 의심을 버려야 할 때입니다. Redis가 후원한 IDC의 최신 InfoBrief 『애플리케이션 현대화가 데이터 계층에 미치는 영향(The Impact of Application Modernization on the Data Layer)』에 따르면, 북미 기업 약 300곳을 대상으로 한 설문에서 무려 89%가 이미 마이크로서비스를 도입해 사용 중이라고 답했습니다. 이는 IDC가 2019년 내다본 "2022년까지 모든 신규 앱의 90%가 마이크로서비스 아키텍처를 채택할 것"이라는 예측과도 일맥상통합니다.
마이크로서비스의 확산 속도는 이미 눈여겨볼 수준을 넘어섰습니다. 기업들이 끊임없이 높아지는 고객과 비즈니스의 요구를 충족하기 위해 고품질 앱과 서비스를 더 빠르게 개발·배포·업데이트해야 하기 때문입니다. InfoBrief에 따르면 "마이크로서비스 앱은 이미 비즈니스 핵심 역할에서 활용되고 있으며, 마이크로서비스 앱의 24%가 미션 크리티컬(business-critical) 업무로 분류되었습니다." 실제로 마이크로서비스 앱의 거의 절반(42%)은 다운타임 발생 시 곧바로 매출 손실로 이어집니다.
그렇다고 해서 마이크로서비스 혁신이 완성 단계에 들어선 것은 아닙니다. 오히려 이제 막 시작된 단계입니다. IDC 설문에 따르면 마이크로서비스를 채택 중인 기업들조차 전체 애플리케이션 포트폴리오 중 모놀리식 구조에서 전환한 비율은 고작 17%에 불과합니다. InfoBrief 저자인 칼 W. 올프슨(Carl W. Olofson)과 게리 첸(Gary Chen)은 상황을 간결하게 요약하며 이렇게 말합니다. "마이크로서비스 기반 애플리케이션 개발은 아직 초기 단계에 머물러 있지만, 향후 개발에서 차지하는 중요성은 명확하다."
데이터 계층이 가중시키는 마이크로서비스 아키텍처의 복잡성
그렇다면 마이크로서비스 아키텍처의 잠재력을 온전히 실현하려면 무엇이 필요할까요? 그리고 기업들은 마이크로서비스 도입 과정에서 어떤 어려움에 직면하고 있을까요? 마이크로서비스 도입은 상당한 복잡성을 초래할 수 있는데, 특히 데이터 계층에서 두드러집니다. 설문 결과에 따르면 기업의 마이크로서비스 앱 거의 절반(47%)이 데이터베이스에 의존하지만, 응답자의 약 3분의 1(31.5%)은 데이터베이스 관리를 최대 3대 난제 중 하나로 꼽았습니다. 저자들은 "애플리케이션을 분해하면 관리해야 하는 논리적 컴포넌트의 수가 기하급수적으로 늘어난다"고 지적합니다.
이로 인해 데이터가 사일로(silo)에 갇히고, 복잡성과 비용이 증가하는 문제가 생기며, 많은 기업들이 마이크로서비스 배포에는 오케스트레이션이 필수적이라는 결론에 도달합니다. 그래서 응답자의 약 3분의 1이 '관리 비용 절감 및 운영 효율 향상(35.6%)'과 '새로운 클라우드 네이티브 또는 마이크로서비스 애플리케이션 지원(33.2%)'을 오케스트레이션 도입의 주요 동기로 꼽은 것은 놀라운 일이 아닙니다.
마이크로서비스 아키텍처에 맞는 데이터베이스 선택법
예컨대 이커머스 솔루션은 애플리케이션 서버, 콘텐츠 캐시, 세션 스토어, 제품 카탈로그, 검색 및 탐색, 주문 처리, 주문 이행, 분석 등 다양한 서비스로 구성될 수 있으며, 각 서비스는 자체 데이터베이스를 보유할 수 있습니다.
그렇다면 어떤 기준으로 올바른 아키텍처를 선택하고 애플리케이션을 구축해야 할까요? 어떤 특성을 확인해야 할까요? 연구에 따르면 네 가지 핵심 필수 요건에 집중하는 것이 좋습니다. 하나씩 자세히 살펴보겠습니다.
1. 성능이 주는 중요성
IDC는 "응답자의 95% 이상이 데이터베이스 유형 또는 성능을 선택 기준으로 꼽았다"고 언급했으며, 응답자의 거의 절반(45%)은 데이터베이스 선택 시 성능을 최대 3대 고려 요소 중 하나로 지목했습니다(데이터베이스 유형에 이은 2위). 성능이 이토록 중요한 데에는 이유가 있습니다. 마이크로서비스 환경에서는 분산 아키텍처의 장점을 온전히 실현하기 위해 실시간 성능과 확장성을 모두 갖춰야 하기 때문입니다.
4년 연속 '가장 사랑받는 데이터베이스'로 선정된 Redis는 밀리초 미만(sub-millisecond)의 성능으로 잘 알려져 있습니다. Redis Enterprise의 저지연 데이터베이스를 활용하면 작은 리소스 사용량을 유지하면서도 필요에 따라 확장 가능한 환경에서 즉각적인 사용자 경험을 만들거나 실시간 분석을 수행할 수 있습니다. InfoBrief에서도 "이는 데이터베이스의 작동 방식과 성능이 마이크로서비스 애플리케이션 개발의 성공에 결정적임을 보여준다"고 강조합니다.
2. 언제나 가용성 유지
IDC 설문에 따르면 기업의 마이크로서비스 애플리케이션 중 거의 4분의 1(24%)이 이미 높은 가용성이 필수적인 미션 크리티컬 업무에 활용되고 있습니다. 더 일반적으로 InfoBrief는 "마이크로서비스 앱의 42%는 다운타임 발생 시 조직에 직접적인 매출 손실을 초래한다"고 지적하며, 나머지 58%의 앱에서 다운타임은 생산성 저하로 이어진다고 설명합니다.
이는 잠재적으로 큰 문제입니다. 마이크로서비스 아키텍처는 수많은 상호 연결된 서비스를 포함하더라도, 다른 개발 방식과 마찬가지로 동일한 수준의 성능과 안정성 요구에 직면하기 때문입니다. 예를 들어 전 세계 어디서나 데이터를 항상 사용할 수 있도록 보장하는 것 역시 하나의 과제입니다. 애플리케이션을 항상 가용 상태로 유지하려면 모든 수준에서 내결함성(fault tolerance)을 갖춘 데이터베이스가 필요합니다.
3. 여러 데이터 모델을 활용한 현대적 애플리케이션 구축
개발자들은 마이크로서비스 아키텍처를 활용해 더 나은 앱을 만듭니다. 시장 출시 기간을 단축하고, 더 나아가 데이터 접근 패턴과 성능 요구사항을 최적화하려면 적절한 데이터 모델을 선택하는 것이 필수적입니다. 이렇게 하면 각 서비스가 자체 데이터 모델에 맞게 특화된 데이터베이스를 사용할 수 있습니다.
마이크로서비스는 키-값(key-value), 그래프(graph), JSON, 시계열(time series), 검색 엔진 등 다양한 데이터 모델을 활용할 수 있습니다. 그러나 InfoBrief가 지적하듯 "많은 마이크로서비스가 서비스별 데이터베이스를 사용하게 되며", 이는 "데이터베이스 수, 데이터베이스에 접근하는 소프트웨어 컴포넌트 수, 그리고 현대적 워크플로우에 데이터베이스를 포함해야 하는 필요성을 모두 증가시킨다." 바로 이 때문에 앞서 언급한 대로 응답자의 약 3분의 1(32%)이 마이크로서비스 앱 운영에서 데이터베이스 관리를 최대 3대 난제로 꼽았습니다.
이러한 복잡성을 최소화하려면 데이터베이스가 여러 데이터 모델을 지원해야 합니다. 그래야 기업 아키텍트가 성능 저하 없이 각 서비스에 맞는 데이터 모델을 자유롭게 선택할 수 있고, 여러 종류의 데이터베이스를 배우고 관리하는 부담 없이 운영을 단순화하며 기술 파편화(technology sprawl)를 억제할 수 있습니다.
4. 어디서든 배포 가능
DBaaS가 확산되고 있음에도 여전히 많은 기업 데이터는 온프레미스에 남아 있으며, IDC 설문에서 보여지듯 많은 기업들이 멀티클라우드와 하이브리드 인프라를 활용하고 있습니다. 마이크로서비스 환경에서는 데이터 사일로나 데이터 손실 없이 데이터베이스를 운영할 수 있는 유연성을 확보하기 위해 데이터 계층을 최적화할 수 있어야 합니다.
하지만 IDC 저자들이 지적하듯 "많은 데이터베이스는 클라우드 네이티브로 설계되지 않았고, 컨테이너와 호환되지 않으며, 쿠버네티스(Kubernetes)로 오케스트레이션될 수 없다." 예를 들어 데이터베이스를 컨테이너에 포장하는 것만으로는 마이크로서비스 아키텍처에 적합해지지 않습니다. 데이터베이스는 경량화되어야 하고, 데이터 요구사항에 맞게 조정 가능해야 합니다.
기업에게 필요한 것은 온프레미스든, 어떤 클라우드든, 멀티클라우드든, 하이브리드 클라우드 아키텍처든, 컨테이너든, 쿠버네티스 Pod든 필요한 어디서든 실행할 수 있는 유연한 배포 모델을 갖춘 데이터베이스 플랫폼입니다.
Redis Enterprise와 마이크로서비스
보고서에 따르면 마이크로서비스 아키텍처의 부상은 이러한 서비스를 지원하는 데이터 계층 아키텍처에 상당한 영향을 미치므로, 마이크로서비스 아키텍처로 애플리케이션을 개발하려는 기업은 기술적 우수성과 목적 적합성에 각별한 주의를 기울여야 합니다. 바로 이 지점에서 Redis Enterprise가 빛을 발합니다.
Redis Enterprise는 마이크로서비스 규모의 성능을 제공하며, 모든 Redis 데이터 유형과 모듈에 대해 밀리초 미만의 지연 시간을 실현하고, 필요한 거의 모든 처리량에 대해 즉각적이고 선형적인 확장이 가능합니다. 내결함성과 복원력을 위해 설계된 Redis Enterprise는 shared-nothing 클러스터 아키텍처를 채택하여 프로세스 수준, 개별 노드, 심지어 인프라 가용 영역 전반에 걸친 자동 페일오버(failover)를 제공하며, 조정 가능한 영속성(persistence)과 재해 복구 기능도 갖추고 있습니다. 또한 개발자가 마이크로서비스 아키텍처 배포에 가장 적합한 데이터 모델을 성능 및 데이터 접근 요구사항에 맞춰 손쉽게 선택할 수 있도록 지원하는 동시에, 통합된 운영 인터페이스를 통해 기술 파편화를 줄이고 운영을 단순화합니다. 무엇보다 Redis Enterprise는 어떤 클라우드 플랫폼, 온프레미스, 멀티클라우드 또는 하이브리드 클라우드 아키텍처든 어디서든 배포할 수 있습니다.
마이크로서비스 배포에서 데이터 계층이 왜 중요한지 더 알아보려면 IDC InfoBrief 전문인 『애플리케이션 현대화가 데이터 계층에 미치는 영향』을 다운로드하세요. 그리고 아래의 마이크로서비스 아키텍처 자료들을 통해 Redis Enterprise가 마이크로서비스 배포에 특히 적합한 다양한 이유를 확인해 보세요.
- Redis Enterprise for Microservices
- Redis Microservices for Dummies e-book
- Latency Is the New Outage 백서
- Strategic Data Flexibility 백서
- Redis Enterprise Software Deployment Options
- How Redis Simplifies Microservices Design Patterns — The New Stack 블로그 포스트