개요 일정에 쫓겨 프로젝트를 진행하다보면, 사용된 주요 라이브러리의 버그로 예상하지 못한 이슈에 봉착할 때가 있다. 이 경우, 선택지는 2개인데 첫번째, 라이브러리 저장소를 포크해서 이슈를 수정한 제작자에게 PR을 요청하고 기다리는 것, 두번째, 일단 급한대로 내가 직접 고쳐서 로컬 .JAR로 빌드하는 것이다. 이번 글에서는 두번째 방법을 위한 Maven 기반 프로젝트에 로컬 .JAR 파일을 추가하는 방법을 설명하고자 한다. 라이브러리 커스텀 빌드 아래는 이슈를 수정할 라이브러리를 클로닝하여 커스텀 빌드하는 예이다. # JobRunr 라이브러리 저장소 클로닝 $ git clone https://github.com/jobrunr/jobrunr # 이슈 수정 후 커스팀 빌드 # 생성된 .jar 파일은 내 프..
개요 HikariCP는 현재 Spring Boot에서 기본으로 채택하고 있는 경량이자 고성능의 JDBC 커넥션 풀 라이브러리이다. 물리 데이터베이스 노드와 연계되다보니 운영 환경에서 다양한 이슈가 발생하게 되는데 정확한 원인 식별과 문제 해결을 위해 HikariCP의 로그 레벨을 설정하는 방법을 설명하고자 한다. 로그 레벨 조정 운영체제 환경 변수로 전달할 경우 아래와 같이 설정하면 된다. LOGGING_LEVEL_COM_ZAXXER_HIKARI_HIKARI_CONFIG=DEBUG LOGGING_LEVEL_COM_ZAXXER_HIKARI=TRACE 프로젝트 내의 application.yml 파일로 설정할 경우 아래와 같이 설정하면 된다. logging.level.com.zaxxer.hikari.Hikar..
개요 MySQL 데이터베이스의 Master-Slave 레플리케이션은, 조회만 발생하는 트랜잭션은 복수개의 Slave 노드로, 조회 뿐만 아니라 데이터베이스 변경점이 발생하는 트랜잭션은 1개의 Master 노드로 요청되어야 한다. 이번 글에서는 Spring Boot, JPA 환경에서 커넥션 풀을 read-write, read-only로 분리하는 방법을 설명하고자 한다. 특히, Amazon Aurora MySQL의 Single-Master 레플리케이션을 사용할 경우, 최대 15개의 레플리카 인스턴스를 운영할 수 있는데 애플리케이션 레벨에서 read-only 트랜잭션을 레플리카 엔드포인트를 바라보도록 설정하면 조회 성능을 크게 향상시킬 수 있다. 기본 흐름 어노테이션에 따라 커넥션 풀을 분기해주는 클래스를 직..
개요 Spring Boot는 Java, Kotlin 진영에서 가장 많이 사용되고 있는 프레임워크이다. 이름에서 드러나듯이 국내에서 가장 사랑 받는 Spring 프레임워크를 기반으로 한다. 경쟁자로 역시 뒤지지 않는 막강한 기능의 Dropwizard가 존재하지만 국내에서는 친숙하지 않은 JAX-RS를 기반으로 하여 앞으로도 국내에서 많이 쓰이지는 않을 것으로 생각된다. (나는 2015년 국내 모 영화 포탈 서비스의 일부를 JAX-RS 기반의 Jersey로 개발하며 상당한 생산성 향상을 경험한 적이 있다. 문제는 후에 담당한 운영 인력이 익숙치 않은 문법에 어려움을 겪었다고 한다.) 이후로는 Kotlin + Spring Boot 조합으로 소속한 회사의 백엔드 서비스를 개발하고 있는데 매번 그 편리함에 감탄하..
- Total
- Today
- Yesterday
- JHipster
- CentOS
- 알뜰폰
- java
- Kendo UI
- 로드 바이크
- 구동계
- bootstrap
- 로드바이크
- kotlin
- jpa
- Kendo UI Web Grid
- node.js
- Eclipse
- jstl
- 평속
- Tomcat
- Docker
- maven
- JavaScript
- chrome
- DynamoDB
- 자전거
- Spring MVC 3
- graylog
- MySQL
- 태그를 입력해 주세요.
- spring
- jsp
- Spring Boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |