본문 바로가기

java25

[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.
Java - ReentrantLock 개요There are two scenarios in which a virtual thread cannot be unmounted during blocking operations because it is pinned to its carrier:When it executes code inside a synchronized block or method, orWhen it executes a native method or a foreign function.Pinning does not make an application incorrect, but it might hinder its scalability. If a virtual thread performs a blocking operation such as I/.. 2024. 7. 19.
[Spring] Springdoc-openapi 사용하여 API 문서 만들기 개요springdoc-openapi는 Spring Boot 프로젝트의 API 스팩에 대하여 자동으로 문서 생성을 해주는 라이브러리다. json, yaml, html 등 다양한 형식의 문서를 생성한다. OpenAPI 3 스팩을 지원한다. Getting Started간단한 Spring MVC Controller를 생성한다.@RestController@RequestMapping("/v1.0/pets")class PetApiController { private List> pets = List.of(Map.of("name", "pet1"), Map.of("name", "pet2")); @GetMapping List> findAll() { return this.pets; } @GetMapping("/{name}".. 2024. 7. 16.