Builder.shin
Backend
426개의 게시물
Node.js
Node.js 스트림으로 대용량 CSV 파일 처리하기
5GB 규모의 CSV 파일을 메모리 오버플로우 없이 처리해야 하는 상황이 생겼다. Node.js 스트림을 활용해 메모리 효율적으로 파일을 읽고 가공하는 방법을 정리했다.
2020년 11월 30일
Python
Python 비동기 HTTP 요청 병렬 처리로 API 응답 속도 개선
레거시 배치 작업에서 순차적으로 처리하던 외부 API 호출을 aiohttp와 asyncio를 사용해 병렬화했다. 약 50개의 API 호출이 순차 실행 시 25초 걸리던 것을 3초로 단축했다.
2020년 11월 23일
Golang
Go 1.15에서 embed 패턴으로 정적 파일 관리하기
Node.js 프로젝트에서 Go로 마이그레이션하면서 정적 파일 관리 방식을 정리했다. Go 1.16에서 공식 embed가 나온다고 하지만, 현재는 go-bindata와 직접 구현 중 선택해야 했다.
2020년 11월 5일
Node.js
Node.js 메모리 누수 디버깅 - heapdump로 원인 찾기
프로덕션 환경에서 발생한 메모리 누수 문제를 heapdump와 Chrome DevTools로 추적했다. EventEmitter 리스너 해제 누락이 원인이었다.
2020년 11월 1일
Node.js
Node.js 스트림으로 대용량 CSV 파일 처리 개선하기
수백 MB급 CSV 파일을 메모리에 올리지 않고 처리하는 방법을 정리했다. 스트림 API를 사용해 메모리 사용량을 90% 이상 줄일 수 있었다.
2020년 10월 29일
Python
Python 비동기 요청 처리 시 메모리 누수 해결
FastAPI로 구축한 API 서버에서 aiohttp 세션을 제대로 닫지 않아 메모리 누수가 발생했다. 컨텍스트 매니저와 의존성 주입을 활용해 세션 라이프사이클을 관리하여 문제를 해결했다.
2020년 10월 18일
Golang
Go 1.15에서 작은 객체 할당 최적화 경험
프로덕션 API 서버에서 메모리 사용량이 지속적으로 증가하는 문제를 발견했다. 프로파일링 결과 작은 객체의 빈번한 할당이 원인이었고, sync.Pool을 활용해 해결했다.
2020년 10월 10일
Node.js
Node.js 스트림으로 대용량 CSV 파싱 메모리 이슈 해결
200MB가 넘는 CSV 파일을 한번에 읽다가 메모리 부족 에러를 만났다. 스트림 기반 파싱으로 전환해 메모리 사용량을 1/10로 줄인 과정을 기록한다.
2020년 10월 4일
Python
FastAPI로 레거시 Flask API 점진적으로 교체하기
운영 중인 Flask API 서버를 FastAPI로 전환하는 과정을 기록했다. 전체 교체가 아닌 점진적 마이그레이션 방식으로 리스크를 최소화했다.
2020년 9월 30일
Python
FastAPI에서 Pydantic 모델로 요청 검증 자동화하기
Express에서 FastAPI로 API 서버를 마이그레이션하면서 Pydantic의 자동 검증 기능이 꽤 유용했다. 직접 validator를 작성하던 것에 비해 코드량이 크게 줄었고, 타입 안정성도 확보할 수 있었다.
2020년 9월 7일
Previous
1
More pages
24
25
26
27
28
More pages
43
Next
카테고리