리서치 7

[Springboot] Jpa 프로젝트에 jOOQ 도입

jOOQ를 도입하게 된 배경 현재 진행하고 있는 프로젝트의 기술스택 중 이번 게시글과 연관된 기술들과 버전은 아래와 같습니다. Springboot 2.6.3 Java 1.8 spring-boot-starter-data-jpa (기본 키 생성 전략: IDENTITY) MariaDB 10.9.2 버전 QueryDSL 5.0.0 버전 Maven 프로젝트 내 기능 중 대용량 엑셀 업로드 기능과 json import 기능이 있는데 데이터가 커질수록 병목현상이 심해지는 것을 발견할 수 있었습니다. (json import의 경우 멀티 쓰레드 방식으로 과장님이 어느 정도 해결하시긴 하셨습니다.) 대용량으로 업로드할 때 entity를 하나하나 저장할 경우 불필요한 DB 커넥션이 많이 생기므로 1000개씩 묶어서 bulk..

리서치 2023.10.03

[Springboot] 멀티 데이터소스 (MyBatis, JPA)

개요 최근 회사 업무를 하며 멀티 테넌시 아키텍처를 적용한 서비스를 개발했습니다. 요구사항은 아래와 같았습니다. 사용자 로그인 정보를 토대로 해당 tenant에 매핑된 데이터베이스와 연동 런타임에 테넌트 추가 가능 즉, 재기동 없이 동적으로 사용자와 사용자가 매핑된 데이터소스를 추가 가능 테넌트를 추가할 때 데이터베이스 및 테이블 자동 생성 클라우드 시장이 성장함에 따라 멀티 테넌시를 지원하는 XaaS가 늘어날 것으로 판단되기 때문에 해당 내용을 다루고 싶었고 생각보다 코드 레벨까지 설명해 주는 글이 별로 없었기 때문에 개인적으로 정리해 보겠습니다. 멀티 테넌시 아키텍처 중 멀티 데이터소스를 집중적으로 다룰 예정이고 기타 예외처리 및 인증/인가 설정은 주제에 벗어나기 때문에 생략하도록 하겠습니다. (구현..

리서치 2023.03.25

[MSA] CQRS 패턴과 실제 적용 사례

개요 이전 게시글 https://jaimemin.tistory.com/2200에 이어서 이번 게시글에서도 인상 깊게 본 MSA 관련 유튜브 영상을 요약/정리해보겠습니다. [MSA] 우아콘 2020 배달의민족 마이크로서비스 여행기 정리 개요 MSA 관련 리서치를 맡게 돼서 공부하는 도중 김영한 강사님이 발표해주신 우아콘 2020 영상을 인상 깊게 봐서 간단하게 요약/정리했습니다. 인프런 강의를 시청할 때도 느꼈지만 김영한 강사 jaimemin.tistory.com 이번에 내용 정리할 영상은 이벤트 소싱 아키텍처 중 CQRS 패턴에 관련된 영상이고 기존 게시글과 마찬가지로 배달의민족 우아콘 영상을 요약 및 정리했습니다. (우형에는 훌륭한 개발자들이 진짜 많네요.. 넷카라쿠배당토 인정합니다.) 아래의 내용이 ..

리서치 2022.10.31

[MSA] 11번가 Spring Cloud 기반 MSA로의 전환 정리

개요 이전 게시글 https://jaimemin.tistory.com/2200에 이어서 이번 게시글에서도 인상 깊게 본 MSA 관련 유튜브 영상을 요약/정리해보겠습니다. [MSA] 우아콘 2020 배달의민족 마이크로서비스 여행기 정리 개요 MSA 관련 리서치를 맡게 돼서 공부하는 도중 김영한 강사님이 발표해주신 우아콘 2020 영상을 인상 깊게 봐서 간단하게 요약/정리했습니다. 인프런 강의를 시청할 때도 느꼈지만 김영한 강사 jaimemin.tistory.com 이번 영상은 Naver D2에서 올려준 [11번가 Spring Cloud 기반 MSA로의 전환]이고 기존의 거대 Monolithic 한 프로젝트를 2017년부터 MSA 기반으로 마이그레이셔하면서 알게 된 기술적 내용과 현재 어떻게 시스템을 어떻게..

리서치 2022.10.29

[MSA] 우아콘 2020 배달의민족 마이크로서비스 여행기 정리

개요 MSA 관련 리서치를 맡게 돼서 공부하는 도중 김영한 강사님이 발표해주신 우아콘 2020 영상을 인상 깊게 봐서 간단하게 요약/정리했습니다. 인프런 강의를 시청할 때도 느꼈지만 김영한 강사님은 어려운 개념을 친절하면서 이해하기 쉽게 설명하시는 능력을 소유하신 것 같습니다. MSA에 관심 있으신 분들은 풀 영상 시청 추천드립니다. https://www.youtube.com/watch?v=BnS6343GTkY&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9CTech [우아콘 2020] 배달의민족 마이크로서비스 여행기 1. 마이크로 서비스 전환 전 2015년 하루 주문 수 5만 이하 MS SQL + PHP, ASP 대부분 루비 DB(MSSQL) stored procedure 방식 사용..

리서치 2022.10.27

[tus protocol] 재개 가능한 파일 업로드를 위한 오픈 프로토콜

개요 개발 진행 중인 프로젝트에서 대용량 파일 업로드 기능을 구현해야 하는데 요구사항은 아래와 같았습니다. 대용량 파일을 브라우저에서 서버로 한 번에 업로드할 경우 OOM(Out of Memory Exception)이 발생할 수 있으므로 파일을 청크 단위로 끊어서 업로드할 수 있어야 함 업로드하는 도중 네트워크 오류 혹은 휴먼 에러로 인해 업로드 요청이 끊기더라도 재요청 시 이어서 업로드할 수 있어야 함 (Resumable) 찾아본 결과 위에서 언급한 두 가지 요구사항을 충족하는 라이브러리가 있었고(tus-js-client, tus-java-client) 이 둘은 모두 tus protocol을 기반으로 구현이 되어 있었습니다. 따라서, 저는 이번 프로젝트에서 해당 라이브러리들을 적용하기로 했고 이번 게시..

리서치 2022.10.06

[SpringBoot + Fastexcel] 대용량 엑셀 생성 및 다운로드

개요 여태까지 엑셀 생성 및 다운로드 기능을 구현할 때 Apache Poi 라이브러리를 사용했었고 이와 관련하여 게시글을 여러 번 남겼습니다. https://jaimemin.tistory.com/2069 [SpringBoot] 대용량 엑셀 파일 생성 및 다운로드 삽질기 개요 작년에 이어 올해도 엑셀 파일 생성 및 다운로드 기능을 담당하게 되었습니다. https://jaimemin.tistory.com/1889 [SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook 개요 기존에 Excel 생성 및 다운.. jaimemin.tistory.com Apache Poi 라이브러리가 보편적으로 사용됨에 따라 레퍼런스도 많고 주기적인 버전업이 이루어졌기 때문에 지금까지 해당 라이브러리를 사용해왔..

리서치 2022.09.14