
[Springboot] kafka JSON 통신하기
2022. 10. 25. 21:32
개발/Spring
그동안 메시지 큐에 대해 알고만 있지 사용은 해보지 않았다. 메시지 큐는 어떤 서비스A가 서비스B에게 데이터를 전송할 때 서비스B가 만약 메모리등의 이슈로 정상적인 응답을 하지 못할 경우 해당 요청에 대한 데이터에 유실이 발생할 수 있어서 그 중간 매개체로 사용하게 된다. 실제로 작년에 ELK, EFK 를 구축할 때 메시지 큐를 포함한 아키텍처를 많이 보았었다. filebeat 에서 Logstash로 데이터를 전송할 때나, Logstash에서 Elasticsearch 에 데이터를 전송할 때 메시지큐를 사용하는 것이다. 메시지 큐는 카프카(Kafka), 레빗엠큐(RabbitMQ) 등의 솔루션이 있고, 이 글은 카프카를 사용하여 JSON 타입의 메시지 전송을 해볼 것이다. 카프카(Kafka) 카프카는 도커로..

[Springboot] springBoot와 springCloud 버전 맞추기
2022. 10. 24. 17:36
개발/Spring
스프링부트 application을 개발하던 중 스프링 클라우드 zipkin 을 사용하려다 에러가 발생하였다. configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.Co..

[DockerDesktop] access permissions 에러
2022. 10. 20. 10:29
엔지니어링/Kubernetes
어제까지 잘 쓰고 있던 컨테이너 하나가 갑자기 안올라간다. Error: (HTTP code 500) server error - Ports are not available: listen tcp 0.0.0.0:2181: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 필자는 kafka zookeeper 를 도커컴포즈로 올려두고 사용하고 있었는데 위와 같은 에러가 계속 나고있었다.. 로컬에 구축한 쿠버네티스에서 포트를 잡는건가? 하고 > netstat -an | findstr 2181 으로 찾아보았지만, 포트를 점유하고 있는 프로세스는 없었다............... 이리저리 검색하다보니 그냥 ..

[DockerDesktop] kubernetes 설치 후 kubectl 안될 때
2022. 10. 19. 15:42
엔지니어링/Kubernetes
이번에 로컬에 kubernetes를 올리고 테스트할 일이 생겨 docker desktop에서 클릭한번으로 구축되는 kubernetes를 해보았다. 근데 필자는 kubectl 명령어로 기존에 사용하던 cluster들 정보가 수두룩 하기때문에 신규 생성된 로컬 클러스터가 자동으로 바뀌지 않았다. 쿠버네티스 동작 확인 설치는 정상적으로 되어 running 상태이고, 실행 중인 docker Desktop icon 우클릭>kubernetes 항목을 통해 생성된 자격증명을 확인할 수 있었다. kubectl config 적용 이제 저이름을 찾아서 kubectl의 context를 지정해주면 된다. $ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPAC..

[성능테스트] nGrinder Script POST 해보기
2022. 10. 13. 17:25
엔지니어링/성능테스트
지난 포스팅에 nGrinder 설치 및 GET 테스트를 마쳤다. 이제 2가지 테스트를 해볼 건데, 로그인 시도와 로그인한 사용자만 이용할 수 있는 페이지를 요청하는 것이다. 필자가 구현해둔 application은 아래와 같다. URL Method Parameter / POST email, password /user GET - 이제 nGrinder Script 작성을 해보자. import static net.grinder.script.Grinder.grinder import static org.junit.Assert.* import static org.hamcrest.Matchers.* import net.grinder.script.GTest import net.grinder.script.Grinder i..

