현재 프로젝트(스프링부트3.0)를 진행 하던 중 젠킨스를 통한 CI/CD를 구축하던 중에 젠킨스는 java11만 지원하는것을 알고 17로 업그레이드를 해줘야 하는 상황이 왔다. 스프링부트 3.0은 자바 17부터 지원한다. JDK17 로 Jenkins 변경 .. version: '3.8' services: jenkins: image: jenkins/jenkins:lts-jdk17 container_name: jenkins environment: - TZ=Asia/Seoul user: root privileged: true ports: - 8080:8080 - 50000:50000 volumes: - /volume1/docker/jenkins:/var/jenkins_home - /var/run/docker...
분류 전체보기
클라이언트의 요청을 Dispatcher Servlet에 전달Dispatcher Servlet 요청한 url에 맞는 controller 가 있는지 Handler Mapping이 검색Handler Mapping에서 해당 controller에 처리 요청controller에서 처리 결과를 Handler Adapter 를 통해 ModelAndView 객체로 변환하여 Dispatcher Servlet에 전달Dispatcher Servlet에서 전달받은 ModelAndView 객체를 이용하여 매핑되는 View를 View Resolver검색View Resolver에서 처리 결과를 View에 전달처리결과가 포함된 View를 Dispatcher Servlet에 전달Dispatcher Servlet에서 최종 응답 결과를 클..
Index 인덱스란 뭘까 ?데이터베이스 인덱스는 추가 쓰기 및 저장 공간을 희생 하여 테이블에 대한 데이터 검색 작업의 속도를 향상시키는 데이터 구조입니다 .(DB에서 검색이 이루어 질땐 컴퓨터는 처음부터 끝까지 모든 데이터를 검색한다.)JPA에서 Index를 설정한다는 것은대부분 단일 테이블에서 선택한 데이터 열을 복사하여 만들어 놓는다. 어떤 엔티티를 대상으로 사용해야 할까 ?* 중복도가 낮은 것 !주민번호 / 중복이 낮다. 성별 / 중복이 매우 높다. 같이 남 / 여 두가지만 존재하여 여러값들이 중복이 많은 데이터는 피해야 한다 ! * 크기가 큰 테이블 인덱스 설정 @Index @Target({})@Retention(RUNTIME)public @interface Index { String ..
문제 로컬 -> 로컬(도커) -> 외부서버 스프링 -> 카프카 -> ELK 구성하던 중 스프링과 카프카는 둘 다 로컬에 있으니 localhost:xxxx를 사용하면 되는줄 알았다. 로컬 환경에서 실행되는 스프링 애플리케이션은 도커의 내부 네트워크 주소에 직접 접근할 수 없으므로, 외부 주소를 사용해야합니다. 따라서 스프링 애플리케이션의 bootstrap.servers 설정은 localhost가 아니라 로컬 머신의 IP 주소(외부접속주소)로 설정되어야 합니다. 이러고 외부 주소만 쓰면 될 줄 알았는데 공유기 포트 포워딩도 해주어야 됏다. 정리 Check List 도커 (외부접속으로 간주) 로컬 -> 도커 - 외부접속 설정 ( ip:port ) 공유기설정창 -> 도커IP로 포트포워딩
키바나를 접속해서 데이터를 생성 수정 삭제를 하려면 계정을 추가 해주어야 한다. 1. 컨테이너에서 생성방법 2. 키바나에서 생성방법 엘라스틱 서치 설정파일에 들어가서 /etc/elasticsearch/elasticsearch.yml xpack.security.enabled: true xpack.security.enabled: true 로 바꾸어준다. 이미 설정 되어있으면 안바꿔줘도 됌. 컨테이너에서 생성방법 유저생성 #엘라스틱서치컨테이너에 접속 docker exec -it 엘라스틱서치컨테이너명 bash #유저추가 elasticsearch-users useradd 유저명 #유저삭제 elasticsearch-users userdel 유저명 비밀번호 설정 후 권한설정 #권한설정 elasticsearch-use..
problem로그를 카프카로 보내려면 logback 에 토픽정보와 bootstrap.servers = ip:port 등 민감한 정보가 있어 application.properties에 환경변수로 만들어 주어 사용하여야 했다. %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n--> ${kafkaLoggingTopic} bootstrap.servers=${nasIp}:${kafkaLoggin..
프로듀서(Producer) 메세지 발행자 / 생성 , 추가 컨슈머Consumer 메세지 수신자 / 조회 브로커(Broker) 카프카 서버 단위 / 데이터를 저장하고 컨슈머에게 전달하는 역활 ex. 카프카 서버 3대있어 = 브로커 3대 클러스터 (Cluster) 카프카서버(브로커)의 그룹 브로커3대로 클러스터 1대 구성 토픽 (Topic) 카테고리 및 주제 데이터(레코즈)들이 보관 될 장소 하나 이상의 파티션으로 존재 파티션(Partition) - 속도 / 병렬처리 토픽의 조각 토픽을 세분화 저장 - 병렬처리 가능하게 함 레플리카(Replica) - 안정성 나눠진 파티션들의 복제본 ( 토픽의 복제본 ) 토픽이 문제가 생길시 복구 가능 파티션과 레플리카가 뭐임 ? 파티션은 토픽의 데이터를 세분화하고 병렬 ..
Check 사항 앞서 작성했던 docker-compose.yml KAFKA_ADVERTISED_LISTENERS( 외부 접속을 담당 ) 에 EXTERNAL IP를 넣어주어야 한다. KAFKA_LISTENERS 는 카프카 내부에서 연결해주는 옵션이니 모든 외부접속을 열어준다. 로컬에 띄었다면 저부분을 localhost로 설정. environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_BROKER_ID: 1 KAFKA_LISTENERS: INTERNAL://:19092,EXTERNAL://:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT KAFKA_ADVERTISE..