Builder.shin
Backend
426개의 게시물
Golang
Go에서 context.Context로 타임아웃 처리하기
외부 API 호출 시 무한 대기 문제가 발생해 context를 활용한 타임아웃 처리를 적용했다. 기본 개념부터 실제 적용 사례까지 정리했다.
2018년 4월 12일
Golang
Go 인터페이스와 덕 타이핑 이해하기
Java에서 Go로 넘어오면서 인터페이스 개념이 혼란스러웠다. 명시적 구현 선언 없이도 인터페이스를 만족하는 Go의 구조적 타이핑을 정리했다.
2018년 4월 4일
Golang
Go 인터페이스와 덕 타이핑 이해하기
프로젝트에서 Go를 도입하면서 인터페이스 개념에 혼란이 있었다. Java와 다른 암묵적 구현 방식이 처음엔 불편했지만, 의존성 관리 측면에서 장점이 많았다.
2018년 4월 1일
Node.js
Node.js에서 Promise.all 대신 p-limit로 동시성 제어하기
수천 개의 API 요청을 처리하다가 서버가 죽는 문제를 겪었다. Promise.all의 무분별한 사용이 원인이었고, p-limit 라이브러리로 동시성을 제어해 해결했다.
2018년 3월 16일
Python
Python 멀티프로세싱으로 크롤러 성능 개선
단일 스레드로 동작하던 크롤러의 성능 문제를 멀티프로세싱으로 해결했다. GIL 우회와 프로세스 간 통신 처리 방법을 정리했다.
2018년 2월 22일
Node.js
Node.js 비동기 처리 중 발생한 UnhandledPromiseRejection 디버깅
프로덕션 환경에서 간헐적으로 발생하던 UnhandledPromiseRejection 경고를 추적했다. Promise 체인에서 에러 핸들링을 누락한 부분을 찾아 해결한 과정을 기록한다.
2018년 2월 19일
Python
Python 딕셔너리 기본값 처리 패턴 정리
API 응답 파싱 작업 중 KeyError 처리가 반복되어 딕셔너리 기본값 처리 방법들을 정리했다. get(), setdefault(), defaultdict() 각각의 사용 케이스를 비교한다.
2018년 2월 14일
Node.js
Node.js 스트림으로 대용량 CSV 파일 처리하기
500MB짜리 CSV 파일을 메모리에 한 번에 올리다 서버가 뻗었다. Node.js 스트림을 사용해 메모리 사용량을 1/10로 줄이고 안정적으로 처리한 방법을 정리했다.
2018년 2월 3일
Python
Python 멀티프로세싱으로 데이터 처리 성능 개선
대량의 이미지 리사이징 배치 작업이 너무 오래 걸려 멀티프로세싱을 도입했다. CPU 바운드 작업에서 GIL 제약을 우회하면서 처리 시간을 1/4로 단축할 수 있었다.
2018년 1월 25일
Golang
Go에서 context를 이용한 goroutine 종료 패턴
Node.js 백엔드를 Go로 마이그레이션하면서 goroutine 관리 문제를 겪었다. context 패키지를 활용해 안전한 goroutine 종료 패턴을 정리했다.
2018년 1월 15일
Previous
1
More pages
35
36
37
38
39
More pages
43
Next
카테고리
Builder.shin