전체 글

Choices nudge me onward, towards Dannaward
Backend

DB Connection Pool에 대해

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

Backend

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

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

생각

가장 솔직하게, 내가 원하는 next career는?

2024년을 마무리하며,최근 며칠 간 제 머릿속을 잠식했던 커리어에 대한 고민, 특히 다음 스텝에 대한 고민을 글로 정리해보려 합니다. 제 자신에게 가장 솔직할 수 있도록, 지금부터는 평어체로 적어 내려가겠습니다. - 정리하면 next step에 대한 고민은 크게 몇 가지의 굵직한 갈래들로 표현해 볼 수 있을 것 같다.1. 로봇을 진지하게 공부해보고 싶다.2. 글로벌 사업을 하고 싶다.3. 내가 정말 빅테크를 원하는가? 최근, 이 세 가지에 대한 생각이 갑자기 눈덩이 불어나듯이 커지면서 다른 일들에 집중하기 어려울 정도가 되었다는 것을 느끼고 있었다.그래서 생각 정리도 할 겸, 2024를 마무리하며 2025의 계획, 더 나아가 더 먼 미래의 그림도 그릴 겸, 지금의 내가 생각하는 제 next career..

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..

생각

커리어 회고, 그리고 프론트엔드 개발자였던 내가 백엔드로 직무 전환을 한 이유

지금 회사를 다니기 시작한 지는 이제 만 3년이 되어가고, 만 2년이 된 시점 즈음에 백엔드로 직무 전환을 했다.오늘은 그 이야기를 한 번 해보려 한다. 어떤 일들이 있었고, 어떤 가치를 따라 직무 전환을 하게 되었는지에 대한 이야기다. 커리어의 흐름커리어의 시작첫 개발 커리어는 카카오브레인에서 iOS 개발 인턴으로 시작했다.물론, 그 전에 iOS 프리랜서로 대기업에 소속되어 외주를 몇달 하기도 했지만 (iOS 개발자를 인하우스로 두지 않는 회사였다.), 내가 생각했을 때 정식으로 팀 내에 소속되어서 개발을 시작하게 된 건 인턴 때라고 생각하고 있다. 개발을 시작하게 된 것도 우연이었지만, iOS로 커리어를 시작한 것도 순전히 운이었다.대학에 다니면서 이제 슬슬 코테 준비를 해봐야지 하는 마음으로 지원했..

개발 잡기술

[Udemy 강의 후기] Spring Boot 3 & Spring Framework 6 마스터하기!

저번 강의에 이어, 이번에도 글또라는 개발자 글쓰기 커뮤니티와 유데미가 협력하여 강의 지원을 받아 강의를 보고 후기를 적어보려 합니다. 강의 링크: https://www.udemy.com/course/spring-boot-and-spring-framework-korean 이번에 지원 받은 강의는 "Spring Boot 3 & Spring Framework 6 마스터하기!"라는 강의입니다. 이 강의는 최신 Spring Boot와 Spring Framework 기술을 다루면서, 웹 개발자가 시장에서 요구하는 현대적인 Java 애플리케이션을 개발할 수 있도록 설계되어 있습니다. 영어 강의로 되어 있지만, 한글 자막이 정말 잘 달려있어 양질의 영어 강의를 한글 자막과 함께 볼 수 있다는 것이 큰 장점입니다. 강..

개발 잡기술

svg에 호스팅 된 image url를 넣기 위한 사투 (용량과의 전쟁)

사이드 프로젝트를 하면서 프로젝트 소개와 마케팅을 위한 랜딩 페이지를 만드는데, SEO가 필요 없는 단순 정보전달성 섹션은 쿠팡의 제품 상세설명 이미지처럼 따로 퍼블리싱 없이 피그마에서 그대로 이미지로 추출해 웹페이지에 박아넣고 싶은 욕구에 휩싸였다. 프로젝트 팀원들과 랜딩페이지 개발을 완성하기 전에는 카페에서 아무도 못 나간다고 약속한 상태였기 때문에 빠른 퇴근만큼 설레는 일은 없었다. 얼른 이미지로 박아 넣고 이 카페에서 나가겠다는 집념 하나로 시작됐다. 솔직히 길어봤자 5분이면 끝날 줄 알았다. 문제는 5초만에 발생했다. png 이미지가 포함된 한 페이지를 svg로 추출했는데, 용량이 무려 25메가나 됐다. svg 파일을 조금 뜯어보니, 사이즈가 큰 이미지 파일이 base64로 그대로 인코딩 되어 ..

Danna 다나
toward, dannaward