[Node.js] Axios에서 발생하는 socket hang up 에러
·
TypeScript & NodeJs
최근 운용중인 서버 중 한 곳에서 `socket hang up` 에러가 발생했다.여러 시행착오를 거쳐 결국 문제를 해결하였고, 해당 해결법에 대한 한국어 레퍼런스는 없길래 기록하고자 한다. 환경 먼저 서버에서 HTTP Client로는 Axios / node 18 LTS 버전을 사용하고 있다.`hang up`은 통상적으로 서버가 실행중이지만, 어떤 요청 시에 아무런 응답이 없다는 것을 의미한다.`socket hang up`이라는 에러 역시 통신을 시도하는 동안 통신이 실패한 것을 의미하고, 응답이 오지 않아서 발생한 에러로 유추할 수 있었다. 에러가 발생한 코드는 다음과 같은 구조로 이뤄져 있다.export async function callBack (resData) {try { const respo..
[RDBMS] INDEX에 대하여
·
Database
Introduction 책에서 `목차`를 본 적이 있을 것이다.이것은 왜 존재하는 것일까?정보를 찾을 때 원하는 카테고리를 목차에서 먼저 찾고, 목차에 있는 페이지 번호를 통해 원하는 정보를 더욱 빠르게 찾을 수 있다. 그렇다면 만약 책에 목차가 존재하지 않는다면 어떨까? 내가 찾고자 하는 내용이 책의 어느 부분에 있는지 알 수 없기 때문에 책의 첫 페이지부터 찾기 시작해야 된다.그 내용이 책의 마지막에 있다면, 최악의 경우 책의 모든 페이지를 봐야만 원하는 내용을 찾을 수 있는 것이다.Index란?  위 내용에서 알 수 있듯 책에서의 목차와 같은 이유로 DB에 인덱스가 존재하는 것이다.책에서도 목차가 따로 존재하는 것처럼 데이터베이스의 인덱스도 메모리에 일정 공간을 사용해서 저장하게 된다.인덱스는 데이..
기술 블로그, 첫 걸음
·
그늘
최근 SIPE라는 개발 동아리에 들어갔다.개발자들이 한데 모여 교류하는 동아리인데, 첫 미션으로 `블로그 꾸준히 쓰기`를 골랐다.12월 초까지 총 3개의 포스팅을 진행해야 한다.오전에 회사 동료분과 대화하다가, 블로그에 대해 얘기했다.농담으로 나온 개발자의 블로그에 대한 정의는 다음과 같다.`퍼블리싱된 오답노트`  개발을 하기 전에 네이버 블로그를 썼던 경험이 있다.당시엔 "누군가에게는 도움이 되었으면 좋겠다." 하는 마음에 작성했던 건데,약 5년이 지난 지금까지도 꾸준히 내 글을 찾아주고, 종종 댓글도 달아주고 하신다. (링크)이번 활동을 계기로 꾸준히 블로그를 작성해보고 싶다.회사에 인턴분들이 오실 때마다 항상 "지금이라도 늦지 않았으니 꾸준히 기술블로그 써보세요." 라곤 하는데이제 나도 더 이상 바..
[Go] MongoDB 쿼리 최적화를 통한 서버 성능 개선
·
Go
현재 운용중인 Go 서버에서는 `gRPC` 통신과 `MongoDB` 데이터베이스를 사용한다.그렇기에 DB에서 데이터를 가져온 뒤 Protobuf 메시지로 매핑하여 해당 데이터를 Response에 담아 반환한다. 최근 MAU가 급격하게 상승하고, 특정 프로필에서 가져오려던 데이터가 기하급수적으로 많아져서 성능 저하가 발생했기에 리펙토링을 진행하였다.  가장 시간이 많이 걸리던 부분은 유저가 타 유저에게 보내거나 받은 데이터를 조회하려고 할 때해당 카드의 Sender와 Receiver 프로필을 조회하게 되는데 여기에서 몇 가지 문제점을 발견했다.  1. users 컬렉션 내부 데이터들의 Referencing 부재- 특정 Profiles 내 Object 값만 조회하기 때문에 쿼리가 동작할 때 모든 데이터를 볼..