본문 바로가기

Backend/spring

(6)
[spring] offline 환경에서 gradle 빌드 환경 세팅 개요 오프라인 환경(==망분리, 폐쇄망, 내부망, 인트라넷)에서 gradle 프로젝트를 빌드하기 위한 환경 세팅 방법에 대해 작성합니다. 서론 인터넷에 연결되지 않은 환경에서 개발하는 경우가 있습니다. 인터넷 환경에서 spring boot 프로젝트를 구축하는 경우 maven/gradle을 통해 빌드에 필요한 dependency 작성만 하면, 관련된 파일을 받아와서 사용할 수 있습니다. 하지만 폐쇄망에서는 maven repository에 연결할 수 없어서 dependency를 받아올 수 없습니다. 이 문제를 해결하는 방법은 여러 가지가 있습니다. 큰 범위에서 작은 범위 순서로 작성한 해결방법은 아래와 같습니다. 해결방법 1. 외부망과 연결될 수 있도록 해결하기 외부망과 단절된 이유를 찾아서 해결하는 방법입..
[spring] spring boot에서 SQLite를 JPA로 사용하기 1. 개요 spring data jpa를 이용하는 Spring boot 프로젝트에서 SQLite를 사용하는 방법에 대해 작성합니다. 2. SQLite란? 공식사이트 : https://sqlite.org/index.html DB-engines(H2 vs SQLite) : https://db-engines.com/en/system/H2%3BSQLite SQLite는 서버로 띄우지 않고 애플리케이션에 포함되어 사용할 수 있는 DB입니다. DB를 생성하면 파일 하나로 생성됩니다. Spring boot에서는 비슷한 역할을 하는 H2 DB를 쉽게 사용할 수 있어서 SQLite를 잘 사용하지 않습니다. 하지만 SQLite는 DB-engines overall ranking이 10위권 안에 들 정도로 다른 생태계에서는 ..
[spring] spring boot에서 actuator 사용하기 1.spring actuator란 무엇인가 공식문서에는 다음과 같이 기재되어있다. Spring Boot Actuator: Production-ready Features Spring Boot includes a number of additional features to help you monitor and manage your application when you push it to production. You can choose to manage and monitor your application by using HTTP endpoints or with JMX. Auditing, health, and metrics gathering can also be automatically applied to you..
[JPA] N+1 문제와 그 해결법 JPA 1+N problem cases JPA를 이용할 때 발생하는 문제 중 가장 쉽게 접할 수 있는 N+1 문제에 대해 학습합니다. 엔티티 구성 고객과 계좌의 관계로 구성하겠다 고객은 여러 개의 계좌를 가지고 있다. 계좌는 한 명의 고객에만 할당될 수 있다. 계좌는 여러 종류로 함 n+1 문제란? N+1(1+N) 문제는 ORM을 사용하면 가장 쉽게 접할 수 있는 문제 중에 하나이다. 1번 쿼리를 날렸는데 추가로 N번 더 쿼리문을 날려야 하는 상황을 1+N이라고 불린다. 발생 상황 case 1 고객의 계좌 쪽 FetchType이 LAZY 방식일 때 계좌에 접근하지 않으면 쿼리가 발생하지 않는다. 고객 entity를 통해서 계좌에 접근하면 접근하면 쿼리를 날리게 된다. case 2 고객의 계좌 쪽 Fetc..
[spring, logback] 비동기식 로깅 - AsyncAppender - 2 코드의 자세한 설명을 하겠다. - application.properties spring.profiles.active 설정을 변경해서 앱이 개발 상태인지 배포 상태인지에 따라서 logback의 설정을 지정할 수 있다. - logback-local.xml logback 설정 파일이다. 어떻게 로그를 남길지에 대한 logback의 설정 값을 지정할 수 있다. scanPeriod를 지정하여 로그 설정파일을 주기적으로 다시 읽도록 하여 앱이 배포 중인 상태에서도 로그 설정을 변경할 수 있다. STDOUT의 appender처럼 이용하면 로그를 동기식으로 남길 수 있다. ROLLING_FILE, ASYNC_FILE appender를 이용하면 로그를 비동기식으로 남길 수 있다. - TestController.java,..
[spring, logback] 비동기식 로깅 - AsyncAppender - 1 Summary 비동기식 로깅에 대해 알아봅시다. spring boot에서 logback을 이용하여 비동기식 로깅하는 방법에 대해 알아봅시다. What is asynchronous logging synchronously file write 하면 file writing에 대한 딜레이가 발생하게 된다. file i/o는 인메모리 작업이 아니기 때문에 딜레이가 커진다. 비동기식 로깅은 '로그 발생'과 '로그 쓰기'를 분리시킨다. thread A는 로그가 발생하면 인메모리 큐에 집어넣기만 한다. thread B는 큐에서 데이터를 꺼내서 file write만 수행한다. logback에서 비동기식 로깅을 위한 방법을 지원해준다. What is logback looging의 기능을 제공하는 프로젝트 log4j에서 떨어..