[성능테스트] nGrinder 사용해보기
2022. 10. 13. 16:04
엔지니어링/성능테스트
네이버클라우드에 쿠버네티스를 구축하고 springboot pod를 올렸다. 또 클라우드 서비스에서 redis, postgresql를 올렸는데, redis 캐시관련해서 성능테스트를 해보고 싶어져서 몇 년 전부터 듣기만했던 Ngrinder 를 비로소 경험 해보려 한다. Java 설치 ngrinder 는 .war 파일로 java가 깔려있어야한다. (아래 링크의 이전 포스팅을 참고하라.) 포스팅에서 설치하는 자바 버전은 jdk18 인데, grinder는 1.8 또는 11만 지원한다고 하니 버전을 잘 선택해야 한다. 우분투 20.04.3 LTS 에 openJDK 직접 설치하기 우분투에 openjdk를 설치하려하니 잘 안되서... ppa 레포를 등록하고 패키지 찾고하면 된다하는데 자꾸 안되서 수동 설치방법을 기록한..

[OpenJDK] 우분투 20.04.3 LTS 에 openJDK 직접 설치하기
2022. 10. 13. 14:21
엔지니어링/기타
우분투에 openjdk를 설치하려하니 잘 안되서... ppa 레포를 등록하고 패키지 찾고하면 된다하는데 자꾸 안되서 수동 설치방법을 기록한다. https://jdk.java.net/archive/ 해당 페이지에 들어가 다운할 tar.gz의 링크를 복사 서버에서 wget을 통해 파일을 다운 $ wget https://download.java.net/java/GA/jdk18.0.2/f6ad4b4450fd4d298113270ec84f30ee/9/GPL/openjdk-18.0.2_linux-x64_bin.tar.gz --2022-10-13 14:04:39-- https://download.java.net/java/GA/jdk18.0.2/f6ad4b4450fd4d298113270ec84f30ee/9/GPL/ope..

[PostgreSql] Error: SCRAM authentication requires libpq version 10 or above
2022. 10. 13. 13:08
데이터베이스
네이버 클라우드에 postgresql 서비스를 올리고 ubuntu VM에서 postgres-client 패키지를 다운한뒤 원격 접근하려하니 에러가 발생하였다. 에러 psql: SCRAM authentication requires libpq version 10 or above root@bastion:~# psql -h pg-ceq8g.vpc-cdb-kr.ntruss.com -U mydata -d mydb -W Password for user mydata: psql: SCRAM authentication requires libpq version 10 or above 원인 원인은 간단하다. 접근하려는 클라이언트의 psql 버전이 낮아서 그렇다. 그래서 postgresql에 접근하는 명령어인 psql 이 들어있..

[GIT] 불필요한 파일 업로드 제한하기
2022. 10. 13. 11:16
개발/기타
지난 spring 멀티 모듈프로젝트 구성 후 이것저것 테스트를 하다가 target 폴더 제한하는 방법을 기록해두려한다. 뭐 이미 알고 있듯이 .gitignore 파일을 작성하면 된다. 추가로 이미 업로드 된 상태라면 git rm -r --cache [폴더]로 지운 뒤 push 해주면 된다. .gitignore 파일 작성 git clone 후 최상단 경로에 작성해야 한다. # ignore properties file test/core/target test/market/target test/target/ .metadata test/.settings test/core/.settings test/market/.settings 적당히 target 과 .settings / .metadata 폴더를 제외시켰다. 참고..

[Eclipse] Lombok 적용하기
2022. 10. 7. 13:07
개발/기타
한번 세팅하면 까먹는 Lombok 설치방법..! 먼저 Lombok 설치파일을 다운하자. https://projectlombok.org/download 설치파일은 eclipse나 sts 설치폴더로 이동 시킨 뒤 cmd 창에서 실행시킨다. java -jar lombok.jar 약간의 로딩시간을 기다리면 자동으로 IDEs가 잡힌다. 만약 안잡히면 Specify location... 버튼을 클릭해 직접 eclipse 나 sts 실행파일을 지정해주면된다. Install / Update 버튼을 클릭해주자. 설치가 완료되었고 quit installer 로 종료하자. 다음은 pom.xml 에 lombok 디펜던시를 추가하자. 내용은 아까 다운로드받은 site에서 install 메뉴를 선택한뒤 각자에 맞는 것을 클릭하면..