본문 바로가기

전체 글87

[Spring Batch] 5.1.2 Features 개요기존에는 Spring Batch 4.x.x 버전으로 개발하다가 최근에 5.1.2 버전으로 변경하면서  Spring Batch 5.1What's New in Spring Batch 5.1Dependencies upgradeVirtual Threads supportMemory management improvement in the JpaltemWriterNew synchronized decorators for item readers and writersNew Cursor-based Mongoltem ReaderBulk inserts support in MongoltemWriterNew item reader and writer for RedisAutomatic configuration of JobRegist.. 2024. 8. 21.
[Spring] Flyway DB Migration 개요수년 전 개발했던 프로젝트 중 mysql 5.x 버전으로 개발된 프로젝트의 Mysql 버전을 8.x 버전으로 올리고, 간단한 마이그레이션이 필요하여 Spring sql init으로 사용하던 DB 스키마 정의를 Flyway를 적용하여 마이그레이션 한다. FlywayDatabase migrations made easyFree - API/CLI and Desktop GUIBuil on Open SourceVersion control your database migration scriptsPowered by the Flyway commnity and RedgateFlyway는 DB 마이그레이션을 지원하는 도구로 API/CLI와 GUI 툴을 제공하며 다양한 데이터베이스를 제공한다.또한 Spring Boot와 .. 2024. 8. 5.
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 JVM - Checkpoint Restore (CRaC) 개요이전 게시글에서 소개했던 Spring Runtime efficiency 문서에서(https://blog.igooo.org/115) CRaC에 대하여 소개한 적이 있는데 간단한 예제로 사용방법을 알아본다. K8S에 배포하는 파이프라인까지를 구성하고 문서를 작성하려고 했으나 사용 중인 K8S Node가 CRIU를(https://criu.org/Main_Page) 지원하지 않는 Ubuntu 배포판(20.04) 버전이라 K8S 배포는 추후에 작성한다. (Job으로 스냅샷을 생성하고 배포하는 방법) Spring Boot 3.2부터 CRaC를(https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now) 지원하기 시작했다. CRaC는 Coodinated .. 2024. 7. 20.
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.
Kubernetes에서 Spring @Scheduled 사용하기 개요Spring은 @Scheduled 어노테이션을 사용하여 예약된 작업을 처리하며, 이는 애플리케이션의 인스턴스가 하나만 실행 중인 경우 문제없이 동작한다. 그러나 애플리케이션은 점점 더 컨테이너화되고 있고, Kubernetes와 같은 플랫폼에서 실행되어 수평적 확장을 사용하여 배포하는 경우 애플리케이션은 여러 인스턴스가 실행되고 있다. 예약된 작업은 백그라운드에서 실행되기 때문에 애플리케이션을 수평적으로 확장할 때 예약된 작업이 중복이 발생할 수 있다. The Scenario@Componentclass ScheduledTasks { private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class); private .. 2024. 7. 9.
Kubernetes - Pods PodsPod는 Kubernetes에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이며, 한 개 또는 여러 개의 컨테이너들의 묶음이다. Kubernetes 클러스터의 Pod는 두 가지 방법으로 사용된다.Pods that run a single container.: 하나의 Pod에 하나의 컨테이너를 사용하는 경우Pods that run multiple containers that need to work together. : 여러 개의 컨테이너를 배치해서 사용하는 경우. Using Pods아래 예제는 nginx: 1.14.2 이미지를 실행하는 Pod 예제다.apiVersion: v1kind: Podmetadata: name: nginxspec: containers: - nam.. 2024. 7. 4.
Generational ZGC in Java 21 개요Java 21은 2023 년 9월에 Generational ZGC의 도입과 함께 공개되었다. Highly scalable, low-latency GC 였던 ZGC는 https://openjdk.org/jeps/439를 통해 generational GC로 업데이트 되었다. 이 업데이트에서는 young / old 객체에 대하여 별도의 세대를 도입하여 메모리 관리를 최적화 하는것에 중점을 두었다. What is ZGC?ZGC는 최대 16TB 크기의 힙을 지원하면서도 밀리초 미만의 일시 정지 시간을 유지하며 높은 확장성을 갖도록 설계되었다. ZGC는 애플리케이션이 실행되는 동안 새로운 객체를 할당하고, 도달할 수 없는 객체를(unreachable object) 스캔하고, 힙을 압축하는 등의 작업을 수행하는데.. 2024. 7. 2.