Things가 서버 측 Swift로 전환한 방법
작년 초, 개인 작업 관리 앱인 ‘Things’는 서버 측 Swift를 사용하여 백엔드를 완전히 재구축한 업데이트를 출시했으며, 그 반응은 정확히 공동 설립자인 Werner Jainek이 기대하던 대로였습니다.
‘Things’ 제작사 Cultured Code의 슈투트가르트 사무소에서 일하는 Jainek은 “아마 소수의 사용자는 더 빨라졌다는 사실을 알아차렸을 겁니다. 하지만 그 외에는 사용자에게 미치는 영향이 거의 없었습니다.”라고 말합니다.
새로운 방식을 개척하는 여정에서 가능한 최상의 결과는 아무 일도 없는 것이었습니다. 하지만 이를 통해 ‘Things’의 평균 컴퓨팅 비용은 세 배나 절감되었고, 평균 응답 속도는 네 배로 빨라졌습니다.
Things 3
사용 가능한 플랫폼: iPhone, iPad, Mac, Apple Watch, Apple Vision Pro
팀 규모: 11명
소재지: 독일
수상 경력: Apple 디자인 어워드(2009, 2017), App Store 에디터의 선택
App Store가 2008년에 출시되었을 때 선보인 최초의 앱 중 하나로, Apple 디자인 어워드를 두 번 수상한 ‘Things’는 꽤 오랜 역사를 가지고 있습니다. 2020년 무렵, Cultured Code 팀은 동기화 엔진에 튜닝이 필요하다는 사실을 알아차리기 시작했습니다.
Cultured Code의 백엔드 개발 및 운영을 담당하는 Vojtěch Rylko는 “기술 스택이 비효율적이고, 비용이 많이 들며, 최신 표준에 맞지 않게 되었습니다. 게다가, 운영 기반이던 플랫폼은 일종의 블랙박스였어요. 계속해서 임시 해결 방법을 마련해야만 했죠.”라고 말합니다. Cultured Code 팀은 노후화된 백엔드가 10년 동안 굳건히 지켜온 유틸리티로서의 입지를 위협할 것을 우려했습니다. Jainek은 “우리가 잃게 될 것은 평판이었기 때문에 반드시 조치를 취해야 한다는 것이 명확했습니다. 실제로 주저할 여지가 없었죠.”라고 말합니다.
엔진 재구축 프로젝트가 시작되었습니다. Jainek은 Cultured Code가 프로그래밍 언어부터 인프라까지 모든 것을 재검토하며 전체 기술 스택에 대해 열린 마음을 유지했다고 말합니다. 조사의 백엔드 부분이 진행되면서, Jainek은 예상치 못했던 사실을 알아차리기 시작했습니다. 바로, 서버 측 Swift가 계속해서 가장 마음에 드는 옵션으로 떠오르고 있었던 것입니다. 그는 “물론, 우리는 클라이언트 측 개발에서 이미 Swift에 익숙했습니다. 성능, 메모리 효율성, 현대성 등 장점이 많았습니다. 하지만 의문이 남아 있었죠. ‘충분히 성숙 단계에 이른 기술인가?’, ‘프로덕션 환경에서 안정적으로 작동할까?’ 등이었습니다.”라고 말합니다.
Rylko는 당시에 서버 측 Swift가 매우 새롭게 느껴졌다고 말합니다. “컨퍼런스에서 친구 및 동료들과 그에 대해 논의했는데, 그들은 그것이 가능하다는 것에도 약간 놀란 듯했습니다. 당시에는 정말 모험적으로 느껴졌죠.”라고 그는 말합니다.
“우리는 이 일을 해낼 것이라는 걸 알았기 때문에 긴장하지 않았습니다.”
Werner Jainek, Cultured Code CEO 겸 공동 설립자
그럼에도 불구하고 Cultured Code 팀은 뛰어들었습니다. 전체적으로, Rylko와 그의 팀은 클라우드 동기화 기능을 Swift로 재작성하고, 인프라를 설정하고, 테스트를 완료하는 데 약 3년이 걸렸는데, 테스트는 특히 중요한 단계였습니다. Rylko는 “처음부터, 클라우드를 전환할 때 사용자 경험이 원활해야 한다는 것이 우리의 요구 사항이었습니다.”라고 말합니다.
그래서 Cultured Code 팀은 두 갈래 접근 방식을 채택했습니다. 즉, 사용자 경험에 영향을 미치지 않으면서 사용자의 실시간 콘텐츠로 새로운 Swift 기반 백엔드를 테스트하는 것이었습니다. Rylko는 “우리는 새로운 클라우드를 구축한 다음, 기존 클라우드와 나란히 운영했습니다. 기존 클라우드가 모든 실시간 트래픽을 처리하는 동안, 동일한 트래픽을 새로운 시스템에도 전달하여 병렬로 실행함으로써 실시간으로 상황을 관찰할 수 있었습니다. ‘데이터베이스가 모든 쿼리를 처리했는가?’, ‘성능 문제가 있었는가?’ 등입니다. 우리는 실제 로드 하에 이 새로운 인프라를 운영하는 방법을 알아봤습니다.”라고 말합니다.
더 알아보기
이 절차가 끝날 무렵, Cultured Code는 새로운 클라우드를 사용하여 1년 이상의 프로덕션 경험을 쌓았습니다.
이 접근 방식에는 불변 데이터의 대부분을 미리 마이그레이션할 수 있는 기능을 비롯해 추가적인 이점이 있었습니다. Jainek은 “그 덕분에 최종 마이그레이션 중에 예정된 가동 중단 시간이 4일이 아니라 단 3시간으로 단축되었습니다.”라고 말했습니다.
실제로 운영을 시작할 때가 되자, Cultured Code 팀은 슈투트가르트에 모여 이날을 함께 기념했습니다. Jainek은 “하지만 당시 우리는 이 일을 해낼 것이라는 걸 알았기 때문에 긴장하지 않았습니다.”라고 말합니다.
원본 버전은 2025년 6월 9일(태평양 연안 표준시)에 게시됨