자료실

마이크로서비스에 대한 모든 것 – 3부

마이크로서비스에 대한 모든 것 – 3부

‘마이크로서비스에 대한 모든 것’ 3부에 접어드는 시점에서 지금까지 살펴본 내용을 돌아보겠습니다. 1부에서는 마이크로서비스 아키텍처에 대해 설명했고, 2부에서는 서비스형 인프라(IaaS) 플랫폼에 마이크로서비스를 배포할 때 개발 팀이 고려해야 할 점을 살펴봤습니다. 3부이자 마지막인 이번 편에서는 서비스형 데이터베이스(Database-as-a-Service, DBaaS) 모델을 사용한 마이크로서비스 애플리케이션 배포와 관련된 몇 가지 고려 사항에 대해 알아보겠습니다.


DBaaS는 데이터베이스 관리와 관련된 전통적인 작업 대부분을 솔루션 업체가 책임지는 관리형 데이터베이스입니다. 예를 들면 솔루션 업체가 데이터베이스 업그레이드와 패치, 보안 수단 구축, 백업 사본 유지, 여러 가용성 영역에서 높은 가용성과 재해 복구를 구현하는 것입니다. 시중에는 DBaaS 제품이 많습니다. AWS RDS, AWS Aurora, Azure SQL DB, MongoDB Atlas, GCP Cloud SQL 등이 모두 DBaaS입니다. DBaaS 솔루션은 기본적으로 관리 오버헤드를 없애고 개발자가 마이크로서비스 애플리케이션을 구축하는 데 더 집중할 수 있다는 이점이 있습니다. 개발 팀은 인프라, 데이터베이스 및 이와 관련된 일상적 유지보수에 대해 신경 쓸 필요 없이 애플리케이션 개발에만 전념할 수 있습니다.


그러나 DBaaS에서도 애플리케이션 성능은 여전히 중요합니다. 마이크로서비스 애플리케이션은 범위가 상대적으로 작지만, 개별 마이크로서비스 또는 전체 애플리케이션의 사용량과 데이터 소비량은 증가하면서 운영 관리와 마이크로서비스 모니터링 및 데이터베이스 성능에 대한 가시성이 훨씬 더 중요해집니다. DBaaS에서 마이크로서비스 애플리케이션을 실행할 때의 문제점은 다양한 방식으로 나타납니다.


데이터 증가와 소비

애플리케이션의 데이터는 일반적으로 사용 기간이 길어지면서 증가합니다. DBaaS 계약과 서비스에 따라 데이터 증가는 스토리지 측면에서 상당한 비용을 유발할 수 있습니다. DBA나 데브옵스 엔지니어는 이런 점을 염두에 두고 마이크로서비스 모니터링으로 데이터 증가 추세를 주시해야 합니다. 콜드 스토리지처럼 상대적으로 비용이 낮은 스토리지 옵션을 고려하고, 사용하지 않거나 불필요한 레코드를 제거하는(PII 데이터 규정 준수에 유의) 방안을 생각해야 합니다. 데이터 증가에 따르는 비용은 온프레미스에서는 일반적으로 무시해도 되는 수준이지만, DBaaS에서는 항상 관심을 가져야 하는 요소입니다.


데이터 증가는 쿼리 관점에서도 문제가 되는데, 쿼리 문제는 마이크로서비스 아키텍처로 인해 더 악화될 수 있습니다. 애플리케이션이 여러 서비스를 대상으로 쿼리를 실행할 때, 쿼리는 각 마이크로서비스의 데이터베이스에서 다양한 데이터 요소를 모두 스캔해야 하므로 실행하는 데 시간이 더 오래 걸릴 수 있습니다. 따라서 각 마이크로서비스의 데이터가 시간이 흐르면서 증가하면 애플리케이션 성능이 저하되는 것입니다. 이 같은 종류의 문제는 일반적으로 DBaaS에 VCPU나 V코어를 추가하는 방법으로 해결할 수 있지만, 상당한 비용이 따를 수 있습니다. 이런 문제에 대처하기 위해서는 기준선과 패턴을 사용해 데이터 증가를 지속적으로 살펴보고, 성능 저하 방지 조치가 필요한 시점을 알 수 있도록 도와주는 마이크로서비스 모니터링 툴을 갖추는 것이 중요합니다.


