개요 JHipster는 Java 진영에서 모놀리스 또는 마이크로서비스를 제작하기 위한 만물상자라고 할 수 있다. JHipster의 커맨드 도구를 이용하여 프로젝트를 생성하면 순식간에 최신 모던 기술 스택 기반의 모든 기술을 총망라한 프로젝트를 제작할 수 있다. 개발자는 순전히 선택한 모던 기술 스택을 숙지하기만 하면, 곧바로 비지니스 로직 구현에 집중할 수 있는 장점이 있다. 이번 글에서는 JHipster를 구성하는 기본 철학 및 개념에 대해서 설명하고자 한다. JHipster Registry Netflix Eureka 기반의 서비스 디스커버리 애플리케이션이면서 Spring Cloud Config 서버 애플리케이션이다. 기본값으로 HTTP 8761 포트를 사용한다. [관련 링크] JHipster 생태계에..
개요 백엔드 엔지니어로서 프로덕션 레벨에서 쓰레드 풀을 이용한 비동기 및 병렬 처리에 충분히 만족하고 있었기 때문에, 코루틴을 따로 공부하지 않고 않았는데 코루틴을 이용하려 병목 현상을 효과적으로 해소하는 지인을 보고 코루틴 공부를 시작하게 되었다. 코루틴에 대한 첫 인상은 완전히 새로 발명된 비장의 무기라는 느낌보다는 쓰레드 사용을 정말 쉽게 해준다는 것이었다. 의식적으로 콜백 지옥에서 해방된 느낌마저 받았다. 이번 글에서는 Kotlin/JVM을 이용한 서버 사이드 관점에서 Kotlin의 코루틴의 기본적인 사용법을 정리하였고 지속적으로 업데이트할 예정이다. build.gradle.kts 프로젝트 루트의 build.gradle.kts에 아래 내용을 추가한다. val kotlinCoroutinesVersi..
개요 Spring Boot, JPA 환경에서 개발하다보면 JPA의 멋진 철학에 매료되었다가 곧 현실과의 괴리를 느끼고, 끊임없는 내적 갈등에 휩싸이게 된다. 그런 상황을 유발하는 대표적인 예외가 바로 LazyInitializationException인데 이번 글에서는 해당 예외가 발생하는 이유와 해결책을 정리하였다. LazyInitializationException 예외가 발생하는 이유 일반적인 백엔드 프로젝트에서 로직의 대부분은 REST API에 해당하며 실행의 흐름은 @Controller, @Service, @Repository 순서가 된다. 서비스 레벨에서 @Transactional이 명시된 메써드가 종료되면 Hibernate의 Session도 함께 종료된다. FetchType.LAZY가 설정된 필..
개요 비지니스 로직을 아무리 명확하게 짜고 유닛 테스트를 촘촘하게 작성해도 실제 프로덕션 레벨에서는 유입량에 따라 예상하지 못한 수많은 데드락을 경험할 수 있다. 이번 글에서는 데드락을 최소화하는데 도움이 되는 READ-COMMITTED 트랜잭션 격리 레벨과 @Retryable 사용법을 설명하고자 한다. 앞서 읽어보면 좋은 글 MySQL/MariaDB, 트랜잭션과 격리 레벨 설명, 데드락 예방하기 Spring Boot, @Transactional 전파 레벨 정리 데드락 최소화 전략 트랜잭션 범위를 최대한 작게 조정한다. (공유 잠금 시간 최소화) 특히, @Controller 레벨에 명시된 @Transactional은 데드락을 유발할 가능성이 매우 크므로 제거한다. 모든 쿼리의 트랜잭션 격리 레벨을 REA..
- Total
- Today
- Yesterday
- DynamoDB
- chrome
- jsp
- 알뜰폰
- 로드 바이크
- maven
- spring
- jpa
- Docker
- Eclipse
- node.js
- graylog
- MySQL
- Spring MVC 3
- Kendo UI Web Grid
- 평속
- JHipster
- CentOS
- Spring Boot
- 구동계
- bootstrap
- JavaScript
- Kendo UI
- java
- kotlin
- Tomcat
- 로드바이크
- 태그를 입력해 주세요.
- 자전거
- jstl
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |