Backend

Backend

DB Connection Pool에 대해

DB Connection Pooling이란?스프링이 워낙 추상화가 잘 되어 있다 보니 스프링을 쓰는 사람들은 DB 그거 그냥 쿼리로 부르면 되는 거 아니야? 라고 생각하겠지만,아무것도 없는 node나 기타 환경에서 개발해본 사람들은 db connection 관련 설정을 한 번쯤은 해 보았을 것이다. 애플리케이션이 DB에 접근하기 위해서는 우선 DB와의 connection을 열고 (우선 가야할 길을 닦고) DB에 접근해야 한다. (건물에 들어가야 한다) 그런데, 이 길을 닦는 일이 꽤나 비싼 처리여서 (집에서 마트에 가려고 매번 새로 아스팔트를 깔아야 하는 기분이려나)DB에 접속할 때마다 커넥션을 맺어주는 건 부하가 크게 생길 수 있다. 그래서 connection pooling이라는 개념이 등장했는데,미..

Backend

사람들은 왜 자바가 아닌 코틀린에 열광할까?

저는 회사에서 백엔드 개발을 할 때 코틀린 스프링을 씁니다.자바를 썼던 기억은 학부 때 객체지향 수업을 들었을 때와 스프링에 입문하며 김영한 강사님의 스프링 강의를 들을 때뿐이었습니다. 그 이후엔 줄곧 코틀린을 써왔고, 주변 소위 '잘한다'는 한국의 백엔드 개발자들은 대부분 코틀린을 쓰고 있었습니다. 그래서 자바로 개발한다는 얘기를 들으면 저도 모르게 아직 그 팀의 기술스택이 충분히 힙하지 않구나 하고 넘겨 짚어버렸던 것 같습니다.자바 하면 왠지 모르게 이클립스 뷰가 떠오르고 굉장히 오래된 이미지가 연상되기도 했습니다. 그러다 문득 궁금해졌습니다.대체 무엇이 내 머릿속에 자바에 대한 이런 인식을 만들어냈을까.그리고 왜 사람들은 코틀린을 쓸까. 코틀린이 만들어진 이유에서부터 그 힌트를 찾을 수 있었습니다...

Backend

Nest.js에서 prisma exception 데코레이터로 깔끔하게 핸들링하기

nest.js 프레임워크에서 prisma라는 ORM을 쓰고 있다가 불편한 점을 하나 발견했습니다.바로 prisma를 다루는 모든 service layer 메서드들에서 각각 prisma exception을 try-catch 하고 있었다는 것입니다.이 과정이 번거롭고 복잡하니 예외처리를 하지 않아 500 에러를 내보내고 있는 케이스도 있을 수 있는 상황이었습니다. 이걸 어떻게 모든 곳에서 간단하게 예외 처리를 할 수 있을까 생각하다가 Nest.js에서 데코레이터도 강력하게 지원하고 있겠다, 데코레이터로 만들어볼까 하고 생각하게 되었습니다. 우선, prisma 문서에서 소개하고 있는 에러 핸들링 방법은 아래와 같습니다.위에서 이야기 한 대로 try-catch로 핸들링 하고 있습니다.import { Prisma..

Backend

WebFlux에서 chunked 스트리밍 request 받기

LLM 모델이 응답을 생성하며 실시간으로 stream으로 보내주면서 스트리밍 요청을 다룰 일이 예전보다 많아진 것 같습니다.오늘은 Spring WebFlux에서 transfer-encoding: chunked 스트리밍 데이터를 request로 받을 수 있게 하기 위해 시도했던 방법들과 난관에 봉착했던 순간들, 결국 어떻게 성공했는지에 대한 이야기를 적어보려 합니다. transfer-encoding: chunkedtransfer-encoding: chunked란?우선 transfer-encoding: chunked가 뭔지 간단히 설명하고 넘어가겠습니다. http header의 많은 종류 중에 transfer-encoding이라는 헤더가 있습니다.https://developer.mozilla.org/en-U..

Backend

Next.js 14와 Firebase로 간단하게 백엔드 API 만들기

항상 백엔드를 간단하게 만들어 보고 싶다는 생각을 가지고 있었습니다. 최근 사이드 프로젝트를 시작하며 이번 기회에 프론트 구현을 위해 쓴 Next.js 위에서 파이어베이스를 활용해 한꺼번에 API를 구현해봤습니다. 원래는 간단하게 백엔드 작업을 할 때 Node.js로 작업한 후 heroku로 배포를 해왔는데, 이번에 하는 방법은 그보다 더 간소화된 방법입니다. 프론트와 별도로 repository를 생성하거나 별도로 배포 작업을 할 필요가 없습니다. 또, 파이어베이스를 활용해 인프라, DB 작업을 정말정말 간단하게 진행할 수 있습니다. 트래픽이 많지 않을 걸로 예상되거나 MVP를 빠르게 만들어 내야 하는 사이드 프로젝트의 경우에 유용한 방식입니다. (저는 실제로 이 방식으로 API 10개 정도 되는 MVP..

Backend

Node.js + TypeScript를 heroku로 배포하기

서버는 항상 배포가 일이다.. 남의 컴퓨터를 쓰는 일은 역시 쉽지 않다. 웹 프론트엔드 개발 후 vercel로 배포를 하면서 버튼 하나로 배포 되는 건 진짜 신세계다 생각하고 있었는데, 몇 달 전 서버에서는 heroku가 간편한 배포를 지원하고 있다는 걸 알게 되었다. https://www.heroku.com 다양하게 커스텀하기에는 한계가 있지만 간편하게 서버를 띄우고 싶을 땐 꽤 유용하다. 무려 https로 배포해준다. 환경 설정 헤로쿠 가입 만약 헤로쿠가 처음이라면 여기로 들어가서 가입하면 된다. 앱 생성 바로 create new app을 눌러 앱을 생성한다. 만약 계정에 앱이 하나도 없는 상태라면 조금 더 큰 버튼으로 떴던 기억이 난다. 어떻게 생겼든 create new app이라고 쓰인 버튼을 눌..

Danna 다나
'Backend' 카테고리의 글 목록