사용자 증가

애플리케이션이 성공을 거두면 더 많은 사람이 애플리케이션을 사용하기 마련입니다. 여기에도 문제가 따릅니다. 첫 번째는 동시성 문제로, 너무 많은 사용자가 동시에 트랜잭션을 시도하는 경우 어느 마이크로서비스 아키텍처를 사용하든 트랜잭션 잠금과 차단 위험이 발생합니다. 동시성 문제는 DBaaS나 마이크로서비스 아키텍처에서 상존합니다. 마이크로서비스 모니터링으로 동시성에 대한 가시성을 확보하면, 트랜잭션 잠금 및 차단 관련 이슈가 큰 문제로 발전하기 전에 해결할 수 있습니다.


더 많은 사람이 애플리케이션을 사용하면 전체 애플리케이션에서 사용자가 머무는 시간도 자연스럽게 늘어나는데, 이것도 각 마이크로서비스에 영향을 미칩니다. 사용자가 애플리케이션에 머무는 시간이 늘어나면 새로운 기능이나 다른 기능을 사용하거나 검색하는 경우도 많아지고, 결과적으로 트랜잭션과 쿼리의 복잡성이 높아질 수 있습니다. 즉, 더 많은 사용자가 더 많은 마이크로서비스, 더 많은 데이터베이스, 더 많은 테이블에 액세스한다는 의미입니다. 마이크로서비스 아키텍처는 쿼리의 복잡성을 해결할 수 있지만 ‘어느 정도’일 뿐입니다. 손쉬운 해결 방법은 더 많은 컴퓨팅 파워와 메모리를 추가하는 것이지만, 많은 비용이 드는 방법입니다. 대안으로, 일상적으로 쿼리되는 정적인 데이터를 캐시에 저장하는 방법이 있습니다. 지리적으로 사용자와 더 가까운 위치에 데이터 복사본을 만들어서 근접성을 높여 데이터를 불러오는 속도를 개선하는 방법도 있습니다. 이는 여러 가용성 영역에 걸쳐 복제본을 제공하는 경우가 많은 DBaaS의 대표적인 장점이며, 애플리케이션 성능을 개선하는 방법입니다.


기능의 증가

애플리케이션이 인기를 끌면 대부분 새로운 기능을 개발하고 DBaaS 플랫폼에서 새로운 마이크로서비스를 구축합니다. 이때 새로운 기능은 별도의 데이터베이스에 구축되지만, 다른 마이크로서비스에 상주하는 데이터를 사용하는 경우가 많아집니다. 마이크로서비스의 목적은 종속성을 최대한 많이 제거하는 것인데, 특정한 서비스에 다른 서비스의 데이터가 필요하면 종속성을 피할 수 없습니다. 종속성을 완전히 없애는 접근 방법을 택한다면 여러 서비스에 동일한 데이터를 생성하는 위험을 떠안게 됩니다. 이런 상황에서는 어떤 서비스가 특정 데이터의 단일 진실 공급원인지 모호해지는 문제가 발생합니다.


가장 좋은 방법은 최신으로 유지되고 마이크로서비스 개발 팀 전반에 공유되는 마스터 마이크로서비스 데이터 모델을 만드는 것입니다. 이런 모델을 만들면 전체 팀이 어떤 서비스에 어느 데이터 요소가 존재하는지 알 수 있으므로 중복 데이터 생성을 방지할 수 있습니다.


마이크로서비스 애플리케이션을 위한 데이터 모델은 유용하지만 한계가 있습니다. 종속성을 유발하지 않으면서, 성능에 영향을 미치지도 않고 마이크로서비스 간에 데이터가 공유되는 모델을 만들려면 어떻게 해야 할까요?


