전체 글 23

MongoDB에서 Index (B-tree)

업무에서 발생한 일을 바탕으로 프롬프트를 작성하고 정리한 내용.cs수업때 b+tree 배운 이후에 까먹고 있었는데, 리마인드 할 겸 기록해둔다.직접 작성하는 것보다 더 나은 것 같다. MongoDB 인덱스와 B-Tree: OOM 에러로부터 배운 교훈얼마 전 MongoDB를 사용하면서 예상치 못한 Out of Memory(OOM) 에러를 경험했습니다. 이 문제는 단순히 History 데이터를 정렬(sort)하려는 작업에서 발생했으며, 원인은 특정 필드에 대해 인덱스가 없었기 때문입니다. 이 사건을 계기로 MongoDB에서 사용하는 인덱스의 구조를 자세히 알아보게 되었고, 그 핵심에 B-Tree라는 자료 구조가 있음을 알게 되었습니다. 이번 글에서는 MongoDB 인덱스에서 사용되는 B-Tree와 관련 개념..

Programming/Backend 2025.01.10

MongoDB core-dump, 대용량 데이터 처리 (페이징, limit 값)

배경업무 중에, 서버의 Disk Full 연락을 받았다.기존 개발해둔 API에서 OOM (Out Of Memory)가 계속 발생하여, core-dump가 계속 생성되어서 Disk Full이 발생.Free disk space 해결과정https://support.bespinglobal.com/ko/support/solutions/articles/73000560685--linux-df-du-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%B0%A8%EC%9D%B4%EB%82%A0-%EB%95%8C-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95 df, du 명령어 차이점과 차이 발생 시 해결방법df와 du란 무엇인가? Linux에서..

Programming/Backend 2024.09.05

지뢰 찾기 게임

Github 링크https://github.com/MoonSangJin/minesweeper GitHub - MoonSangJin/minesweeper: 🎳 지뢰찾기🎳 지뢰찾기. Contribute to MoonSangJin/minesweeper development by creating an account on GitHub.github.com Game 링크https://sangjin-minesweeper.vercel.app/ Minesweeper sangjin-minesweeper.vercel.app 게임 방법- 기본적인 지뢰 찾기 게임에 기초함.- 정해진 Lives 수 안에 Mines를 다 찾으면 성공. PC- 네모상자 오픈 : 마우스 왼쪽 클릭- 깃발 처리 : 마우스 오른쪽 클릭 Mobile- ..

Programming 2024.08.09

Webpack 마이그레이션 작업 (v4 -> v5) 및 디버깅, 최적화 공유

올해부터, 데이터 로그 정의 플랫폼 프로젝트를 맡게 되었다. 해당 프로젝트는 Node version 10.16.3, webpack v4, react class component와 function component의 산재 등으로, 오래된 프로젝트이다. 개편 과정에서 처음 삽을 뜬건, webpack 업그레이드 작업이었다. vite나 rollup 같은 다른 번들러로 교체할 까 생각도 했지만, 해당 프로젝트는 사내 사용자가 많고, 최대한 사이드 이펙트를 줄이기 위해, 기존의 config들을 활용하는 방안이 안정성을 가지기에 좋다고 생각했다. 또, 웹팩에 관련된 커뮤니티도 잘 형성되어있고 디버깅에 대해 도움 받을 수 있는 글들도 많아서 마이그레이션 작업을 선택했다.  https://webpack.kr/migrat..

책 후기 - '나는 네이버 프런트엔드 개발자입니다.'

네이버 FE 개발자들은 어떻게 무슨 생각을 가지고 일하는지 궁금해서 읽어 보았다. 중요하다고 생각 되거나 눈여겨 보면 좋은 구절, 내가 생각해 보아야 할 문제들을 정리하고자 한다. 1. 왜 FE 개발을 하는가? - 면접 질문 같이 들리는데, 결국에 왜? 가 중요하다고 생각한다. '이걸 왜 하고 있지?'라는 순간이 올 때 '이 맛에 FE를 하지' 하는 위안받을 수 있는 순간을 기억해두자. 2. 공학적 사고를 기반으로 문제를 정의하고 풀어나가는 능력이 중요하다. - 머지소트 같은 정렬 알고리즘이 어떤 논리와 흐름으로 일어나는 것인지 원리를 이해하고 잘 설명할 수 있는지가 함께 하고자하는 동료의 기준이 되는 듯하다. (말 나온 김에, 각 정렬 알고리즘이나 다시 봐보자) 3. 결국에는 당연히 자바스크립트 - 프..

