최근에 부쩍 모놀리틱 아키텍쳐에서 MSA 기반의 아키텍쳐로 마이그레이션하는 기업들을 자주 볼 수 있습니다. 이 때, 가장 중요한 것은 RDBMS를 사용하느냐 NoSQL 계열의 DBMS를 사용하느냐에 따라 이런 기준을 크게 구분할 수 있습니다. 그래서 이번 글에서는 MSA로 넘어가기 위해 어떤 과정들을 고민해보고, JPA를 사용하는 입장에서 어떻게 시도해봄직만 한지 구분을 지어보려고 합니다. 제 기준으로 위에서 얘기한 바와 같이 크게 2가지 부류로 나뉩니다. RDBMS(MySQL, Oracle, MSSQL, PostgreSQL 등) NoSQL(Redis, Cassandra, MongoDB 등) 여기서는 개발 환경이나 프레임워크, 언어에 따라 그 종류도 다양해질 수 있습니다. Java or Kotlin 계열..

이번에 소개드릴 글은 인프랩(inflab)이라고 하는 개발자와 IT테크 부분의 강의 플랫폼인 인프런의 연구소에서 올려주신 글입니다. 스타트업 특징 상 서버를 사내에 구축하는 것이 아닌 클라우드 환경에서 사용하는 곳이 정말 많은데요, 이유는 장비가 정말 고가이고 관리하는 것이 어렵기 때문입니다. 장비를 구매하더라도 일일히 세팅을 해주어야 하는 번거로움 및 네트워크를 관리하는데 시간이 엄청나게 소요되는 부분이 있습니다. 그렇기 때문에 대부분 스타트업은 장비를 구매하는 대신 아마존 웹 서비스 (AWS) 클라우드 플랫폼을 많이 사용하곤 하는데요, 여기에도 물론 비용이 발생합니다. 다만 어떻게 사용하느냐에 따라 효율적으로 비용을 관리하고 제어할 수 있게 되는 부분이 있죠. 아래의 글은 제가 지금까지 블로그를 보면..
오늘은 짧게 리눅스 명령어를 사용하면서 단축어를 만들 수 있는 기능을 설명드리고자 합니다. 쉽게 사용하면 모든 키워드 내용 앞에 alias=를 붙여서 사용하면 됩니다. 간단히 예시를 들어서 설명해보겠습니다. /bin/sh ./deploy.sh 을 shd라는 명령어를 통해서 사용하고자 할 때 ----- $ alias shd="/bin/sh ./deploy.sh" 그런 다음 shd+Enter를 누르면 sh 명령어로 deploy.sh 파일을 실행하는 것을 확인할 수 있습니다. 참고한 링크 : https://www.makeuseof.com/ways-to-shorten-linux-commands/ 4 Ways to Shorten Linux Commands and Save Time Improve your termi..

이번 글은 우아한 테크코스에서 작성한 글 중 JPA Fetch Join에 관한 글입니다. JPA는 기본적으로 제공되는 쿼리에서 한계가 있기 때문에 QueryDSL이라는 의존성을 주입하여 더 상세하고 복잡한 쿼리를 생성해내고, 해당 엔티티의 Repository를 구현한 RepositoryImpl과 같은 형태로 사용하고 있습니다. 그래서 복잡한 파라미터 혹은 조인절이 들어가는 경우 대부분 QueryDSL내에서 로직화 시키고, 파라미터 별 분기 내용과 기존에 사용했던 쿼리를 버전 관리용도로 사용하기도 적합한 우수한 성질을 지녔습니다. 하지만 그럼에도 불구하고 QueryDSL 또는 JPA를 사용하는 와중 Fetch ON 이 되어도 데이터 조회가 이상하게 되거나, 데이터가 오히려 삭제가 되는 문제가 종종 발생하는..
글을 읽어보다가 이해하기 어렵지 않게 글을 작성해주신 우아한테크코스(배달의 민족의 우아한형제들 그룹 내 프로그램)에게 감사의 말을 표시합니다. https://tecoble.techcourse.co.kr/post/2023-11-06-zero-downtime-deployment-2/ 데이터베이스 복제하기(리플리케이션) 2 - 테코와 알아보는 대규모 데이터 관리 테코의 고민 2 - 이벤트에 어떤 내용을 기록해야 해? GTID… tecoble.techcourse.co.kr 여기서는 데이터를 기록하는 시점에서 사용하는 UUID, RAND 와 같은 내용부터 시작하여 SQL 실행, 그리고 데이터가 레플리카로 복제되는 단위동안에 일어나는 액션들과 그 구성들에 대한 구체적인 기술이 되어있어서 MySQL 엔진에 관심이 많..
네이버, 카카오, 구글로 로그인하는 방법을 Spring Security OAuth를 활용하여 백엔드 시스템에서 구현한 내용을 구체적으로 묘사한 글입니다. https://junhyunny.github.io/java/design-pattern/spring-boot/multiple-sns-login-with-spring-security-oauth2-client/ Multiple SNS Login with Spring Security OAuth2 Client junhyunny.github.io
오늘은 아래 글을 토대로 조인 쿼리의 성능과 그에 대한 내용을 다뤄보았습니다. https://tecoble.techcourse.co.kr/post/2023-10-09-join-query-vs-multiple-quries/ 어떤 경우에 한 방 조인 쿼리와 여러 개 쿼리 분리를 고려할 수 있을까? … tecoble.techcourse.co.kr 조인을 섞은 한방 쿼리와 쿼리 여러 개를 분할해서 전송시키는 것에 대한 차이를 적어두었는데, 이것은 데이터의 양과 시스템의 환경에 따라 맞는 것으로 세팅해줘야한다는 것을 알았습니다. 분할된 쿼리로 호출해야 하는 경우 - 로그성 테이블처럼 데이터 양이 많은 경우 - FROM 절에 들어가는 테이블에서 데이터의 양이 많고 인덱스가 걸린 경우 - EXPLAIN 절을 활용하여..

이전에 올라온 글이지만, 리팩터링에 굉장히 유용한 정보들을 많이 알려주시는 내용이 있어 공유드리려고 글을 작성하게 되었습니다. 카카오톡은 우리가 많이 사용하는 앱이지만 그 정보에 대해서는 내부 관계자를 제외하는 공개되어있지 않아 많은 분들이 궁금해했을 부분이라고 생각합니다. 해당 리팩터링 영상은 카카오의 톡메시지 파트의 Soo 님의 강연입니다. https://tech.kakao.com/2023/08/01/techmeet-java-app-server-refactoring/ 카카오톡 Java App Server Refactoring 후기 / 제2회 Kakao Tech Meet 7월 18일에 진행한 제2회 Kakao Tech Meet의 발표 영상과 발표자 이야기를 공유합니다.https://youtu.be/ES..