정보기술 ·
협업 앱 개발 지원 엔진 '오토머지', 메모리 사용량 10배 절약한 3.0 버전 출시
로컬 우선 데이터 동기화로 오프라인 협업 가능, API 개선도 함께 진행
[한국정보기술신문] 협업 애플리케이션 개발을 지원하는 로컬 우선 데이터 동기화 엔진 오토머지(Automerge)가 메모리 사용량을 대폭 개선한 3.0 버전을 공식 출시했다고 발표했다. 이번 업데이트의 핵심은 메모리 사용량을 10배 이상 줄인 것으로, 기존 버전에서 기가바이트 단위로 소모되던 메모리를 대폭 절약했다.
오토머지 3.0의 가장 주목할 만한 개선사항은 메모리 사용량의 극적인 감소다. 기존 버전에서는 문서의 전체 기록을 저장하여 오프라인 협업과 버전 관리 작업을 지원하는 과정에서 긴 히스토리를 가진 문서 작업 시 기가바이트 단위의 메모리가 소모되는 문제가 있었다. 새로운 버전에서는 이러한 메모리 사용량을 10배 이상, 경우에 따라서는 훨씬 더 많이 절약하여 오토머지를 더 광범위한 시나리오에서 활용할 수 있게 되었다.
실제 성능 개선 사례
구체적인 성능 개선 사례를 보면, 소설 '모비딕' 전문을 오토머지 2 문서에 붙여넣었을 때 700MB의 메모리를 사용했던 것이 오토머지 3에서는 단 1.3MB만 사용하는 것으로 나타났다. 또한 대용량 히스토리를 가진 문서의 경우 로딩 시간도 대폭 개선되어, 17시간 동안 로딩되지 않던 문서가 9초 만에 로딩되는 사례도 보고되었다. 이러한 메모리 사용량 감소는 클라이언트 디바이스에서의 높은 메모리 사용량을 피할 수 있을 뿐만 아니라, 많은 대용량 문서를 메모리에 동시에 보관해야 하는 동기화 서버의 안정적인 운영에도 도움이 될 것으로 기대된다.
오토머지는 일반적인 동기화 엔진과 달리 로컬 우선 애플리케이션을 위해 설계된 데이터 동기화 엔진이다. 이는 오프라인 작업, 여러 독립적인 동기화 서버 사용, 서버 없이 완전한 피어투피어 작업 등을 지원한다는 의미다. 애플리케이션 개발자는 일반적인 자바스크립트 객체로 작업하고, 오토머지가 지속성과 네트워킹을 처리하는 구조로 되어 있다.
오토머지는 문서에 대한 모든 변경사항을 저장하여 로컬 우선 동기화를 구현한다. 로컬 우선 애플리케이션에서 발생하는 동시 변경사항이 있을 때, 충돌 감지와 히스토리 검토를 위한 우수한 버전 관리 도구를 제공할 수 있다. 다만 이 과정에서 변경사항에 대한 많은 메타데이터를 저장해야 하는 단점이 있어, 예를 들어 모든 키 입력에 고유 ID를 할당하는 방식을 사용한다.
압축 기술 적용으로 성능 향상
이전 버전의 오토머지는 이미 압축된 컬럼형 형식을 사용하여 메타데이터를 저장하고 전송했다. 이 형식은 대부분의 문서에서 원시 데이터 대비 합리적으로 작은 메타데이터 오버헤드를 달성했지만, 편집을 위해 문서가 실제로 로딩될 때는 히스토리에 대해 압축되지 않은 형식을 사용하여 메모리 사용량이 크게 증가했다. 오토머지 3.0에서는 런타임에서도 압축된 표현을 사용하도록 라이브러리를 재설계하여 이러한 문제를 해결했다.
API 개선사항
메모리 사용량 개선 외에도 이번 릴리스에서는 텍스트 처리와 관련하여 여러 API를 정리했다. 오토머지는 두 종류의 문자열을 관리할 수 있는데, 여러 사용자의 편집을 병합할 수 있는 '협업 문자열'과 다른 사용자의 편집을 병합할 수 없는 '비협업 문자열'이 있다. 1.0 버전에서는 비협업 문자열에 네이티브 자바스크립트 문자열을, 협업 문자열에 특별한 Text 클래스를 사용했다.
2.0 버전에서는 next 네임스페이스 하에 실험적 API를 출시하여 협업 텍스트를 기본 케이스로 만들고, 문자열로 협업 텍스트를 표현하고 덜 일반적인 비협업 텍스트의 경우 특별한 RawString 클래스를 사용하는 방식을 도입했다. 3.0 버전에서는 새로운 API에 완전히 전념하여 Text API를 제거하고 next API를 라이브러리의 기본 동작으로 만들었다. 또한 RawString을 더 설명적인 이름인 ImmutableString으로 변경했다.
오토머지 3.0은 2 버전과 동일한 파일 형식을 사용하며 API는 거의 완전히 하위 호환성을 제공한다. 기존 오토머지 사용자들은 즉시 업그레이드할 것을 권장한다고 발표했다. 성능과 안정성 면에서 상당한 발전이 있었기 때문에 아직 오토머지를 사용하지 않는 개발자들도 다시 살펴볼 좋은 시기라고 덧붙였다.
새로운 사용자는 최신 버전(2.1.0)의 @automerge/automerge-repo 또는 @automerge/react를 설치하면 오토머지 3.0이 기본으로 사용된다. 기존 오토머지 코드베이스를 가진 개발자는 마이그레이션 가이드를 참조하여 의존하는 오토머지 버전 번호 외에 변경해야 할 사항이 있는지 확인할 수 있다. @automerge/automerge-repo에만 의존하는 경우 npm update @automerge/automerge 명령어를 실행하여 새 버전을 가져올 수 있다.
한국정보기술신문 정보기술분과 강민규 기자 news@kitpa.org