일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JDK
- Reactive
- Vmalert
- ExecutableJar
- springboot
- raft
- broker
- OpenJDK
- consumer
- spring
- Rebalance
- swagger
- Reassign
- VictoriaMetrics
- Mirror
- restdocs
- API문서
- Vmagent
- tsdb
- kafka
- NoClassDefFoundError
- webflux
- JVM
- Zookeeper
- ProjectLoom
- java
- OFFSET
- Brooklin
- 비동기
- Today
- Total
목록 전체 글 (33)
거북이 developer
문제 상황 (1) request 처리 도중 Pod 이 종료되면 Request 가 비정상적으로 처리될 수 있음 (2) Pod 이 종료될 때 종료 중인 Pod 에 request 가 들어오면 클라이언트는 connection refused 에러를 만나게 됨 문제 해결을 위한 과정 (1)번 이슈는 Spring 에서 제공해주는 Graceful Shutdown 설정을 통해 해결 가능하다. server: shutdown: graceful (2)번 상황을 막기 위해 Readiness Probe 를 /actuator/health endpoint 로 잡아주고 Custom Health Indicator 를 구현하여 API 로 유입된 값에 따라 Application 상태를 Active/Inactive 하게 변경할 수 있게 하였..
공통(Master/Worker Node) Docker 설치 Docker Engine Install 을 참고하여 사용하는 OS 에 맞게 설치 진행한다. centos 버전으로 설치 진행 root 권한이 필요하기 때문에 root 계정으로 진행한다. yum-utils 설치 및 docker repository 등록 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo필요한 Docker Package 설치(특정 버전을 설치하고자 한다면, yum list docker-ce --showduplicates | sort -r 로 원하는 버전 확인 후 설치..
개요 LTS 버전중에 현재 가장 점유율이 높고 사랑받는(?) 버전은 Java 8 과 11 인듯 싶다.(관련 통계: https://www.jetbrains.com/ko-kr/lp/devecosystem-2022/java/#Java_which-versions-of-java-do-you-regularly-use 참고) 최근 몇년간 신규 Java 버전이 계속 릴리즈 되었고 이와 관련되서 새로운 기능들이 많아졌다. 통계적으로 가장 많이 사용하고 있는 Java 8 이후에 어떤 기능들이 추가되었는지 살펴보자. Java 21(2023. 09 월 release 예정) 까지의 주요 업데이트 📌 ZGC Garbage Collector 추가 JDK 11부터 공개되었고, “Stop-The-World”로 인한 성능저하를 개선하기..
개요 Application 에서 정의한 Model 객체가 어떻게 MongoDB 로 변환이 되어 들어가고, 조회시에는 어떻게 Model 객체로 맵핑이 되는지에 대한 궁금증에서 시작. MappingMongoConverter 에서 이러한 기능을 담당하는거로 확인했지만, 이번 시간에는 이부분에 대해 깊게 파진 않고 이러한 Mapping 을 도와주는 Annotation 에 대해 알아보려고 한다. @Document Spring Data Mongodb 에서만 사용할 수 있는 Annotation 어노테이션이 정의된 Class 를 사용할 MongoDB Collection 을 지정할 수 있다. /** * 나는 base collection 에 들어갈거다! */ @Document("base") public class Base..
최근에 Spring Boot 로 개발된 Web Application 을 운영하던 도중에 아래와 같은 Error 를 맞딱뜨렸습니다. 2022-08-30 11:07:35.485 WARN 3038 --- [SpringContextShutdownHook] o.s.c.support.DefaultLifecycleProcessor : Failed to stop bean 'webServerGracefulShutdown' java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: org/springframework/boot/web/server/GracefulShutdownResult at org.springframework.boot.web.servlet.contex..
💬 Spring Rest Docs 란? Spring REST Docs 는 RESTful 서비스의 문서화를 도와주는 도구이다. 문서 작성 도구로 Asciidoctor 를 기본적으로 사용하며, 이것을 통해 HTML 문서를 생성한다. 필요한 경우 Markdown 문법을 사용하도록 변경할 수 있다. RESTful API를 문서화 할때 중요한 포인트는 API 에서 필요한 HTTP 요청과 응답의 리소스를 설명하는 것인데 Spring REST Docs 를 사용할 경우 테스트 코드를 작성하여 이러한 리소스와 HTTP 요청/응답에 대한 세부 내용을 문서화하는데 편리한 기능을 제공한다. 💬 Swagger 란? RESTful API 를 약속된 규칙에 따라 json 이나 yaml 형식으로 문서화한 Open API Specif..
💬 Kafka 와 Zookeeper 의 관계? 떼려야 뗄 수 없는 관계다. Kafka 는 Zookeeper 를 통해 필요한 Metadata 를 안전하게 저장하고 Cluster 운영을 위한 리더 및 파티션 오너를 선출하고 있다. 이러한 관계로 Kafka 를 운영하기 위해서는 반드시 Zookeeper 가 구축되어야 하고 운영단계에서는 Kafka 가 사용하는 Zookeeper 를 다른 솔루션과 함께 사용하지 말라고 권장하고 있다. 💬 Kafka 는 왜 Zookeeper 와 헤어지려고 하는가? 다음과 같은 몇가지 이유가 있다. 1️⃣ Kafka 를 쓰려면 Zookeeper 도 같이 알아야 한다. - 처음 Kafka 를 배우는 입장에서는 동시에 2가지의 솔루션을 배워야 한다는 것에 진입장벽을 느낄 수 있다. - ..
💬 Programming 언어가 유료화가 된다고? 프로젝트를 Java 언어로 진행하고 있거나 이미 운영중인 사람들 입장에서는 처음 Java 유료화 라는 말을 들었을 때 헉! 할수밖에 없을 것이다. 그만큼 Java 는 인기있는 언어이고 대체하기 위해서는 많은 리소스를 투자할 수 밖에 없다. 결론부터 얘기하자면 Java 라는 프로그래밍 언어 자체는 GPL 라이센스로 무료이다. 그럼 도대체 어떤것이 유료화가 된다는 말일까? Java 프로그램을 실행하기 위해서는 아래의 2가지 핵심 기능이 필요하다 - Java 로 작성한 프로그램을 컴파일 해주는 JDK - 컴파일된 결과물을 실행시켜주는 JVM JDK 에 JVM 이 같이 패키징되어 배포되는 구조라 흔히들 JDK, JVM 을 합쳐 JDK 라 부르는데 이 JDK 가 ..