노트에 캐시 계층을 적용했다: 폰은 L1, 금고는 L2

발행: (2026년 6월 5일 PM 10:21 GMT+9)
12 분 소요
원문: Dev.to

Source: Dev.to

나는 어떤 메모 앱을 쓰는지 말하지 않을 것이다. 앱은 여기서 가장 중요한 부분이 아니며, 이름을 밝히면 앱 자체에 대한 논쟁으로 흐를 것이기 때문이다. 그래서 나는 더 유용한 일을 할 것이며, 내가 어떻게 결정을 내렸는지, 각 축마다 어떤 옵션을 배제했는지와 그 이유를 차례대로 보여줄 것이다.

결정은 “어떤 앱을 쓸까”가 아니라 레이아웃에 관한 것이었다: 생각을 포착하는 곳과 생각을 보관하는 곳을 같은 장소에 둘 것인가, 아니면 서로 다른 작업에 맞춰진 두 장소에 둘 것인가? 수년간 나는 하나의 장소가 화이트보드에 깔끔해 보이기 때문에 하나라고 가정했다. 이제는 두 개를 사용하고 있는데, 나를 움직인 것은 대학 건축 수업에서 절반 정도 기억나는 다이어그램이었다. 그 다이어그램은 2월 어느 커피숍에서 냅킨에 스케치한 것이었다.

여기 그 다이어그램이다. CPU는 하나의 메모리만 가지고 있지 않다. 메모리 계층이 있다. 최상위에 레지스터가 있고, 그 다음이 L1 캐시, L2, L3, 메인 메모리, 그리고 디스크다. 아래로 갈수록 용량은 커지고 바이트당 비용은 저렴해지며 접근 속도는 느려진다. L1은 수십 킬로바이트 정도이며 약 1 나노초에 응답한다. 메인 메모리는 기가바이트 단위이며 약 100 나노초에 응답한다. 빠르고, 크고, 저렴한 단일 기술은 존재하지 않기 때문에, 기계는 여러 레벨을 만들고 데이터를 그 사이에 이동시킨다.

나는 그 냅킨을 바라보며, 지금 사람들은 “두 번째 뇌”라고 부르는 메모가 똑같은 문제를 가지고 있다는 것을 깨달았다. 그리고 나는 그 사실을 부정하고 있었다. 생각을 포착하는 장소는 즉각적이어야 하고, 언제든 손에 닿아야 하며, 관대해야 한다. 반면 2년 동안 생각을 보관하는 장소는 용량이 크고, 검색이 가능하며, 내구성이 뛰어나고, 휴대가 가능해야 한다. 요구사항이 전혀 같은 것이 아니다. 거의 호환되지 않는다. 나는 빠르고, 크고, 저렴한 하나의 메모리 기술을 찾고 있었지만, 그런 제품은 실리콘도 메모도 존재하지 않는다.

나는 솔직히 세 가지 옵션을 적어 보았다. 하나와 두 개의 허수아비가 아니라.

  • 하나의 통합 저장소: 휴대폰에서 타이핑하고 노트북에서 정리하는 단일 금고. 같은 표면에서 캡처하고 정리하는 하나의 폴더.
  • 하나의 데이터베이스 앱: 호스팅된 Notion 스타일 워크스페이스로, 캡처, 구조화, 저장이 모두 같은 데이터베이스 안에 존재하고 모든 기기에서 접근 가능.
  • 두 개의 레이어: 휴대폰에 작고 빠른 캡처 표면을 두고, 노트북에 더 크고 느린 정리·저장 표면을 두어, 두 레이어 사이에 정의된 경로를 둔다.

나는 기능을 점수 매기지 않았다. 메모리 레벨을 판단할 때 쓰는 동일한 속성으로 점수를 매겼다.

  • 캡처 시 쓰기 지연: “생각이 떠올랐어”에서 “생각이 기록됐고 놓아도 된다”가 되기까지 걸리는 시간. 나에게는 이것이 가장 큰 비용이며, 곧 이유를 설명하겠다.
  • 미스 비용: 시스템이 제때 준비되지 않았을 때 일어나는 일. CPU에서는 캐시 미스가 지연을 초래하고, 하위 레벨에서 라인을 가져와야 한다. 사람에게는 생각을 놓치는 것이 미스 비용이다.
  • 검색 지연: “그 메모가 필요해”에서 “읽고 있다”가 되기까지 걸리는 시간. 이는 책상 앞에서 몇 분 정도는 괜찮지만, 인도에서 1.5초 안에 찾아야 할 때는 문제가 된다.
  • 내구성 및 휴대성: 이 메모가 공급업체 폐쇄, 내보내기, 10년 후에도 살아남을 수 있느냐. 디스크에 저장된 일반 마크다운 파일은 여기서 높은 점수를 얻는다. 독점적인 데이터베이스는 오늘 앱이 아무리 좋더라도 낮은 점수를 받는다.
  • 병합 비용: 두 곳에서 동시에 편집된 같은 메모를 조정하는 데 드는 비용. 편집 가능한 장소가 많을수록 이 비용은 상승한다.

