Stripe가 개발자 경험에 성공한 비밀과 Kinde가 바꾸는 미래
Stripe의 혁신적인 개발자 경험과 Kinde가 이끄는 인증 시스템의 미래를 살펴보고, 개발자 친화적 솔루션 도입 인사이트를 제공합니다.
Shelled AI (한국)
© 2025 Shelled Nuts Blog. All rights reserved.
Capture your moments quietly and securely
Stripe의 혁신적인 개발자 경험과 Kinde가 이끄는 인증 시스템의 미래를 살펴보고, 개발자 친화적 솔루션 도입 인사이트를 제공합니다.
Shelled AI (한국)
복잡한 환경에서 에이전트 협업 시뮬레이션 실습을 통해 멀티 에이전트 시스템의 실제 적용과 사례를 단계별로 체험해보세요.
Shelled AI (한국)
한 번의 API 호출로 인증과 결제를 동시에 처리하는 비밀 패턴을 소개합니다. 개발 효율과 보안을 동시에 향상시키는 최신 웹 개발 팁!
Shelled AI (한국)
어, 또 만났네요! 지난번 "파일 시스템 내부 구조와 성능 최적화" 글, 다들 어떠셨나요? 댓글을 보니 저널링 파일 시스템과 로그 구조 파일 시스템(LFS)에 대해 더 깊이 알고 싶다는 분들이 많더라고요. 그래서 오늘은 이 두 가지를 제대로 파헤쳐볼까 해요. 저도 처음엔 용어부터 헷갈렸던 기억이 있는데, 실제로 써보고 삽질도 해보면서 깨달은 점이 많았거든요. 이번 글에서는 개념, 동작 원리, 성능 차이, 실제 사례, 그리고 실전에서의 시행착오까지, 최대한 쉽고 솔직하게 풀어보겠습니다.
읽고 나면 단순한 개념 정리를 넘어서, 현업에서 파일 시스템을 똑똑하게 선택하고 운영할 수 있는 감각까지 얻으실 수 있을 거예요. 완벽하지 않아도 괜찮으니, 저랑 같이 천천히 배워가요. 시작해볼까요?
혹시 컴퓨터 전원이 갑자기 나가서 파일이 깨진 경험, 있으신가요? 저도 예전에 중요한 문서 작업하다가 정전이 되어 멘붕이 왔던 적이 있어요. 이런 상황에서 데이터 손실을 최소화해 주는 게 바로 저널링 파일 시스템이에요.
**저널링(Journaling)**은 파일 시스템이 변경 사항(데이터나 메타데이터)을 먼저 '저널(일지, 로그)'에 기록한 뒤, 실제 파일 시스템에 적용하는 방식입니다. 쉽게 말해, 파일을 저장할 때 바로 디스크에 쓰는 게 아니라, "이런 걸 쓸 거야!" 하고 일단 저널에 적어두는 거죠. 그리고 나서 실제 데이터 영역에 반영합니다. 만약 이 과정에서 시스템이 다운되더라도, 저널에 남은 기록으로 복구가 가능하니 데이터 일관성을 지킬 수 있습니다.
여기서 저널링에도 두 가지 방식이 있어요.
실제로 수치를 보면, ext4에서 데이터 저널링 모드로 1GB 파일을 복사할 때 평균 30~40% 정도 느려지는 걸 경험했어요. 반면, 메타데이터 저널링 모드에서는 거의 일반 모드와 비슷한 속도를 보이더라고요. 서버처럼 안정성이 최우선인 환경에서는 데이터 저널링을, 개인 PC나 일반 서버에서는 메타데이터 저널링을 많이 씁니다.
NTFS는 기업 서버에서, ext4는 리눅스 서버와 데스크톱에서 정말 많이 쓰이죠. 저도 서버 구축할 때 ext4를 기본으로 썼는데, 부팅 속도와 복구 시간이 확실히 빨라서 놀랐던 기억이 있습니다.
실제로 Ubuntu 서버를 운영하다가 커널 패닉으로 강제 리부팅한 적이 있었어요. 예전엔 fsck(파일 시스템 검사) 돌리느라 한참 기다려야 했는데, ext4로 포맷한 뒤엔 부팅이 훨씬 빨라졌어요. 저널에 기록된 변경 내역만 적용하면 되니 복구 시간이 확 줄더라고요.
하지만 저널링이라고 100% 안전한 건 아니에요. mount 옵션을 잘못 줬다가 성능이 뚝 떨어진 적도 있었고, 저널 영역이 손상되면 복구가 생각보다 복잡해질 수 있습니다. 그래서 항상 백업, 그리고 mount 옵션 체크는 필수!
로그 구조 파일 시스템(Log-Structured File System, LFS), 이름만 들어도 머리가 지끈할 수 있죠? 저도 처음엔 "이게 기존 파일 시스템이랑 뭐가 다르지?" 싶어서 한참 헤맸어요.
핵심은 이거예요: 모든 쓰기 작업을 순차적인 로그(일지, 기록지) 형태로 저장한다는 것.
이렇게 하면 디스크 헤드가 여기저기 왔다갔다할 필요가 없죠. HDD 시절엔 헤드 이동이 느려서 이게 큰 장점이었고, 요즘은 SSD·플래시 메모리에서도 순차 쓰기가 훨씬 빠르고 내구성도 좋아서 딱 맞는 구조입니다.
SSD에 처음 OS 설치해보고 "왜 이렇게 빠르지?" 놀라셨던 분, 저만 그런 거 아니죠? 플래시 메모리는 랜덤 쓰기가 느리고, 반복 쓰기가 많으면 쓰기 증폭(write amplification) 때문에 수명이 짧아져요.
LFS는 순차 쓰기만 하니까, SSD 특성에 딱 맞아요. 실제로 라즈베리파이 프로젝트에서 F2FS를 써봤는데, 전원 껐다 켜도 파일 손상도 덜하고 성능도 확실히 빨랐어요. (다만, 실수로 포맷해서 3시간 날린 적도... 백업은 꼭 하세요!)
고성능 컴퓨팅(HPC)에서는 초당 수백~수천 GB 데이터를 빠르게 저장해야 하잖아요. LFS는 체크포인트(Checkpoint) 기능이 좋아서 장애가 나도 금방 복구할 수 있고, 대용량 데이터도 효율적으로 저장할 수 있습니다.
NetBSD의 LFS, Google LevelDB 등 실제로 많은 서버나 대용량 데이터베이스에서 이런 구조를 활용하죠.
LFS가 만능은 아닙니다. 순차적으로 쌓다 보면 결국 **가비지 컬렉션(Garbage Collection, GC)**을 해서 안 쓰는 공간을 청소해야 해요. 이 과정에서 시스템이 잠깐 느려질 수 있습니다.
저도 임베디드 보드에서 너무 잦은 GC 때문에 파일 쓰기가 멈춘 적이 있었어요. GC 튜닝을 제대로 안 하면 오히려 성능이 뚝 떨어집니다. 읽기 위주 워크로드라면 전통적인 저널링 파일 시스템(ext4 등)이 더 나을 수도 있어요.
저널링 파일 시스템의 가장 큰 장점은 데이터 무결성 보장과 신속한 복구입니다.
파일 변경 사항을 일단 저널(일종의 로그)에 먼저 기록하니까, 장애가 나도 "이 시점까지는 기록해뒀으니 여기서부터 복구하면 되겠다!"가 가능하죠.
실제로 ext4에서 서버가 다운된 적이 있었는데, 재부팅 후 fsck가 1TB 파티션에서 1분도 안 걸려 끝나서 놀란 적이 있어요. 저널링 덕분에 파티션 전체를 뒤질 필요 없이, 미완료된 작업만 쏙쏙 골라서 처리하거든요.
"그럼 저널링이 완벽한 거 아니야?"라고 생각할 수 있는데, 실제로 운영해보면 단점도 분명합니다.
대표적으로 쓰기 오버헤드가 있어요. 데이터를 디스크에 직접 쓰기 전에 저널에 먼저 기록해야 하니까, 쓰기 작업이 두 번 일어나는 셈이죠.
특히 데이터와 메타데이터를 모두 저널링하는 'full journaling' 모드에서는 속도가 20~40%까지 떨어지는 걸 직접 경험했어요.
DB 서버에 ext4를 기본 설정(journal mode)로 올렸다가, 성능 이슈 때문에 ordered mode로 바꾼 적이 한두 번이 아니에요.
메타데이터만 저널링하면 성능 저하는 덜하지만, 데이터 자체는 덜 안전해질 수 있다는 딜레마가 있죠.
저널 영역이 손상됐을 때 복구가 쉽지 않다는 점도 있습니다.
저널 파일 자체가 깨지면 fsck 같은 복구 도구로도 완벽히 돌릴 수 없는 경우가 나와요.
저도 백업을 게을리하다가, 저널 손상으로 데이터가 꼬여서 고생한 적이 있습니다.
백업, 정말 자주 해두세요!
운영체제마다 I/O 스케줄러, 캐시 관리, 멀티스레딩 처리 등이 달라서, 저널링 파일 시스템의 성능이 꽤 다르게 나옵니다.
LFS의 가장 큰 강점은 모든 데이터를 순차적으로 로그에 기록한다는 점이에요.
전통적인 파일 시스템(ext4, NTFS 등)은 파일을 수정할 때 디스크 여기저기를 찾아다니면서 데이터를 쓰지만, LFS는 한 줄로 쭉쭉 기록해버리니 디스크 헤드가 이리저리 움직일 필요가 없습니다.
특히 SSD처럼 랜덤 쓰기보다 순차 쓰기에 특화된 저장장치에서는 이 방식이 진짜 빛을 발해요.
실제로 로그 분석 서버에서 LFS를 적용했더니, 쓰기 성능이 기존보다 2~3배 이상 올라간 경험이 있습니다.
하지만 여기서 가비지 컬렉션(Garbage Collection, GC) 문제가 나옵니다.
LFS는 모든 변경사항을 새로운 위치에 계속 써나가다 보니, 예전에 썼던 데이터 중에 더 이상 필요 없는 '쓰레기'가 쌓이게 돼요.
이걸 정리하려면 일정 주기로 GC가 동작해 불필요한 데이터를 지우고 공간을 재사용해야 하죠.
실제로 LFS를 서버에 적용했을 때, GC가 너무 자주 돌면서 오히려 쓰기 지연이 심해지고 CPU 점유율이 확 올라간 적이 있었습니다.
GC 튜닝을 제대로 안 하면 성능이 오히려 떨어질 수 있어요.
LFS는 메타데이터 관리, 세그먼트 할당, 체크포인트 생성 등 신경 쓸 게 정말 많아요.
처음엔 너무 복잡해서 몇 번 삽질하면서 겨우 이해했어요.
이런 구조적 복잡성 때문에, LFS를 상용 환경에서 바로 쓰긴 쉽지 않습니다.
국내 기업에서 도입하려다 지원 이슈 때문에 포기한 사례도 있었어요.
"뭐가 문제 생겼을 때 바로 대응할 수 있을까?" 이 고민, 꼭 해보셔야 합니다.
플래시는 데이터 쓰기와 삭제 단위가 다르고, 수명도 제한되어 있잖아요?
LFS는 이런 특성을 잘 활용할 수 있지만, GC가 지나치게 자주 발생하면 오히려 SSD 수명만 줄어드는 불상사가 생길 수 있어요.
GC 빈도랑 웨어 레벨링(Write leveling) 정책을 제대로 맞추지 않으면 성능 저하뿐 아니라 SSD도 빨리 망가질 수 있습니다.
저널링 파일 시스템: "뭔가 바뀔 때마다 일단 저널(일지)에 기록해 두자!"
예시: ext4, XFS, NTFS.
파일을 추가하거나 수정하면, 바로 데이터에 반영하는 게 아니라 "이런 게 바뀔 거야!" 하고 저널에 먼저 적어둡니다.
장애가 나도 저널만 있으면 금방 상태를 복구할 수 있죠.
로그 구조 파일 시스템(LFS): "모든 변경을 로그처럼 순차적으로 쌓자!"
예시: F2FS, NILFS2, JFFS2.
데이터든 메타데이터든 전부 로그에 남기고, 필요할 때 이 로그를 쭉 읽어서 파일 시스템을 복원합니다.
저널링: 저널에 한 번, 실제 데이터에 한 번, 두 번 쓰기가 발생.
데이터 저널링 모드에서 SSD에 1GB 파일을 복사하면, 메타데이터 저널링 모드 대비 최대 30~40% 느려질 수 있음.
SSD처럼 쓰기 횟수가 민감한 장치에는 부담이 될 수 있음.
저도 ext4에서 데이터 저널링 모드로 돌렸다가 SSD 수명이 빨리 닳는 경험을 했어요.
LFS: 모든 쓰기를 한 방향으로 쭉쭉 밀어넣으니, SSD·플래시에서 성능이 정말 좋음.
F2FS를 라즈베리파이에 적용해 봤더니, 부팅 속도랑 파일 복사 속도가 ext4보다 확실히 빨랐어요.
단, 가비지 컬렉션 타이밍에 따라 쓰기 속도가 갑자기 느려질 수 있음.
서버/데스크톱: 안정성, 호환성, 복구 속도 다 잡으려면 저널링 파일 시스템이 무난.
실제로 기업 서버, NAS, 일반 데스크톱에서는 대부분 ext4, XFS, NTFS 같은 저널링 계열을 씁니다.
SSD/임베디드/라즈베리파이 등 플래시 메모리 기반: 쓰기 집약적이고, 디스크 수명도 신경 쓴다면 LFS 계열(F2FS, NILFS2 등)이 훨씬 유리.
구분 | 저널링 파일 시스템 | 로그 구조 파일 시스템 |
---|---|---|
대표 예시 | ext4, NTFS, XFS | F2FS, NILFS2, JFFS2 |
데이터 기록 | 저널→실제 데이터(2번) | 순차 로그(1번) |
복구 속도 | 빠름 | 체크포인트/로그 재생 필요 |
쓰기 성능 | 일반적 | 플래시/SSD에 최적 |
가비지 컬렉션 | 없음 | 필수(GC) |
구조 복잡성 | 낮음 | 높음 |
지원 생태계 | 매우 넓음 | 제한적(점점 확대) |
파일 시스템은 하드웨어와 워크로드 변화에 따라 계속 진화하고 있습니다.
SSD·플래시 기반 환경이 늘어나면서 LFS 계열의 활용도 점점 높아지고 있고, 저널링 파일 시스템도 대용량·고성능 환경에 맞춰 계속 발전 중이에요.
적용 시 고려사항
저널링 파일 시스템과 로그 구조 파일 시스템은 데이터 무결성과 성능 최적화라는 공통 목표 아래 서로 다른 접근 방식을 취합니다.
각 방식의 장단점을 이해하면, 시스템 환경과 요구에 맞는 최적의 파일 시스템을 선택할 수 있습니다.
오늘 배운 내용을 바탕으로 실제 운영 환경에 적용해보고, 더 깊은 성능 테스트나 사례 분석도 진행해 보세요.
파일 시스템의 선택, 작은 차이가 큰 변화를 만듭니다—지금의 선택이 미래의 안정성과 효율성을 결정해요!
여러분도 시행착오 겪으면서, 자신만의 파일 시스템 운영 노하우를 쌓아보세요! 궁금한 점이나 실패담, 댓글로 공유해주시면 저도 같이 고민해볼게요.
휴, 오늘 내용 좀 많았죠? 천천히 다시 읽어보시고, 다음엔 더 재미있는 주제로 찾아올게요!