개요 Java 19부터 Virtual Thread 개념이 Preview Feature로 새롭게 추가되었고 Java 21 LTS부터 정식 기능으로 전환되었다. 기존의 전통적인 Platform Thread가 OS의 쓰레드와 직접 맵핑되는 개념이었다면 Virtual Thread는 JVM에 의해 추상화되어 작동하는 경량의 가상 쓰레드로서 훨씬 낮은 메모리를 소모하는 것이 장점이다. 가상 스레드는 JVM의 스케쥴러에 의해 자동으로 관리되므로 개발자는 비지니스 로직에 더욱 집중하면서 성능의 이점까지 누릴 수 있다.Spring Boot 3, Spring Framework 6는 가상 쓰레드를 공식으로 지원한다. 이번 글에서는 Spring Boot 기반 프로젝트에서 Spring Web MVC 요청, @Async, 코루틴..
개요 Spring Boot 프로젝트에서 오픈 소스 분산 캐시 및 인메모리 데이터베이스로 유명한 Hazelcast를 Embedded Cache로 구현하는 방법을 간단히 정리했다. 라이브러리 종속성 추가 프로젝트 루트의 build.gradle.kts에 Hazelcast 사용을 위한 아래 내용을 추가한다. dependencies { implementation("com.hazelcast:hazelcast:5.2.3") // 분산 캐시에 오브젝트 저장시 직렬화 방식으로 Smile을 사용하기 위해 추가 implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-smile:2.14.3") } @Configuration 클래스 작성 Hazelcast 사용에..
개요 일반적으로 NGINX의 access_log, error_log는 라인 단위의 텍스트 형태로 출력한다. 오픈 소스 오브젝트 로깅 솔루션인 Graylog을 이용하여 해당 로그를 적재하면 오브젝트 단위로 검색이 용이하여 장애 발생시 문제 파악이 수월해진다. 이번 글에서는 Syslog UDP의 형태로 NGINX의 로그를 Graylog로 실시간 전송하는 방법을 정리하였다. NGNIX Syslog Content Pack 설치 개인 유저인 scriptingislife가 제작한 NGNIX Syslog Content Pack을 아래와 같이 설치한다. 설치가 완료되면 12401번 UDP 포트를 리스닝하는 Input가 자동 생성된다. Graylog Web Interface → System → Content Packs ..
개요 API를 운영하다보면 가장 흔하게 발생하는 이슈가 아주 짧은 찰나에, 동일한 API 요청이 거의 동시에 들어오는 것이다. 가장 일반적인 원인은 대개 엔드 유저가 브라우저 상에서 특정 버튼을 아주 빠르게 연속으로 클릭하는 것이고, 크리티컬하게는 특정 엔티티의 상태 변화를 유발하는 아주 미세한 차이의 Race Condition이 발생하는 경우도 있다. API는 이런 상황에 대비하여 동일 요청에 대해 중복 실행을 방지하는 로직으로 대응할 필요가 있다. 이번 글에서는 Spring Boot 프로젝트에서 Redis를 이용한 중복 실행 방지 로직을 구현하고 사용하는 예를 설명하고자 한다. 운영체제 환경 변수 추가 Redis 연결을 위한 환경 변수를 아래와 같이 추가한다. (상황에 맞게 application.ya..
- Total
- Today
- Yesterday
- Spring MVC 3
- 자전거
- Kendo UI
- CentOS
- MySQL
- Docker
- node.js
- Tomcat
- jpa
- 알뜰폰
- 구동계
- 태그를 입력해 주세요.
- Eclipse
- JavaScript
- Kendo UI Web Grid
- 로드바이크
- jsp
- 평속
- java
- graylog
- 로드 바이크
- bootstrap
- kotlin
- chrome
- maven
- spring
- DynamoDB
- JHipster
- jstl
- 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 |