본문 바로가기
728x90

Spring23

[Spring] HttpRequest부터 HttpResponse까지 동작 과정 어느 분의 기술 블로그를 보게 되었는데 글 제목이 클라이언트 요청부터 서버 응답 흐름에 대한 설명이었다. 그때 엇?!! 나는 스프링으로 서버 개발하는데 설명을 제대로 풀어나가지 못할 것 같았다. 프레임워크에 너무 의존한 탓도 있었고 필요한 부분만 구글 검색해서 알아보는 습관이 생활화되었기 때문인 것 같다. 숲을 봐야 하는데 나무만 본 느낌이랄까? 아무튼 내 머릿속을 정리할 겸 기억할 겸 공부할 겸 기록장에 정리하는 시간을 가져보자. 출발지는 클라이언트 목적지는 Spring Framework의 @RequestMapping Controller Method가 될 것이다 이것이 편도이고 왕복을 하는 과정을 정리해보려고 한다. 출발해보자! 1. 가까운 DNS(Domain Name System) 서버를 통해 호스트.. 2022. 11. 12.
[JPA] N+1 문제 1. N+1 문제란? JPA에서 요청이 1개의 쿼리로 처리되길 기대했는데 N개의 추가 쿼리가 발생하는 현상으로 1:N 또는 N:1 관계를 가진 Entity 조회할 때 발생하게 된다. 이 문제는 서버와 DB 간의 악영향을 끼치는 큰 문제인데 10만, 100만 개 등의 많은 양의 데이터를 N+1의 DB 조회가 일어난다고 가정해보면 분명 서비스의 큰 문제가 발생하게 될 것이다. 정말 무섭다. 예전에 N+1 문제로 한참을 고생했던 기억이 있어서 다시 되새길 겸 N+1문제에 대해 다시 정리해보려고 한다. (그만큼 중요하다고 생각되는 문제) 2. Test 설정 테스트 위해 table 2개를 만들었다. note와 memo table이고 두 table에 관계는 1:N 관계로 간단하게 설정하였다. note table i.. 2022. 11. 12.
[Spring] Javers로 자바 객체 비교 쉽게 하자! Javers는 자바 객체 비교 라이브러리이며 비교할 두 객체 변수들의 Diff 정보를 간단하게 얻을 수 있다. Javers는 많은 기능들을 지원하는 것 같다 RDB Repository의 Entity의 변경사항을 인지할 수도 있고 직접 두 객체를 compare 함수를 이용하여 비교 정도를 획득할 수도 있다. 이번 포스팅은 Javers의 Compare 함수를 이용하여 두 객체 비교 하는 방법에 대해 기록해보도록 하자. Javers Document 참고 Gradle Dependancies implementation group: 'org.javers', name: 'javers-core', version: '6.7.0' Data Class public class Person { private String nam.. 2022. 11. 11.
[Spring] Amazon MQ (Active MQ) : Virtual Destinations 기능 Active MQ Queue 메시지 전달 방식에 대한 새로운 요구조건이 발생되어 조건을 충족시키기 위해 Active MQ의 Virtual Destinations 기능을 사용해서 해결한 내용을 기록하고자 한다. Message 방식을 Queue로 되어 있었고 Round Robin 방식으로 Consumer가 한 번씩 돌아가며 Message를 받아 처리하고 있는 구조였다. (Active MQ Consumer 운영 포스팅을 참고) Producer와 Consumer는 서버가 분리되어 있지만 같은 제품 서비스이기도 했고 Producer에서 보내는 Message는 같은 제품 서비스의 Consumer 서버만 수신받도록 되어 있었다. Message 수신에 대한 요구 조건 위의 이미지와 같이 A 제품 서비스의 Consume.. 2022. 11. 10.
300x250