한 축이 다른 모든 축을 압도한 솔직한 이유: 작업 메모리 시스템에서 캡처 미스 비용은 단순히 속도가 느려지는 것이 아니다. 백업 저장소가 없는 완전한 손실이다.

여기서 캐시 비유가 휘어지는 부분이며, 그 굽힘이 가장 중요한 부분이므로 정확히 짚고 싶다. 실제 실리콘에서는 캐시 미스가 복구 가능하다. 데이터는 한 단계 아래에 여전히 존재하고, 더 많은 나노초를 지불하면 가져올 수 있다. 캐시는 보장의 위에 얹힌 최적화이다. 인간의 주의는 그런 보장이 없다. 첫 1~2초 안에 기록하지 못한 생각은 나중에 더 느리게 찾아지는 것이 아니라 사라진다. 보통 우리는 그 생각이 사라졌는지도 모른다. 샤워 중에 떠오른 아이디어를 잃어버린 데는 L2가 없다.

따라서 내 최상위 레벨에 대한 요구는 CPU의 L1보다 더 가혹하다. L1은 빠르기만 하면 된다. 내 캡처 레이어는 생각을 놓치지 않도록 충분히 빨라야 한다: 피곤한 날, 반쯤 잠든 상태, 한 손으로, 낯선 사람이 떠들어도. 이것이 **쓰기 지연(캡처 시)**과 미스 비용을 최상위 가중치로 올리고, 다른 모든 요소를 아래로 밀어낸 이유다. 검색은 느려도 된다. 저장은 다른 곳에 있어도 된다. 캡처는 절대 느려서는 안 된다.

두 레이어. 휴대폰이 L1이다. 한 가지 일을 한다: 타이핑한 한 줄을 한 번 탭으로 안전한 곳에 옮긴다. 폴더 선택, 태그 선택, “어떤 노트북에 저장할지” 같은 결정이 전혀 없다. 한 줄이 들어가면 나는 계속 걸어간다.

노트북이 L2다. 여기서 정리가 이루어진다: 캡처된 한 줄이 문단이 되고, 파일에 보관되고, 몇 개의 오래된 메모와 연결되거나, 아침에 사라진 2시 생각이라면 삭제된다. 내 L2는 Obsidian 금고이며, iCloud Drive를 통해 동기화된 일반 마크다운 파일이다. 내구성과 휴대성이 저장 레벨이 승리해야 할 축이었고, 디스크에 저장된 텍스트 파일이 기본적으로 이를 승리한다.

레벨 사이의 경로는 사람들이 자주 건너뛰는 부분이며, 바로 이 부분이 계층을 단순히 두 개의 독립된 앱이 아니라 계층 구조로 만든다. 결국, 휴대폰에서 캡처한 줄은 이미 금고 안에 그날의 노트 아래 타임스탬프가 찍힌 불릿으로 들어가 있다:

  • 14:22 캐시 메타포는 eviction(제거)이 자동일 때만 작동한다. 나는 복사하는 의식적인 의례를 만들지 않았다. 왜냐하면 내 규율에 의존하는 플러시가 일어나지 않을 것이고, 나는 내 규율을 믿지 않기 때문이다. 제거는 자동이다. 줄은 인박스에 들어온 바로 그 순간 같은 분에 마크다운 파일에 기록된다.

비유에 대해 까다롭게 따진다면, 내가 설명한 것은 write‑through 캐시에 가깝다. 줄이 L1에 닿는 순간 바로 L2에 복제된다. 빠른 레이어에 머물며 나중에 플러시되는 write‑back 캐시가 아니다. 나는 의도적으로 그렇게 선택했다. write‑back은 캡처된 줄이 휴대폰에만 존재하는 창을 남기며, 그 창이 바로 기기가 떨어지거나 강제 종료될 때 생각이 사라지는 순간이다. 줄이 의미하는 바와 어디에 들어갈지는 나중에 결정하는 것이며, 그 결정은 비용이 많이 드는 작업이다. 복제는 즉시 이루어지고, 정리는 이미 안전한 데이터 위에 나중에 수행되는 압축 단계이다.

한 가지 규칙, 그리고 그것이 전체 시스템이다: 어느 레벨도 다른 레벨의 일을 하지 않는다. 휴대폰은 절대 정리하지 않는다. 금고는 절대 캡처하지 않는다.

나는 이 교훈

0 조회
Back to Blog

관련 글

더 보기 »

모바일 한여름 열풍

!Cover image for Mobile Midsommer Madnesshttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploa...