SpringBoot 3.X 버전 대에서 Querydsl설정을 위한 gradle 설정.설정 하고 build 후에 build > generated > sources > annotationProcessor 폴더에 QEntity들이 생성되는지 확인한다. plugins { id 'java' id 'org.springframework.boot' version '3.2.4' id 'io.spring.dependency-management' version '1.1.4'}group = 'jpa.project'version = '1.0-SNAPSHOT'sourceCompatibility = '17'configurations { compileOnly { extendsFrom annotati..
쿠버네티스 리소스의 status를 보고 Pod가 비정상 상태라면 데이터를 저장하고 비정상 상태가 지속 시간을 만족하면 알람이 발생되는 로직이 있었다.쿠버네티스 리소스의 status와 Alarm은 일대일 관계이기 때문에, @OneToOne관계로 설정을 했고 연관 관계 owner가 아닌 테이블에 mappedBy 설정으로 조회가 되게 설정 후 fetch = FetchType.LAZY 로 모두 설정해서 Lazy 로딩이 동작될 것으로 예상했지만, 예상햇던 대로 SQL query가 나가지 않는 이슈가 발생했다. Entity에 대한 설정은 아래와 같이 설정했다. Alarm Entity@ToString(exclude = {"k8sEvent"})@Entitypublic class Alarm { @Id @Uui..
Spring Boot에서 Apache Kafka Binder 를 사용할 때, Producer, Consumer 설정을 어떻게 하고 코드는 어떻게 작성하면 되는지 간략하게 요약식으로 적어두려고 한다. dependency 추가 build.gradle dependencies { implementation 'org.springframework.cloud:spring-cloud-stream-binder-kafka' implementation 'org.springframework.cloud:spring-cloud-starter-stream-kafka' } Spring Cloud Stream 3.0.0 부터 kafka Stream Binder 를 사용해서 Java 8 부터 제공하는 Functional programm..
종종 Spring Boot 로 Kafka를 사용하는 테스트를 간단하게 하는데, zookeeper를 실행하고 kafka를 실행하는 서버 방식으로 하다보니 너무 귀찮았다. 그래서 docker container를 이용해서 kafka를 설치해보고 간단한 Kafka 테스트도 진행해보려고 한다. 배포가 아닌 단일호스트에서 간단한 테스트를 위한 용도, 그리고 설치 삭제가 간편한 이점 때문에 docker compose를 사용하고자 한다. (kafka는 설치가 아닌 실행으로 동작하지만 mysql과 같은 데이터베이스를 구성할때도 container를 활용하면 매우 간편하다) docker compose를 먼저 설치한다. docker-compose.yaml 을 작성한다. 작성은 아래 github을 참조해서 작성했다. https..

minikube를 설치하고 시작하면 default 설정으로 cpus=2, memory=4000MB 으로 실행이 된다. minikube의 현재 설정을 아래 커맨드로 확인해 볼 수 있다. 현재는 아무 설정도 되어있지 않기 때문에 빈 설정 정보를 볼 수 있다. wanbaep ~ > cat ~/.minikube/config/config.json {}% cpus 와 memory 설정을 변경하기 위해 아래 설정을 추가해보도록 하겠다. 먼저 실행중인 minikube를 종료하고 삭제한다. wanbaep > minikube stop ✋ "minikube" 노드를 중지하는 중 ... 🛑 "minikube"를 SSH로 전원을 끕니다 ... 🛑 1개의 노드가 중지되었습니다. wanbaep > minikube delete 🔥 ..

Kubernetes monitoring 을 하기 위한 솔루션으로 prometheus 를 설치하려고 한다. 기존에 prometheus를 서버 형태로 설치해본 경험은 있었지만, Kubernetes 환경에서는 서버 형태로 설치하면 metric을 scrape할 대상이 추가될 때마다 수동으로 서버를 재시작 해주기 어렵다. 따라서, Kubernetes 환경에서는 Operator형태의 prometheus를 설치해서 동적으로 metric을 scrape할 대상을 추가할 수 있도록 구성해볼 예정이다. 설치는 helm을 사용해서 prometheus operator chart를 이용했다. https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-pro..

minikube로 K8s cluster설치 후 실습을 해보려는데 최초 설치하는 경우 node가 master하나만 있었기에 worker node를 추가해서 cluster환경을 구성하고 싶었다. 찾아본 결과 node를 추가하는 방법은 아주 간단했다. https://minikube.sigs.k8s.io/docs/commands/node/nodeAdd, remove, or list additional nodesminikube.sigs.k8s.io minikube node add 를 입력해서 node를 추가 할 수 있으며 여러 옵션들을 넣을 수 있는데, --worker 옵션은 default 가 true라서 특별히 추가해줄 필요는 없었다. 그리고 node를 추가한 경우 ROLES가 으로 나오는데, 필요한 경우 la..

minikube는 가벼운 쿠버네티스 구현체로 로컬 머신에 VM을 만들어 하나의 노드로 구성한 클러스터를 생성한다. minikube를 설치하려면 Docker container 혹은 VM 환경이 필요하다. 따라서 Docker 를 먼저 설치하고 minikube를 설치해보도록 하겠다. Docker 설치 아래 경로에서 Mac OS용 Docker Desktop을 다운로드 한다. https://www.docker.com/products/docker-desktop/ 현재 사용중인 Mac OS는 M1 칩이기 때문에 Apple Chip을 선택했다. dmg파일을 다운로드해서 drag and drop을 하면 Docker 설치가 완료된다. Docker Desktop App 실행시 위에 화면이 나오고 Accept를 눌러서 설치를..
회사에서 테스트 코드를 작성하던 도중 Exception 발생 시 catch 이후의 flow 를 검증해야 하는 상황이 발생했다. Exception Testing에 사용한 방법은 ExpectedException Rule 을 사용하고 있었다. ExpectedException Rule 같은 경우, 발생할(expect) exception 에 대해서 작성해 둘 뿐만 아니라 예상되는 message까지 쉽게 선언 할 수 있어서 좋은 테스트 방식으로 생각하고 있었다. 매우 간단하게 익셉션이 발생하는 메소드 호출 후 Mockito verify 메소드를 호출하면 될 것으로 예상했는데 막상 테스트 코드를 작성 하고 실행해보니 예상과 다르게 동작했다. 이를 확인해 보고자 junit wiki를 확인해보니 ExpectedExcep..

이전에 웹 애플리케이션 디렉토리 구조에 대해서 살펴봤었다. 웹 애플리케이션을 war 확장자로 패키징 하고, 이를 Tomcat과 같은 서블릿 컨테이너에 배포해서 서비스를 실행한다고 했었다. 이번 포스팅에서는 직접 war 패키징을 해보고 Tomcat에 수동 배포를 수행해 보려고 한다. 웹 애플리케이션 디렉토리 구조는 아래 글에 정리해 두었다. https://wanbaep.tistory.com/16 웹 애플리케이션 디렉토리 구조 웹 애플리케이션은 다음과 같은 디렉토리 구조를 가지며 이 구조는 웹 표준 디렉토리 구조이다. WebAppRoot ├── WEB-INF │ ├── classes │ ├── lib │ └── web.xml ├── index.html └── index. wanbaep.tistory.com ..
- Total
- Today
- Yesterday
- minikube node add
- 특정 ip
- DD파일
- Java 장단점
- 웹 애플리케이션
- ExpectedException
- WEB-INF
- MySQL 외부 IP
- Kafka
- 애노테이션 프로세서
- 서버 클라이언트
- StreamBridge
- consumer
- cpus
- 데스크톱 애플리케이션
- ServiceMonitor
- Java 특징
- Servlet Container
- Spring Cloud Stream
- Java 란
- minikube
- node add
- springboot3.x
- 애플리케이션 변화 과정
- Servlet
- Prometheus Operator
- producer
- OneToOne
- kubernetes
- docker-compose
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |