본문 바로가기
728x90
반응형

분류 전체보기330

SQLite는 한 번에 하나만 쓴다 — Writer 직렬화와 집계 DB 분리 개인 프로젝트 백엔드는 Rust(Axum) + SQLite입니다. 캐릭터 검색, 경험치 히스토리, 로그인 세션처럼 요청마다 짧게 쓰는 OLTP와, 유니온 랭킹을 긁어 월드·직업·유니온 구간 인구를 다시 만드는 배치 집계가 한 프로세스에 공존합니다. 처음엔 db 파일 하나면 충분해 보였습니다. 트래픽이 붙고 집계 배치가 커지자 문제가 분명해졌습니다. SQLite의 writer는 하나인데, 웹 요청의 짧은 INSERT와 집계의 긴 DROP/INSERT가 같은 락을 놓고 줄을 섭니다. 이 글은 그때 넣은 두 가지 장치를 정리합니다.앱 레벨 writer 직렬화집계 전용 DB 분리SQLite가 실제로 막아 주는 것WAL(Write-Ahead Logging)을 켜면 읽기는 쓰기와 겹칠 수 있습니다. 그래도 writ.. 2026. 8. 16.
Node.js + NestJS 입문서 오늘은 Node.js + NestJS 입문서 에 대해 리뷰해보고자 합니다. 읽게 된 계기최근 기업 공고들을 살펴보면서, Java뿐만 아니라 Python, TS를 요구하는 공고들이 많아졌습니다. 그 중, TS에 관심이 생겨 인프런에서 교육을 시청했었습니다. 그러던 와중, 많은 기업들에서 TS 백엔드로 사용하고 있는 NestJS에 대한 책이 있어 읽어보게 되었습니다.리뷰책을 처음 봤을때, 저는 단순히 Node.js에 대해 설명하고 Nest.js에 대해 설명할거라고 생각했습니다. 그러나, 해당 책에서는 다음과 같은 순서로 설명합니다.Node.js에 대한 기초 지식 및 활용HttpClient를 활용한 서버 구현npm 패키지 매니저에 대한 설명express라는 백엔드 프레임워크를 활용한 구현서버에서 사용하는 S.. 2026. 7. 30.
Tokio 생태계에 등장한 새로운 웹 풀스택 프레임워크, Topcoat 최근에 tokio 생태계에 새로운 녀석이 등장했습니다. 바로 Topcoat이라는 웹 풀스택 프레임워크입니다.Topcoat이란?Topcoat는 서버 중심 렌더링으로, 서버에서 HTML 조각을 렌더링하고 메타데이터로 "반응형 지시문"을 추가하는 방식으로 더해집니다. (HTMX와 유사) Topcoat로 만든 "hello wolrd"앱 입니다.#[tokio::main]async fn main() { topcoat::start(Router::builder().discover().build()).await.unwrap();}#[page("/")]async fn home() -> Result { view! { .. 2026. 7. 26.
메이플스토리 통계 서비스를 만들며 겪은 시행착오 개인 프로젝트를 진행하면서 겪었던 거에 대하여 작성해보고자 합니다. 현재 메이플스토리의 모든 캐릭터들에 대한 정보들을 가지고, 이에 대한 통계를 보여주는 페이지를 구현하고자 했습니다.어떻게 했는데?초기 구상로직은 검색된 유저들에 대한 정보를 기록하는 db에서 서버별, 레벨별로 select로 데이터를 가져와서 처리하고자 했습니다. 그렇게 구현하니 db에서 데이터를 정리해서 가져오는데 6분 정도의 시간이 소요되었습니다. 해당 부분은 문제가 있다고 생각이 들어 해당 데이터들을 미리 저장해두는 db를 구현하고 이에 데이터를 저장하도록 했습니다.현재까지 로직검색된 유저들에 대한 정보를 가지고 있는 db에 원하는 부분 데이터는 where 조건걸고 가져옴가져온 데이터를 화면에 보여줌보여지는데 필요한 정보들만 있는 D.. 2026. 7. 19.
728x90
반응형