Book 2023.12.12

SDK 고도화 및 경량화 (부제 : 우리 이제 최소한 ES6는 써요...)

사내 SDK 고도화 및 경량화 발표 자료 용어 jasmine - js 테스트 프레임워크 (테스트 케이스를 작성하고 구조화하는 도구) karma - js 테스트 러너 (테스트 실행하는 환경을 제공하는 도구) babel - 브라우저 간 호환성을 위한 js 트랜스파일러 (최신 js 문법 지원) parcel-bundler - (js 번들러 parcel의 이전 버전 === 이하 parcel v1) ex: webpack 친구 parcel - (js 번들러 parcel의 최근 버전 === 이하 parcel v2) browserlist - (대상 브라우저 및 노드 버전을 명시하는 config 파일) es6 - (ECMAScript 6번째 : 2015년에 발표한 표준화된 스크립트 프로그래밍, ES5 이하 명세에서 문제가..

Next.js 13 (App Router)에서 MultiPart Form 처리 && 파일 업로드

최근 사내 프로젝트로 Next.js를 이용하고 있다. Next.js 13이 나오면서 기존 Pages Router가 아니라 새로운 App Router를 바로 적용하게 되었다. (어짜피 Pages Router로 개발해도 나중에 App Router로 다 바꿔야 할 것 같아서;;) 나에게 Next.js가 가장 좋았던 점은 API Route가 있어서 간단한 API는 바로 같은 디렉토리에서 개발할 수 있다는 것이었다. React랑 Express가 적절히 잘 버무려진 느낌. Docs 읽어보면 Pages Router 대비해서 바뀐게 꽤 몇개 있는데, 적용하는게 그다지 어렵지 않고, Docs도 친절히 잘 설명해주고 있는게 대부분이었다. 하지만 구글링해보면 대부분 Page Router에 대한 글이고, App Router로..

Nest.js 도입 및 느낀점 (Express와 비교)

주제 : Nest.js 도입 및 느낀점 (이번 포스팅은 회사 발표용이라 자료 내용이 딱딱합니다.) 정의 Nest.js 는 Node.js 런타임 위에서 동작하는 TypeScript용 오픈 소스 백엔드 웹 프레임워크. 선정 이유 (Express를 사용하며 아쉬웠던 점) 인턴 기간 때, 언어 : JS, 프레임워크 : Express를 활용한 백엔드 엔지니어링 역량 강화의 경험이 존재. 올해 업무 시작하면서, Express 기반의 프로젝트들의 개발을 진행하거나 참고하는 경험이 많았음. Express는 사용이 쉽고, 자유롭다는 장점이 있지만, 아키텍처에 관한 정의나 기능을 제공하지 않아, 프로젝트 구성 디렉토리가 개발자마다 다양함을 확인. 프로젝트 규모가 커질수록, 개발자마다 아키텍처가 다르면 이를 이해하기 위한 ..

Programming/Backend 2023.01.29

Parcel 번들러 Migration 후기 (parcel-bundler -> parcel)

인턴 때부터 지금까지 맡은 프로젝트 중 하나는 데이터 수집 SDK이다. 사내 웹/앱 서비스 개발자 분들이, SDK를 이용하여 브라우저에 생성하면, 기 정의된 로그 포맷에 해당하는 data들을 서버로 전송하는 역할을 한다. 해당 SDK는 여러가지의 js 파일로 구성되어 있고, 번들러를 이용하여 빌드 된 파일을 다른 개발자분들이 로드해서 사용한다. 번들러에는 webpack, RequireJS, Browserify, Rollup, Parcel 등이 있는데, 해당 프로젝트에는 Parcel v1이 적용되어 있었다. 올해(2022) 업무 중 하나는 번들러인 Parcel의 마이그레이션 작업이었다. (버전 업그레이드) Parcel v1은 npm에서 parcel-bundler로 명시되어있고, v2는 parcel로 명시되..