
Flyway + TestContainers 기반 jOOQ 시작하기
jOOQ? QueryDsl? The easiest way to write SQL in Java jOOQ jOOQ Learn Spring 기반 웹 애플리케이션을 개발할 때 거의 대부분 JPA (Java Persistence API)라는 ORM을 선택한다 JPA를 활용해서 개발을 하다가 DSL을 통해서 동적 쿼리를 편리하게 작성하기...
jOOQ? QueryDsl? The easiest way to write SQL in Java jOOQ jOOQ Learn Spring 기반 웹 애플리케이션을 개발할 때 거의 대부분 JPA (Java Persistence API)라는 ORM을 선택한다 JPA를 활용해서 개발을 하다가 DSL을 통해서 동적 쿼리를 편리하게 작성하기...
시나리오 요구사항에 대한 로직을 작성하다가 아래와 같은 생각이 들었다고 하자 너무나도 많은 흩어진 부분에서 공통적으로 적용되는 로직 존재 이러한 로직을 AOP(Aspect Oriented Programming)를 활용해서 공통 모듈화 위의 로직은 All or Nothing을 지켜야 하기 때문에 Transaction 처리가 필요하다고 가...
Hash Function 데이터를 효율적으로 관리하기 위해서 임의의 길이를 가진 데이터 -> 고정된 길이의 데이터로 매핑해주는 단방향 함수 특정 데이터에 대한 Hash Function을 적용해서 도출된 값을 Hash라고 한다 인터스텔라 -> 20033 헬로우월드 -> 12345 010-1234-4321 ->...
Race Condition 멀티 쓰레드 프로그래밍을 하게 된다면 Race Condition이라는 말은 누구나 한번쯤은 듣는 단어이다 그러면 Race Condition이란 무엇일까? 멀티 쓰레드 환경에서 공유 자원에 대한 Write Operation을 진행할 때 순서나 여러 조건에 의해서 결과값에 영향을 줄 수 있는 상황 여기서 결과값에...
Class Loader 자바 소스코드가 실행되는 과정은 다음과 같다 자바 컴파일러가 소스 코드(.java) -> 바이트 코드(.class)로 컴파일 생성된 바이트 코드는 완전한 기계어가 아니고 JVM이 이해할 수 있는 레벨의 코드 컴파일된 바이트 코드를 필요한 시점에 Class Loader가 JVM ...
개선 포인트 스터디 모집부터 진행 관리까지 하는 Study With Me 웹 애플리케이션에는 여러가지 기능이 있지만 본 포스팅에서 개선할 기능은 스터디 주차 생성이다 @RestController @RequiredArgsConstructor @RequestMapping("/api/studies/{studyId}/weeks") public class ...
문제 상황 SPOF 구조를 해결하고 부하 분산, 가용성, 응답 최적화, ..등을 위해서 WAS Scale Out을 진행하였다 하지만 서버 로그를 살펴보다가 문제가 하나 발생한것을 파악했다 @Component @RequiredArgsConstructor public class UpdateWeeklyAttendanceScheduler { ...
본 프로젝트 - Study With Me의 메인 페이지에서 가장 많이 조회가 될 거라고 예상되는 스터디 조회에 대한 부하 테스트를 진행하고 여러가지 튜닝을 해보려고 한다 스터디 조회에는 총 3가지 조건이 존재한다 등록날짜 좋아요 개수 리뷰 개수 튜닝에 앞서 트래픽 트래픽이 많다? 대규모 트래픽이다?의 정의가 뭘까? ...
이전 포스팅에서 기본적인 DBCP에 대한 개념과 HikariCP의 핵심 컴포넌트에 대한 기본적인 개념을 알아보았다 본 포스팅에서는 HikariCP에서 실질적으로 DB Connection을 다루는 메커니즘에 대해서 알아볼 것이다 HikariCP 주요 필드 필드 설명 ...
DB Connection Web Application Server(WAS) <-> DB Server간에 통신을 위해서는 TCP/IP Connection을 맺어야 한다 WAS에서는 적절한 DB Driver를 통해서 DBMS에 Connection 요청을 진행한다 DB Driver는 WAS <-> DBMS ...