2023/08/21

Evernote의 흔들림 없는 미래를 만들어갑니다

Evernote의 최근 소식을 본격적으로 전해드리기에 앞서 신경 쓰이는 문제부터 짚고 넘어가도록 하겠습니다.

지난 7개월 동안 많은 변화가 있었고, 일부 사용자는 Evernote의 장기적인 의도가 무엇인지 잘 모르겠다는 우려를 표명하셨습니다. 분명히 밝혀두지만, Bending Spoons는 빠른 돈벌이를 위해서가 아니라 Evernote를 정상 궤도에 올려놓기 위해 경영권을 잡았습니다. 장기적인 비전을 향해 나아가는 과정에서 약간의 단기적인 고통이 따랐고 그것은 정말 애석한 일입니다. 하지만 꼭 필요한 조치이기도 했습니다. 그렇게 하지 않으면 Evernote는 성장은커녕 생존조차 어려울 것이기 때문입니다. 궁극적으로 Evernote는 훨씬 더 튼튼해질 것입니다. 실제로 불과 몇 달 전까지만 해도 Evernote의 운명은 다소 암울했지만 이제 저희는 낙관하는 마음으로 장기적인 미래를 내다볼 수 있게 되었습니다.

저희는 Evernote를 안전하고 신뢰할 수 있는 제2의 뇌로 만드는 일에 집중하고 있습니다. 소중한 정보를 언제 어디서나 쉽게 찾아볼 수 있는, 빠르고 확실한 데이터베이스가 되어드리겠다는 뜻합니다. 이 아이디어는 새로운 것이 아니라, 거의 20년 전 Evernote가 만들어진 근간이었습니다. 하지만 회사 지킴이로서 저희가 당장 해야 할 일은 그때보다 훨씬 더 견고한 기반을 만들고 수십 년 동안 전해져 내려온 이 비전을 실현하는 것입니다.

저희 앞에 놓인 질문은 다음과 같습니다. 어떻게 하면 사용자가 요구하는 안정적이고 빠른 제품을 제공할 수 있을까? 길고 쉽지 않은 답변이 되겠지만 이 블로그 게시물과 앞으로의 커뮤니케이션을 통해 명확하게 답해보도록 하겠습니다.

본론으로 들어가기에 앞서 마지막으로 드리는 말씀: 아래의 내용은 절대 완전하지 아닙니다. 이 게시물에서는 세 가지 핵심 영역에 초점을 맞추었지만, 더 많은 일이 진행되고 있으니 자세한 내용은 차차 알려드리도록 하겠습니다.

중요한 첫 단계: 속도와 동기화

모든 여정은 첫걸음으로 시작됩니다. 저희의 첫걸음은 2023년 5월 실시간 편집(RTE)의 근간인 새로운 동기화 프로세스를 도입하면서 시작되었습니다. 여러 대의 장치에서 매끄럽게 실시간으로 노트를 편집할 수 있게 해 어느 때보다도 빠른 노트 동기화를 제공하겠다는 목표였습니다. 또한, 노트 충돌로 인한 불편도 완전히 끝내고 싶었습니다.

이 야심 찬 프로젝트를 위해 저희는 강력한 구현 프레임워크(Yjs)로 구동되는 새로운 데이터 구조(CRDT, Conflict-free Replicated Data Types)를 도입했고, 덕분에 노트 콘텐츠를 모든 장치에서 즉시 동기화할 수 있게 되었습니다. 이전의 HTML 스타일의 노트 형식에서는 불가능한 일이었습니다.

이 중요한 구조와 시스템의 롤아웃이 성공적으로 완료되었다는 소식을 전해드릴 수 있어 기쁩니다. 전환 단계에서 나름의 고충이 있었지만 실시간 편집(RTE)처럼 근본적인 기능을 구현하다 보면 아무리 철저히 준비하고 선제적 문제 해결을 수행해도 어쩔 수 없이 서비스 차질이 발생할 가능성이 있습니다. 저희는 도중에 만나게 될 몇 차례 난관에 대비했고 이를 충분히 극복할 수 있다고 확신했습니다. 또한 그러한 노력을 통해 많은 것을 배웠습니다. 이제 절대 다수의 사용자가 훨씬 매끄럽고 안정적인 Evernote 사용 경험을 누릴 수 있게 되었습니다.

속도: 마지막 문제를 수정 중입니다

종합적으로 보면 장점이 많지만 실시간 편집(RTE)을 뒷받침하는 새로운 동기화 시스템의 도입으로 일부 Evernote 사용자는 노트 로딩 속도가 둔화되는 상황을 경험했습니다. 이것은 어느 정도 예상된 문제였습니다. 새로운 실시간 편집(RTE) 노트 시스템으로 노트를 처음 열 때, 변환 작업을 거쳐야 하므로 불러오기까지 몇 초가 걸리는 것입니다. 하지만 처음 이후에는 노트가 지체 없이 열리고 동기화됩니다.

그러나 일부 사용자는 노트가 실시간 편집(RTE) 시스템으로 변환된 뒤에도 노트 로딩 속도가 확연히 느려졌다고 신고했습니다. 이것은 시스템이 노트를 처리하면서 매우 이례적인 경우에 발생한 문제로서, 비정상적으로 큰 노트 내역이 생성되는 결과를 불러왔습니다. 이에 따라, 노트 로딩 속도가 느려지는 것 외에도, 노트 콘텐츠 누락이나 작업 동기화 불량처럼 다른 문제가 일어날 가능성도 높아졌습니다.

저희는 문제를 파악한 즉시, 필요한 조치를 신속하게 수행했습니다. 여기에는 백엔드에서 세 개의 성능 관련 버그를 수정한 것도 포함되었습니다(6월 15일, 6월 27일, 7월 20일에 수정이 완료되었고, Yjs 라이브러리의 오픈소스 커뮤니티에도 이 수정 사항을 배포했습니다). 그러자, 영향을 받은 계정에서 노트 로딩 속도가 즉시 정상화되는 것을 확인했습니다. 여전히 문제를 겪고 있는 사용자는 최신 버전의 Evernote를 사용 중인지 확인 후, 지속될 경우 지원팀에 문의해 주시기 바랍니다.

탐색: 보이지 않는 곳에서 이루어지는 중요한 변화

개선 사항 중 몇 가지는 사용자가 편집기에서 접하는 일상적인 경험과 별개로, 제품 안 깊은 곳에서 이루어졌습니다. 그중에서 가장 중요한 것은 Evernote 데스크톱 버전과 Evernote 웹의 탐색 시스템을 전면 개편한 것으로 7월 말에 완료되었습니다(버전 10.59). 같은 기간에 모바일 버전의 탐색 시스템도 크게 업데이트되었습니다(버전 10.52). 기본적으로 탐색 시스템은 앱의 다양한 구성 요소가 서로 연결되는 방식을 결정합니다. 모바일 버전에서는 변화가 거의 보이지 않지만, 탐색은 이제 네이티브 API를 사용하므로, 성능이 확실히 개선될 것입니다. 유일하게 감지되는 변화는 데스크톱 버전의 새로운 URL 구조입니다:

www.evernote.com?b=<notebookID>&n=<noteID> →

www.evernote.com/notebook/<notebookID>/note/<noteID>

겉보기에 작은 변화처럼 보이지만 실제로는 앞으로 제품이 진화함에 따라 탐색 시스템을 쉽게 확장할 수 있도록 해주는 중요한 변화입니다.

Monolith 마이그레이션

눈에 보이지 않지만 중요한 또 한 가지 변화는 여러 팀이 엄청난 노력을 투입한 Monolith의 마이그레이션입니다. 잠깐 기술적인 설명을 드리겠습니다.

현재 상태

Monolith는 백엔드에서 Evernote의 비즈니스 로직 대부분을 실행하는 구형 Java Enterprise Edition (JEE) 애플리케이션입니다. 따라서 노트를 포함한 다양한 개체의 보관과 동기화를 담당합니다.

작업을 시작하기 전에, 데이터베이스는 애플리케이션 계층과 동일한 시스템에서 실행되었습니다(애플리케이션은 JEE, 데이터베이스는 MySQL). 이로 인해 시스템이 매우 무거워지고 관리도 어려워졌습니다. 코드베이스와 기본 인프라 양쪽에 상당한 기술 부채가 쌓였습니다. 다행히, 실시간 편집과 같은 마이크로서비스 덕분에 저희는 이러한 접근법에서 벗어날 수 있게 되었습니다.

향후 계획

저희는 코드베이스를 깨끗이 청소하고 기술 부채를 없애는 데에 초점을 맞추려고 합니다. 이미 인프라 쪽에서는 상당한 진전을 이루었고, 현대적인 기술을 사용해 전체 생산 인프라를 모두 재작성했습니다.

재작성 과정에서 애플리케이션과 데이터베이스를 분리했습니다. 데이터베이스는 현재 새롭고 훨씬 현대적인 인프라로 마이그레이션 중입니다. 이 경우, 보안과 안정성이 크게 향상됩니다. 전에는 Puppet에서 구성을 관리했지만 이제는 모든 것이 Docker 컨테이너로 압축되었습니다. 이 새로운 생산 환경은 개발자에게 유용한 개발 환경과 매우 흡사하며, 저희가 실행하는 변화가 원하는 효과를 내는지 검증하기가 훨씬 더 쉬워집니다. 간단히 말해, 오류가 적고 발생한 오류를 더 빠르게 수정할 수 있다는 뜻입니다.

여기서 끝이 아닙니다

앞으로 몇 개월 동안 모든 플랫폼에서 완벽하게 매끄러운 경험을 보장하기 위해 버그 수정에 박차를 가할 예정입니다. 그 밖에도 작업 동기화의 안정성을 높이고 Evernote 클라이언트의 속도를 대폭 개선할 계획입니다(이미 웹 클라이언트에서 조기 테스트를 수행해 훌륭한 결과를 얻었으며, 조만간 공유해 드릴 생각입니다).

핵심 기능과 사용자 경험은 현재 저희에게 가장 중요한 우선순위지만 그렇다고 해서 혁신의 중요성을 간과하겠다는 뜻은 아닙니다. 직원 및 Evernote 전문가들로 이루어진 소규모 사용자 그룹이 이미 AI 기반의 검색을 테스트하고 있으며, 긍정적이고 고무적인 피드백을 얻었습니다. 하지만 저희의 야심 찬 계획은 바위처럼 굳건한 기반을 다지는 데서 시작됩니다. 그 후에 한계란 없습니다.

그럼 다음에 또 뵙겠습니다.

Federico Simionato 올림