Gmail의 구글의 대표 서비스 중 하나입니다. Gmail 서비스는 2004년 4월 1일에 출시되었는데요.
오늘날과 같은 수십억 명의 사용자가 매일 수조 개의 이메일을 주고받는 거대 서비스 플랫폼이 되면서,
구글은 기존 레거시 스토리지를 클라우드 규모의 성능과 확장성을 갖춘 데이터베이스 스토리지 플랫폼인 Spanner로 마이그레이션 프로젝트를 수행합니다.
이 과정에서 Gmail 규모의 서비스가 중요 시스템인 스토리지 시스템을 무중단으로 이전했다고 하는데요.
이번 포스팅에서는 Gmail이 서비스 중단 없이 Spanner로 마이그레이션을 어떻게 했는지 알아보겠습니다.
* Spanner는 Google의 전 세계적으로 분산되고 동기화된 SQL 데이터베이스 관리 및 스토리지 서비스로, 수평적으로 확장되며 고가용성을 제공하는 서비스입니다.
✉️ 차세대를 향해가는 Gmail
Gmail의 수십억 개의 이메일 데이터를 Spanner로 이동하는 것은 큰 도전입니다. 그렇다면 언제부터 이런 생각을 하고 있었던 것일까요? 구글은 2010년부터 Gmail 데이터는 자체 개발한 스토리지 시스템에 저장되었습니다. 2015년 구글은 Gmail의 차세대 시스템을 구상하기 시작했고, 구글이 개발한 Spanner가 글로벌 서비스 플랫폼이 요구하는 성능과 확장성 요구를 충족할 수 있다고 판단했다고 합니다.
Gmail처럼 전 세계 사용자가 매일 쓰는 서비스는 따로 다운타임을 잡아 유지보수나 마이그레이션 작업을 하기 어렵습니다. 전 세계에 이용자가 있다는 것은 곧 24시간 365일 서비스 지연이나 중단 없이 돌아가야 한다는 말과도 같습니다. 당연히 Spanner 마이그레이션 프로젝트의 대원칙은 ‘무중단’이었습니다.
마이그레이션 과정에서 데이터 손실 없이 수십억 개의 계정을 옮기는 것은 구글에게도 큰 도전입니다. 구글은 두 시스템에 동시에 데이터를 쓰는 방법을 개발했고, 이를 기반으로 계정별로 마이그레이션을 진행했습니다. 데이터가 안전하게 마이그레이션되었는지 확인하기 위해 여러 단계의 검증과 건강 검사를 수행했습니다. 그리고 예상치 못한 문제가 발생할 경우에 대비해 계정을 다시 원래 상태로 되돌리는 경로를 마련했습니다. 마이그레이션 과정을 자세히 살펴보겠습니다.
🛠️서비스의 연속성과 데이터의 안정성을 보장하며 무중단 마이그레이션 수행
마이그레이션의 첫 단계는 이중 쓰기 시스템을 구현하는 것이었습니다. Gmail 팀은 데이터를 Spanner와 기존 스토리지 시스템에 동시에 쓰도록 하여, 두 시스템 간의 데이터 일관성을 유지했습니다. 즉, 사용자가 이메일을 작성하고 전송할 때마다 데이터는 두 시스템에 모두 기록되었고, 이는 마이그레이션 과정 중에 어느 한쪽 시스템에서 문제가 발생해도 다른 시스템을 통해 데이터를 보호할 수 있게 했습니다.
두 번째 단계는 통합 인터페이스를 구축하는 것이었습니다. 이 인터페이스를 통해 API 호출이 두 시스템에서 동일하게 작동하도록 만들었으며, 이를 통해 Gmail 사용자는 기존 시스템이든 Spanner든 어느 쪽에서도 데이터를 동일하게 사용할 수 있었습니다. 이로 인해 사용자가 Gmail을 사용하는 동안에도 시스템 변경이 눈에 띄지 않게 이루어졌습니다.
세 번째 단계는 계정별로 마이그레이션을 진행하는 것이었습니다. Gmail 팀은 모든 데이터를 한꺼번에 이전하지 않고, 계정 단위로 마이그레이션을 진행했습니다. 계정별로 마이그레이션 상태를 추적하고, 각 계정의 데이터를 점진적으로 이전하여 데이터 이전 중에도 사용자가 영향을 받지 않도록 했습니다. 이는 작은 단위로 작업을 나누어 마이그레이션의 안정성을 확보하고, 오류 발생 시 특정 계정만 복구하면 되기 때문에 전체 시스템에 미치는 영향을 최소화했습니다.
마이그레이션 과정에서 예상치 못한 오류가 발생할 수 있기 때문에, Gmail 팀은 자동 복구 시스템을 도입했습니다. 이를 통해 문제가 발생한 계정을 다시 기존 시스템으로 돌려놓을 수 있었으며, 사람의 개입 없이 자동으로 복구되었습니다. 이 시스템 덕분에 오류가 발생해도 전체 서비스에 큰 영향을 주지 않았습니다.
마이그레이션이 Gmail 서비스의 연속성에 영향을 미치지 않도록, 헬스 체크와 자동 속도 조절(Health Checks and Auto-Throttling) 시스템이 도입되었습니다. 각 계정의 마이그레이션이 완료될 때마다 서비스가 정상적으로 작동하는지 검사를 진행했으며, 시스템 전반에 걸친 지연이나 충돌을 감지하면 마이그레이션 속도를 자동으로 조정했습니다. 이를 통해 마이그레이션이 진행되더라도 서비스 성능에 악영향을 미치지 않도록 보장했습니다.
마이그레이션의 마지막 단계는 기존 시스템의 데이터 삭제입니다. Gmail 팀은 모든 데이터가 Spanner로 완전히 이전되기 전까지, 데이터를 기존 스토리지 시스템에 복제하고 Spanner에 저장된 데이터와 일관성을 유지했습니다. 이로써 데이터 손실 없이 안전하게 마이그레이션이 완료될 수 있었고, 데이터가 안전하게 이전되었는지 검증하는 과정을 거쳤습니다.
살펴본 바와 같이 Gmail의 Spanner로의 마이그레이션은 매우 복잡하고 기술적으로 도전적인 작업이었습니다. 수십억 명의 사용자가 실시간으로 서비스를 이용하는 가운데 데이터 손실 없이 이전하는 과정에서 많은 기술적 해결책이 도입되었습니다. 이중 쓰기, 통합 인터페이스, 계정별 마이그레이션, 검증 및 오류 처리, 자동 속도 조절 등 여러 단계의 과정을 통해 데이터 안정성과 서비스 연속성을 모두 유지할 수 있었습니다. Spanner로의 이전은 Gmail이 앞으로도 더욱 확장 가능한 시스템으로 발전할 수 있는 기반을 마련했으며, 이를 통해 사용자에게 더 나은 기능과 서비스를 제공할 수 있는 길이 열렸습니다. 더욱 자세한 내용이 궁금하시다면 메가존소프트에 문의를 남겨주세요. [ 문의하기 ]