java27 Win10 SDKMAN으로 JAVA 설치하기 개요JDK 설치는 IDE에서도 해주지만 graalvm을 사용한 Native build나 특별한 JDK가 필요한 경우는 별도 설치가 필요한데 SDKMAN을(https://sdkman.io/) 사용하면 원하는 JDK 버전을 쉽게 찾고 설치할 수 있다. Mac에서는 명령하나로 설치할 수 있지만 윈도우에서는 몇가지 설정이 필요하여 간단히 정리해본다. Getting started7-Zip 설치https://www.7-zip.org/ 에서 다운받아 설치해준다. 7-Zip 설치 위치에서 7z.exe 파일을 복사하여 zip.exe 파일로 이름을 변경한다. 시스템 속성에서 환경 변수에 Path항목에 7-Zip 위치를 추가한다. Git 설치https://git-scm.com/downloads/win에서 다운받아 설치한다... 2025. 1. 14. Spring gRPC 개요아직 experimental 한 프로젝트지만 Spring Initializr에서 선택 가능한 Spring gRPC를 사용하여 빠르게 gRPC 서비스를 생성할 수 있다.'org.springframework.grpc:spring-grpc-spring-boot-starter'를 사용하여 빠르게 gRPC 서비스를 생성해 본다. Getting startedProject 생성Spring Initializr를 사용하여 Spring gRPC를 선택하고 프로젝트를 생성한다.Spring gRPC는 Spring Boot 3.3.x 이상만 지원한다.(https://docs.spring.io/spring-grpc/reference/getting-started.html) build.gradle생성된 build.gradle을 .. 2025. 1. 11. [Spring] Redisson으로 분산락 구현하기(Distrubuted Lock) 개요분산락은(Distrubuted Lock) 서로 다른 프로레스가 공유 리소스를 상화 배타적인 방식으로 작동해야 하는 분산 환경에서 매우 유용한 방식이다.Redis를 사용하면 쉽게 분산락을(Distrubuted Lock) 구현할 수 있다. Redis의 데이터 처리는 Single Thread로 처리되며 모든 요청이 순차적으로 처리되기 때문에 DB를 사용한 분산락 보다 쉽게 구현이 가능한다. Redis ClientLettuceSpring에 spring-boot-starter-data-redis를 사용하면 lettuce-core 라이브러리가 기본적으로 redis client로 사용된다. lettuce는 redis lock 관련 기능은 별도로 제공하지 않고, 일반적으로 Spin lock 형태로 별도로 구현한다... 2024. 11. 21. [Kotlin] REST Assured로 통합 테스트 작성하기 개요Java 프로젝트에서 자주 사용하던 REST Assured(https://rest-assured.io/)를 사용하여 Kotlin 프로젝트에서요 실제 API를 호출하는 Integraion Test를 작성한다 Java REST Assured 참고 : https://blog.igooo.org/119 Why Kotlin?Java Java로 Junit 테스트를 작성하는 경우 여러 줄의 검증 코드가 있을 때 특정줄의 검증 코드에서 오류가 발생하면 아래 검증 코드는 실행되지 않고 사용자에게 오류 라인수를 리포팅해 준다.......then(). statusCode(200). body("size", is(3)). body("name.any { it == 'Ervin Howell' }", is(tru.. 2024. 9. 25. [Spring] @Async와 Virtual Thread 개요Java 21에 Virtual Thread와 Spring @Async 어노테이션을 조합하여 비동기 프로그래밍 방법을 알아본다. Spring @Async@Async 어노테이션을 Spring의 AOP를 사용하여 비동기 메서드 실행을 제공한다.@Async는 기본적으로 AOP로 실행되며 Proxy Parttern의 한계점을 가진다.public 메서드로만 사용가능self-invocation 불가메서드 리턴 타입은 void로 설정하거나, Future / ListenableFuture / CompletableFuture로 설정하여 비동기 처리를 할 수 있다.void 리턴 타압의 경우 Exception 처리를 위하여 AsyncUncaughtExceptionHandler를 사용하여 처리할 수 있다. 프로젝트 구조HT.. 2024. 9. 14. nGrinder on K8S 개요nGrinder를 다시 설치해야 하는 일이 생겨서 찾아보다가 K8S에 설치하여 사용할 수 없는지 찾아보다가 Docker HUB에 이미지가 업로드되어 있는 것을 보고 K8S에 설치하여 사용했다. InstallDocker Imagedocker hub에 공식 이미지가 있어서 바로 설치하여 사용가능하다.https://hub.docker.com/r/ngrinder/controllerK8SK8S에서 위 Docker 이미지를 구동을 위해서는 Deployment 파일을 작성하여 Controller와 Agent 인스턴스 실행이 필요한데 이것도 이미 작성해 주신 분이 있다. 참고 : https://github.com/KesavanKing/ngrinder-k8sDeployment 파일들은 받아서 resource: {} .. 2024. 7. 25. 이전 1 2 3 4 5 다음