전체 글91 spring boot 가상 스레드 적용해보기 JDK 21부터 가상 스레드(virtual thread)가 정식 릴리즈 되었다. 또한 spring boot 3.2부터는 가상 스레드가 지원되어 spring boot 애플리케이션에서 가상 스레드를 시험해 볼 수 있게 되었다. 이번 포스팅에서는 spring boot 웹 애플리케이션에서 가상 스레드를 적용한 샘플코드를 작성해 보고 jmeter를 통해서 가상 스레드와 플랫폼 스레드의 처리량의 차이를 비교해 보고자 한다. 가상 스레드에 대한 내용은 다음 포스팅에서 정리하였다. 2023.11.24 - [자바] - java 21 처리량 향상을 위한 대안 - virtual thread 알아보자 2023.11.26 - [자바] - java21 - scoped value에 대해서 알아보자 사전 조건 virtual thre.. 스프링부트 2023. 12. 3. 맥 m1, m2 에 jmeter 사용하기 apache에서 제공하는 jmeter 테스트 도구를 mac m1, m2 환경에서 설치하는 방법에 대해서 소개하고자 한다. apache jmeter는 JDK를 통해서 실행되기 때문에 JDK 8 이상 버전이 설치되어 있어야 한다. jmeter 설치 brew를 통한 설치 우선 맥에 homebrew가 설치되어 있어야 한다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/nohacking/.zprofile eval "$(/opt/homebrew/bin/brew shelle.. ETC 2023. 12. 2. 맥 환경에서 iTerm2 개발 환경 셋팅하기 macOS 환경에서 터미널 대체 앱으로 iterm2가 많이 사용되고 있다. 이번 포스팅에서는 iterm2 설치 방법과 설정 변경, 그리고 유용한 플러그인을 설치하는 방법에 대해서 소개하고자 한다. homebrew 설치 brew 명령을 통해서 손쉽게 iterm2를 설치 할 수 있다. homebrew 가 설치되어 있다면 다음 항목으로 넘어가도록 하자. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/nohacking/.zprofile eval "$(/opt/homebr.. ETC 2023. 12. 1. java21 - scoped value에 대해서 알아보자 최근에 릴리즈 된 java 21 기능에 범위 지정 값(이하 scoped value) API가 preview 기능으로 제공된다. scoped value API는 메서드 매개변수를 사용하지 않고 메서드에 안전하고 효율적으로 데이터를 공유할 수 있도록 한다. 특히 java21에 릴리즈 된 가상 스레드를 사용할 때 ThreadLocal을 사용하면서 발생할 수 있는 문제에 대해서 scoped value 기능은 ThreadLocal에 대한 문제들을 해결할 수 있을 것이다. 이번 포스팅에서는 scoped value에 대한 도입 배경과 ThreadLocal 사용에 대한 문제와 함께 scoped value를 사용하는 방법에 대해서 정리해 보고자 한다. scoped value History scoped value에 대한 .. 자바 2023. 11. 26. java 21 처리량 향상을 위한 대안 - virtual thread 알아보자 2023년 9월 21일에 java 21이 배포가 되었다. java 21에서 새롭게 소개된 항목 중 하나가 기존의 스레드보다 더 경량화되어 설계된 virtual thread (가상 스레드)라고 할 수 있겠다. 이번 포스팅에서 새롭게 소개된 virtual thread(이하 가상 스레드)에 대해서 정리해 보고자 한다. 기존 스레드 모델의 문제점 전통적인 스레드는 java.lang.Thread 클래스의 인스턴스이다. 플랫폼 스레드라고 불린다. 플랫폼 스레드 플랫폼 스레드(user thread)는 OS 스레드(kernel thread)와 1:1 맵핑된다. 사용가능한 플랫폼 스레드의 수는 OS 스레드 수로 제한된다. 운영 체제에서 유지 관리하는 비교적 큰 스레드 스택 및 리소스가 소모되어 제한적일 수 있다. 플랫폼.. 자바 2023. 11. 24. spring scheduler task에 shedlock + redis 적용방법 Spring 스케줄러를 사용하여 배치 작업 및 예약된 작업을 손쉽게 할 수 있지만 AWS ECS, EKS와 같은 클라우드 기반 분산 컴퓨팅 환경에서는 멀티 인스턴스로 서비스를 하는 경우가 많은데 이러한 경우 각 인스턴스의 스케줄 태스크를 동기화할 수 없어서 같은 태스크가 중복 실행이 되어 예기치 않은 문제를 만날 수 있다. ShedLock은 이러한 중복 실행 문제에 대해서 각 인스턴스 간의 잠금 처리를 제공하여 하나의 인스턴스에서만 태스크를 실행할 수 있도록 한다. (태스크에 잠금 이름을 지정하여 동일한 이름에 대해서 잠금이 동작하므로 더 좁은 의미로는 태스크 간의 잠금 처리라고 하는 게 맞을 것 같다.) ShedLock은 태스크 간의 락 처리를 위해서 MongoDB, JDBC, Redis, Hazelc.. 스프링부트 2023. 11. 20. spring multi module 프로젝트 만들기 이번 포스팅은 Creating a Multi Module Project 가이드 문서의 내용을 정리 요약한 것이다. Intellij IDE에서 Spring Boot로 다중 모듈 프로젝트를 생성하는 방법에 대해서 기록한다. 프로젝트에는 설정 파일의 내용을 주입받아 제공하는 라이브러리가 있고 해당 라이브러리를 사용하는 애플리케이션으로 2개의 프로젝트로 구성된다. 전체 소스 코드는 가이드 문서내에 github 링크가 포함되어 있다. Root 프로젝트 생성 루트 프로젝트에는 두 개의 자식 프로젝트를 생성해야 한다. - library, application library는 application 프로젝트에 종속된다. Maven Maven의 경우 가 포함된 pom.xml을 root 프로젝트에 정의한다. 4.0.0 or.. 스프링부트 2023. 11. 19. java library를 이용한 DKIM 서명 및 검증 기능 구현하기 java에서는 Email의 DKIM 서명 및 검증 처리를 위한 몇 가지 라이브러리를 제공한다. 이번 포스팅에서는 Email DKIM 서명 및 검증 구현을 위한 다음 라이브러리를 사용하는 방법에 대해서 기록한다. apache james 프로젝트의 jdkim 라이브러리 SimpleJavaMail dkim 라이브러리 Email DKIM에 대한 상세 스펙에 대한 내용은 아래 포스팅을 참고하기 바란다. 2023.11.08 - [ETC] - Email DKIM(DomainKeys Identified Mail) 메시지 서명 및 검증 프로세스 Email DKIM(DomainKeys Identified Mail) 메시지 서명 및 검증 프로세스 DomainKeys Identified Mail (이하 DKIM)은 공개키 암.. ETC 2023. 11. 12. Spring REST 서비스 예외 처리 방법 Spring에서는 전체 예외 처리에 대한 추상화를 제공하고 몇 가지 annotation만으로 예외 처리를 손쉽게 할 수 있다. 이번 포스팅에서는 Spring REST 서비스에서 예외를 처리하는 방법과 HTTP 응답 상태코드를 반환하는 방법에 대해서 기록한다. 1. 예외 수동 처리 다음 Controller 코드는 HttpStatus와 함께 응답 body 페이로드를 포함하는 ResponseEntity를 반환한다. 예외가 발생하지 않으면 200 코드와 함께 body 페이로드로 Member를 응답한다. ResourceNotFoundException 예외가 발생하는 경우 empty body와 404 코드를 응답한다. MemberServiceException 예외가 발생하는 경우 empty body 와 500 코드.. 스프링부트 2023. 11. 9. Email DKIM(DomainKeys Identified Mail) 메시지 서명 및 검증 프로세스 DomainKeys Identified Mail (이하 DKIM)은 공개키 암호화 및 키 서버 기술을 사용하는 이메일에 대한 도메인 수준 인증 프레임워크를 정의하여 MTA(메일 전송 에이전트) 또는 MUA(메일 사용자 에이전트)에서 메시지의 출처와 내용을 확인할 수 있도록 하는 송신자 인증 기술 중 하나다. DKIM의 궁극적인 목표는 메시지 서명자의 신원과 메시지의 무결성을 보호하는 것이다. 메시지 수신자는 서명자의 도메인을 직접 쿼리하여 검색된 공개키를 기반으로 서명을 확인하고 도메인 개인키를 소유한 소유자가 메시지를 증명했음을 확인할 수 있다. DKIM 서명 검증에 사용되는 공개키는 DNS 레코드에 등록되므로 DNS 관리 및 DNS 시스템 보안에 의존성이 있다. DKIM 동작 방식 메시지 전송시 개인.. ETC 2023. 11. 8. [Java] 특정 디렉토리의 파일 목록 가져오기 Java API를 사용하여 숨겨진 파일을 포함하여 디렉터리에 있는 모든 파일을 재귀적으로 가져오는 방법에 대해서 알아보자. Files.list() Files.walk() DirectorySystem File.listFiles() File.listFiles(filter) Stream.filter() 테스트를 위한 샘플 디렉토리 구조는 다음과 같다. sample-directory의 절대경로는 /java-project/blog/filelist/sample-directory이다. Directory의 파일만 리스팅 Files.list()를 이용한 파일 목록 스트리밍 하위 디렉터리와 하위 디렉토리 파일을 제외한 해당 디렉터리의 파일 목록만 가져올 때 사용한다. //samplePath의 Path 타입이고 경로는 /j.. 자바 2023. 11. 4. Spring Boot Embedded Tomcat 서버 설정 Spring Boot 애플리케이션은 tomcat, jetty, undertow 내장 서버를 사용할 수 있지만 디폴트 내장 서버는 tomcat을 사용한다. tomcat 내장 서버를 바로 사용할 수 있는 기본 구성 세트가 있지만 속성 또는 yaml 파일을 이용하여 내장 톰캣 서버를 구성하고 기본 설정을 변경할 수 있다. 내장 서버 autoconfiguration spring-boot-autoconfigure에 포함된 내장 서버 관련 auto configuration 관련 코드는 다음 패키지에 있다. org.springframework.boot.autoconfigure.web.embedded 내장 서버 관련 설정 클래스는 org.springframework.boot.autoconfigure.web.Server.. 스프링부트 2023. 11. 3. 이전 1 2 3 4 5 6 ··· 8 다음 💲 추천 글