Exclaimer는 조직이 대규모로 이메일 서명을 관리할 수 있도록 지원합니다. 이를 통해 IT 팀이 수천 개의 사서함을 수동으로 업데이트하지 않아도 모든 메시지에 일관되고 규정을 준수하며 브랜드 정체성이 담긴 서명을 포함할 수 있습니다.
이 작업은 8만 명 이상의 고객, 약 960만 개의 시트(Seat), 연간 210억 건 이상의 이메일을 처리해야 하는 상황에서는 생각보다 훨씬 복잡합니다. 모든 서명은 발신자, 수신자, 기기 및 비즈니스 규칙에 따라 적절한 위치에 정확한 세부 정보와 함께 표시되어야 합니다. 그 뒤에는 끊임없이 변화하는 직원 기록, 고객별 정책, 이메일 체인, 수신자 목록, 지역별 면책 조항 및 브랜드 요구 사항이 얽혀 있습니다.
Exclaimer 플랫폼은 이메일 흐름에 직접 위치하기 때문에 가용성이 매우 중요합니다. 또한 많은 고객이 규제 산업에 종사하고 있으므로, 데이터가 해당 지역 내에 유지되고 구성된 서명이 일관되게 적용된다는 신뢰를 줄 수 있어야 합니다.
이러한 수준의 확장성과 신뢰성을 지원하기 위해 당사는 지난 몇 년 동안 Microsoft Azure에서 아키텍처를 진화시켜 왔습니다. 오늘날 Azure Kubernetes Service (AKS), Azure SQL Database, Azure Database for PostgreSQL, Azure Cosmos DB, Azure Data Explorer, 그리고 Azure Databricks는 우리가 더 반응성이 뛰어나고 탄력적이며 비용 효율적인 글로벌 플랫폼을 운영할 수 있도록 돕고 있습니다.
아키텍처 변화가 필요하다는 신호를 읽다
초창기 당사의 클라우드 제품은 Azure 가상 머신(VM)에서 호스팅되는 멀티 서버 온프레미스 제품과 비슷하게 운영되었습니다. 플랫폼은 소수의 핵심 서비스로 나뉘어 있었고, 팀은 이러한 서비스를 유지하기 위해 VM 기반 인프라에 크게 의존했습니다. Exclaimer가 성장함에 따라 아키텍처도 더 높은 트래픽 볼륨, 더 많은 지역, 더 복잡한 고객 요구 사항에 맞춰 보조를 맞춰야 했습니다.
지역별 수요는 하루 종일 변동했지만, 인프라를 확장하거나 축소하는 작업은 여전히 스크립트, 미리 준비된 VM 이미지, 운영상의 조정에 의존했습니다. 이는 유지보수 및 장애 조치(failover) 중에 더 큰 위험을 초래했습니다. 당사는 필요할 때 한 사이트에서 트래픽을 다른 곳으로 옮길 수 있도록 지역별 쌍(Regional pair)으로 병렬 데이터 센터를 운영합니다. 하지만 트래픽이 이동할 때, 이를 받는 환경은 전체 부하를 즉시 처리할 준비가 되어 있어야 합니다. VM 환경에서는 누군가 또는 어떤 시스템이 적절한 순간에 대기 자원을 확장하는 것을 기억하고 실행해야만 했습니다.
동시에 우리 제품은 더욱 서비스 지향적으로 변하고 있었습니다. 적은 수의 대규모 서비스에서 100개가 넘는 마이크로서비스로 전환하고 있었습니다. 새로운 서비스가 생길 때마다 VM 크기 조정, 이미지 관리, 패치 및 운영 오버헤드에 대한 논의가 늘어났습니다. 이제 더 빠르게 확장하고, 더 효율적으로 실행하며, 제품을 출시하고 운영하는 데 필요한 인프라 작업량을 줄일 수 있는 모델이 필요한 시점이었습니다.
더 빠르고 효율적인 확장을 위해 AKS 도입
많은 워크로드를 AKS의 Linux 컨테이너로 이동함으로써 더 작은 설치 공간, 더 빠른 시작 시간, 그리고 서비스를 패키징하고 배포하는 일관된 방식을 얻게 되었습니다. 또한 AKS는 이러한 컨테이너를 글로벌 규모로 실행할 수 있는 관리형 Kubernetes 기반을 제공했으며, 트래픽 패턴에 더 잘 대응하는 자동 확장 기능을 지원했습니다.
Horizontal Pod Autoscaler를 사용하면 서비스가 부하에 대해 몇 분이 아닌 몇 초 만에 반응할 수 있습니다. Cluster Autoscaler를 사용하면 플랫폼에 실제로 필요한 부하에 따라 노드 용량을 추가하거나 제거할 수 있습니다. 즉, 노드에 워크로드를 더 효율적으로 배치하고, 한산한 시간에는 규모를 축소하며, 수요가 다시 증가하면 빠르게 확장할 수 있게 되었습니다.
운영상의 차이도 매우 큽니다. 장애 상황, 유지보수 이벤트 또는 지역 간 장애 조치 중에 운영 팀이 고려해야 할 수동 단계가 줄어들었습니다. 트래픽이 이동하면 플랫폼이 그에 맞춰 스스로 확장됩니다. 덕분에 엔지니어들은 인프라 걱정을 덜고 고객 경험을 안정적으로 유지하는 데 집중할 수 있게 되었습니다.
컨테이너로의 전환과 간소화된 CI/CD 워크플로는 플랫폼 전반에 걸친 변경 사항의 빌드, 테스트 및 배포를 용이하게 하여 배포 속도를 향상시켰습니다. 2021년에는 1년 동안 프로덕션에 285개의 변경 사항, 기능 및 수정을 배포했습니다. 오늘날에는 그만큼의 양을 며칠마다 배포하고 있습니다.
비용 측면도 개선되었습니다. 컨테이너 서비스로의 이주가 본격화된 2024년 이후, 제품이 더 복잡해지고 고객을 위한 기능이 추가되었음에도 불구하고 사용자당 평균 비용을 약 39% 절감했습니다. 이는 컨테이너화된 아키텍처, AKS 자동 확장, 컴퓨팅 및 스토리지 기술 전반에 걸친 예약 인스턴스 활용의 결과입니다.
데이터 유형에 맞는 최적의 데이터베이스 선택
우리는 강력한 Microsoft SQL Server 기반으로 시작했으며, Azure SQL Database는 오늘날에도 우리 플랫폼의 핵심으로 남아 있습니다. 이 데이터베이스는 중요한 고객 구성 데이터를 저장하며 우리가 필요로 하는 신뢰성, 복제, 크기 조정의 유연성 및 지역별 확장성을 계속해서 제공합니다. 하지만 모든 워크로드가 동일한 데이터베이스에 적합한 것은 아닙니다. 고객 구성, 관계형 서비스 데이터, 키-값 저장소, 사용 이벤트 및 비즈니스 인텔리전스(BI)는 모두 서로 다른 액세스 패턴을 가집니다.
이러한 원칙에 따라 가장 중요한 마이그레이션 중 하나로 Azure Database for PostgreSQL 유연한 서버를 선택했습니다. 이전에는 고객 데이터를 빠르게 검색해야 하는 핵심 서비스에 Azure Table 스토리지를 사용했습니다. 오랫동안 비용 효율적이고 안정적이었지만, 제품이 진화하면서 데이터가 더욱 관계형으로 변했고, 관계형 데이터베이스가 더 자연스럽게 처리할 수 있는 복잡한 로직을 애플리케이션 코드에 추가하고 있다는 것을 발견했습니다.
Azure Database for PostgreSQL은 낮은 관리 오버헤드, 빠른 읽기 복제본, 예측 가능한 워크로드를 위한 예약 인스턴스, 향후 확장을 위한 경로와 함께 관계형 모델을 제공했습니다. 마이그레이션 후, 핵심 서비스의 평균 요청 시간은 18.6밀리초에서 1.79밀리초로 단축되었습니다. 이는 매달 약 90억 건의 요청을 처리하는 서비스에서 90%의 성능 향상을 이룬 것입니다.
Azure Cosmos DB는 확장성, 가용성, 저지연성, 저장 데이터 암호화 및 간편한 개발/테스트 지원이 필요한 키-값 및 문서 저장소 역할을 수행합니다. 비정형 데이터와 고성능 읽기/쓰기에 최적화되어 있어, 전통적인 관계형 모델에 맞지 않는 워크로드를 위한 고도로 확장 가능한 토대를 제공합니다. 당사는 이를 사용하여 서명 및 비디오 브랜딩을 위한 고객 자산, 내부 메시지 처리 작업을 위한 대량의 메타데이터, 고객이 계정 변경을 추적하는 데 도움이 되는 감사 이벤트, 고객을 대신해 타사 시스템에서 데이터를 수집하는 데 사용되는 토큰 등을 저장합니다. 또한 데이터와 서비스를 일관되게 정렬하는 깔끔한 방법을 제공합니다.
Azure Data Explorer는 사용량 및 청구 데이터라는 또 다른 확장성 과제를 해결해 주었습니다. 정확한 청구를 위해 처리하는 메시지 수를 감사해야 하는데, 연간 200억 건 이상의 이메일을 처리하다 보니 기존 SQL 기반 사용량 파이프라인은 관리가 어려워졌습니다. Azure Data Explorer를 사용하면 대량의 이벤트 데이터를 저렴한 저장 비용으로 수집하고, Azure Event Hubs와 연결하여 사용자 정의 파이프라인을 유지 관리하는 수고를 덜 수 있습니다. 이 전환을 통해 시스템 비용을 약 70% 절감했습니다.
Azure Databricks는 제품 및 비즈니스 데이터 전반에 걸친 변환, 분석 및 보고를 위한 공유 기반을 제공하며 BI 및 데이터 플랫폼으로서의 역할을 완성합니다.
모든 지역을 비즈니스 준비 상태로 유지하기
고객이 어디에나 있기에 당사의 플랫폼도 어디에나 있어야 합니다.
Exclaimer는 호주, 캐나다, 유럽, 독일, 아랍에미리트, 영국, 미국 등 7개의 뚜렷한 지리적 위치에서 운영됩니다. 이러한 글로벌 입지는 가용성 및 데이터 레지던시(data residency)에 대한 고객의 기대를 충족하는 데 도움이 됩니다. 많은 조직이 데이터가 해당 지역 내에 머물기를 원하며, Azure는 이를 지원하는 데 필요한 커버리지를 제공합니다.
가용성은 특히 중요합니다. 당사의 플랫폼이 실시간 커뮤니케이션 흐름의 일부이기 때문입니다. 누군가 이메일을 보내면 그 이메일은 계속 전달되어야 합니다. 당사의 Azure 아키텍처는 스택 전반에서 이러한 기대를 충족하도록 돕습니다. AKS는 지역별 수요에 따라 컴퓨팅을 확장합니다. Azure SQL 및 Azure Database for PostgreSQL은 중요한 관계형 워크로드를 지원합니다. Azure Cosmos DB는 문서 및 키-값 패턴을 위한 확장 가능한 저지연 저장소를 제공합니다. Azure Data Explorer는 이전의 복잡한 커스텀 파이프라인 없이도 대량의 사용량 수집을 처리합니다.
전반적으로 이러한 관리형 Azure 서비스는 엔지니어가 부담해야 하는 운영 작업량을 줄여줍니다. 우리는 기초적인 유지보수에 시간을 덜 쓰고, 성능 튜닝, 안정성 향상, 고객이 다음에 필요로 하는 기능을 구축하는 데 더 많은 시간을 할애할 수 있습니다.
더 강력한 토대 위에 미래 구축하기
우리 아키텍처가 잘 작동하고 있다는 가장 큰 증거는 새로운 것을 구축할 때 예전처럼 모든 것을 처음부터 다시 만들 필요가 없다는 점입니다.
향후 제품 기능을 개발함에 있어 우리는 이미 많은 기초 요소를 갖추고 있습니다. 컴퓨팅을 위한 AKS, 상태 관리를 위한 Azure Cosmos DB, 메시징을 위한 Azure Service Bus가 그것입니다. 또한 핵심 데이터용 Azure SQL, 확장이 필요한 관계형 서비스 데이터용 Azure Database for PostgreSQL, 대량 이벤트 분석용 Azure Data Explorer, BI 도구용 Azure Databricks도 보유하고 있습니다. 이러한 서비스들은 함께 어우러져 플랫폼을 더 빠르고, 더 효율적이며, 더 탄력적으로 만듭니다.
이메일 서명은 겉보기에는 간단해 보일 수 있습니다. 하지만 그 서명 하나하나의 뒤편에는 성능, 확장성, 데이터, 가용성 및 신뢰에 대한 수많은 결정이 숨어 있습니다. Azure와 함께 우리는 고객이 비즈니스를 수행하는 그 어디에서든 모든 서명이 끊김 없이 전달될 수 있도록 돕는 아키텍처를 구축했습니다.
저자 소개
Phil Vetter는 2013년 초 Exclaimer에 개발자로 입사하여 현재 엔지니어링 부문 부사장(VP of Engineering)을 맡고 있습니다.
Lee Jones는 2013년 Exclaimer IT 부서에서 시작하여 현재 플랫폼 엔지니어링 이사(Director of Platform Engineering)로서 Exclaimer Cloud의 인프라와 탄력성을 관리하고 있습니다.