Builder.shin
Backend
426개의 게시물
Node.js
Node.js 멀티코어 활용하기 - cluster 모듈 도입기
싱글 스레드인 Node.js의 한계를 극복하기 위해 cluster 모듈을 프로덕션에 도입했다. PM2 대신 직접 구현한 이유와 과정을 정리했다.
2019년 3월 1일
Node.js
Node.js 멀티파트 파일 업로드 처리 시 메모리 이슈 해결
사용자가 대용량 이미지를 업로드할 때 서버 메모리가 급증하는 문제가 발생했다. multer의 stream 처리 방식을 제대로 이해하지 못해 발생한 이슈였고, 스토리지 옵션 변경으로 해결했다.
2019년 2월 21일
Python
Python 데코레이터로 API 응답 캐싱 처리하기
사내 데이터 API 서버에서 동일한 요청이 반복되면서 DB 부하가 증가하는 문제가 발생했다. 데코레이터 패턴을 활용해 간단한 캐싱 레이어를 구현하여 응답 시간을 평균 300ms에서 20ms로 개선했다.
2019년 2월 16일
Python
Python 딕셔너리 병합 시 성능 비교
여러 딕셔너리를 병합하는 작업이 잦은 API 응답 처리 로직에서 성능 이슈가 발생했다. Python 3.5+ 환경에서 사용 가능한 여러 병합 방식의 성능을 비교하고 적절한 방법을 선택했다.
2019년 2월 8일
Rust
Rust 기본 문법 정리 - 소유권과 빌림
Rust를 시작하면서 가장 혼란스러웠던 소유권 개념을 정리했다. 기존 언어들과 다른 메모리 관리 방식이 처음엔 불편했지만, 컴파일러가 메모리 안전성을 보장해주는 점이 매력적이었다.
2019년 1월 20일
Rust
Rust로 Node.js Native Addon 만들어보기
CPU 집약적인 이미지 처리 작업을 Node.js에서 수행하면서 성능 병목이 발생했다. C++ 대신 Rust로 Native Addon을 작성해보았고, neon-bindings를 사용한 경험을 정리했다.
2019년 1월 17일
Python
Django REST Framework에서 Serializer 중첩 처리하기
API 응답에서 관계된 모델 데이터를 함께 반환해야 하는 경우가 있다. DRF의 Serializer를 중첩해서 사용하면서 발생한 N+1 쿼리 문제와 해결 과정을 정리했다.
2019년 1월 16일
Python
Python 3.7 asyncio 기반 크롤러 성능 개선
동기 방식의 크롤러를 asyncio로 전환하면서 처리 속도를 5배 개선했다. aiohttp와 asyncio.gather를 활용한 동시성 처리 방법을 정리한다.
2019년 1월 1일
Node.js
Node.js 멀티 프로세스 환경에서 메모리 캐시 동기화 문제
PM2 클러스터 모드로 전환하면서 인메모리 캐시 동기화 문제에 부딪혔다. Redis로 해결했지만, 적용 과정에서 고려해야 할 사항들을 정리했다.
2018년 12월 7일
Node.js
Node.js 스트림으로 대용량 CSV 파일 처리하기
백오피스에서 5GB 크기의 CSV 파일을 업로드하자 서버 메모리가 터졌다. Node.js의 Stream API를 활용해 메모리 사용량을 1/10로 줄인 과정을 기록한다.
2018년 11월 19일
Previous
1
More pages
32
33
34
35
36
More pages
43
Next
카테고리
Builder.shin