분류 전체보기

Backend

스프링부트, 빈의 Lazy 로딩 (@Lazy)

스프링부트로 개발하다가, 빈을 분명히 등록했는데 실행만 시키면 빈을 찾을 수 없다는 에러가 떠서 한참을 고민하다 보니, 빈 등록 시점의 문제라는 걸 알게 되었습니다.빈을 순차적으로 등록하는 과정 중 아직 등록되기 전의 빈을 사용해야 하는 코드가 먼저 실행되었던 것입니다.빈의 로딩을 사용시점으로 미루는 @Lazy 어노테이션으로 해결했는데, 그래서 이번 글에서는 @Lazy에 대해 적어보았습니다. 일반적으로 Spring은 애플리케이션이 시작될 때 모든 빈을 생성하고 초기화합니다.이때 애플리케이션의 규모가 커지면 빈의 수가 많아지고, 초기화 시간이 길어져 앱의 시작 속도가 느려질 수 있습니다.이러한 문제를 해결하는 방법 중 하나가 바로 @Lazy 어노테이션을 활용하는 것입니다. @Lazy 어노테이션을 사용하면,..

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 애플리케이션을 개발할 수 있도록 설계되어 있습니다. 영어 강의로 되어 있지만, 한글 자막이 정말 잘 달려있어 양질의 영어 강의를 한글 자막과 함께 볼 수 있다는 것이 큰 장점입니다. 강..

Danna 다나
'분류 전체보기' 카테고리의 글 목록