전통적인 아키텍처에서 흔히 사용하는 방법은 수평 확장, 부하 분산과 같은 목적으로 데이터베이스 복제를 사용하는 것입니다. 복제는 보고 및 쿼리를 위한 데이터 부하를 덜어내는 수단으로 사용되는 경우가 많습니다. 복제 방법은 보고 쿼리 부하를 트랜잭션 데이터베이스에서 덜어내는 방법으로 데이터 무결성을 유지하면서 데이터베이스 성능을 개선합니다. 이 방법은 마이크로서비스, 특히 DBaaS에 배포된 마이크로서비스에서도 사용할 수 있습니다. 앞서 언급했듯이 현재 많은 DBaaS가 여러 가용성 영역에 걸친 복제를 서비스로 제공합니다. 개발자는 마이크로서비스 간 종속성을 최소화하면서 데이터를 공유하기 위해 다른 마이크로서비스에서 필요할 수도 있는 데이터에 대해 선택적 데이터 복제를 활용할 수 있습니다. 효율적이고 성능도 뛰어난 데이터 공유 방법입니다.


이벤트 주도(event-driven) 모델도 대표적인 방법입니다. 데이터가 변경되면 마이크로서비스가 변경사항을 게시하고, 관심이 있는 다른 서비스가 이 이벤트를 구독할 수 있습니다. 애플리케이션 성능을 극대화하는 DBaaS의 역량을 활용하는 동시에 느슨한 결합이라는 마이크로서비스의 특성을 그대로 유지하려면 앞서 설명한 모든 것을 중요하게 고려해야 합니다.


마이크로서비스 모니터링의 필요성

DBA와 데브옵스 엔지니어는 DBaaS의 마이크로서비스 애플리케이션을 관리할 때 문제가 발생하기 전에 감지하고 신속하게 대처할 수 있게 도와주는 마이크로서비스 모니터링 툴이 필요합니다. DBaaS 기반 마이크로서비스 환경 전체에 걸친 워크로드 성능 모니터링은 스토리지 및 컴퓨팅 사용률에 대한 시야를 얻는 데 도움이 됩니다. 이는 데이터베이스 성능뿐만 아니라 DBaaS 플랫폼의 비용 관리 측면에서도 중요합니다. 애플리케이션 사용량이 늘고 사용자 수가 증가함에 따라 발생할 수 있는 동시성 문제를 사전에 파악할 수 있는 시야를 갖추면 잠재적인 잠김 및 차단 문제를 해결하는 역량을 강화해 고객이 경험하는 성능 저하를 방지할 수 있습니다.


DBaaS를 기반으로 구축된 마이크로서비스 애플리케이션에 대한 시야를 얻기 위한 단일 마이크로서비스 모니터링 솔루션으로 퀘스트의 포그라이트(Foglight)를 고려하십시오. 포그라이트는 하이브리드 엔터프라이즈를 위한 엔터프라이즈 성능 모니터링 및 최적화 솔루션입니다. 포그라이트는 현대 개발 및 마이크로서비스 아키텍처를 위한 심층 진단 및 비용 최적화 기능을 갖춘 크로스 플랫폼 솔루션이며, 동종 또는 이종 마이크로서비스 환경을 지원합니다.


포그라이트에 대해 궁금한 점이 있으시면 언제든 퀘스트소프트웨어 코리아로 문의 주시기 바랍니다.


퀘스트소프트웨어코리아(주)

서울특별시 강남구 테헤란로 445 본솔빌딩10F
전화 번호 02-3420-9000 | 팩스 번호 02-569-3600

전자 메일 KoreaMarketing@quest.com 


Copyright © Quest. All Rights Reserved.

Hosting by I'MWEB


퀘스트소프트웨어코리아(주) 서울특별시 강남구 테헤란로 445 본솔빌딩10F
전화 번호 02-3420-9000 | 팩스 번호 02-569-3600 | 전자 메일 KoreaMarketing@quest.com


Copyright © Quest. All Rights Reserved.

Hosting by I'MWEB