일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 쇼트유알엘
- AWS
- visualvm
- CentOS
- 남궁성과 끝까지 간다
- Kafka
- 카프카
- 패스트캠퍼스
- 프로그래머스
- 스프링의 정석
- Spring Security
- 스파르타코딩클럽
- @jsonproperty
- 시큐리티
- JWT
- 스웨거
- JavaScript
- DB
- 개인프로젝트
- MYSQL
- emqx
- 항해99
- 생성자 주입
- EC2
- Spring
- 웹개발
- java
- 데이터베이스
- docker
- WEB SOCKET
- Today
- Total
목록2024/07 (7)
Nellie's Blog
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/xg6KX/btsIThQ6tZ7/y8vKSY9Pv4bMGtdi1yrD9k/img.png)
1. 레디스 캐시 안 썼을 때 조회 시간SecuritySupportSvcImpl @Override public List getLoginUserRole(String userId) { return securitySupportDao.getLoginUserRole(userId); } 컨트롤러 @GetMapping("/mapg") public List getLoginUserRole() { final List list = securitySupportSvc.getLoginUserRole("admin"); return list; } 호출을 하면 64초 정도가 나온다. 여러번 호출해봐도 비슷하다. 2. 레디스 캐시 썼을 때 조회 시간SecuritySupportSvcImpl @C..
키밸류 저장소인 Redis는 유명한 클라이언트 라이브러리들이 3가지가 있습니다. Lettuce, Redisson, Jedis가 있는데, 오늘은 스프링 데이터 레디스와 Lettuce, Redisson 이렇게 3가지를 비교하며 코드를 작성해보겠습니다. (Jedis는 구현 방식이 간단하지만, 비동기 처리를 지원하지 않으며 Thread-safe 하지 않아 잘 쓰지 않는 추세라고 합니다.) 📝 목차1. spring data redis2. Lettuce3. Redisson사용 사례별 추천 💻 사용한 기술spring boot : 3.3.1java : 17Mavenspring-data-redis : 3.3.1lettuce : 6.3.1redisson : 3.16.3 1. spring data redissprin..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bd1o7V/btsIAbZ2BA5/8NJE5OdZKld22uh8CZfQb1/img.png)
카프카 스트림즈 애플리케이션을 이중화 하기 위해, 원래 자바 프로그램에서 빼고 따로 프로젝트를 만들어서 포트만 다르게 하여 jar 로 만들었다. 운영 시, 부하 문제로 카프카 스트림즈 애플리케이션이 죽을 수도 있을 것 같아서 따로 생성을 했다. 사전 작업으로는 8088, 8089 포트를 지정하여 jar로 만든 후, 원격 서버에 scp 명령어로 전송한 상태이다. JSch 라이브러리를 사용하여 Java에서 SSH 연결을 설정하여 jar1을 10초에 한번씩 헬스체크하고, jar1이 죽으면 jar2를 원격 서버에서 실행하는 방법으로 코드를 구현했다. 1. 자바 코드 구현1. JSch 라이브러리 추가먼저, Maven을 사용한다면 pom.xml 파일에 JSch 라이브러리를 추가 com.jcraft ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Gh1n6/btsIwUp3HkV/WB8Sra1TnY8QScKCY3Lv4K/img.png)
카멜케이스로 코드를 작성했는데 스네이크케이스로 요청이 온다면 어떻게 할까? Jackson 라이브러리에서 제공하는 ObjectMapper 객체는 어노테이션으로 @JsonProperty와 @JsonNaming 을 제공해준다.Snake Case 데이터를 받아, Camel Case 변수에 데이터를 바인딩 해준다. 스네이크케이스 말고도, 케밥케이스 등 많은 데이터와 매핑하는 기능을 제공한다. 예제로 실습을 해보자. 컨트롤러 @PostMapping("/test/test") public TestDto testTest(@RequestBody TestDto testDto) { return testDto; } 포스트맨 요청스네이크 케이스로 데이터를 post한다.post) http://localhost..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/egXSC2/btsItP3G7ks/k800ZNokT3GKgZrViNC9Qk/img.png)
차량의 실시간 위치 데이터 (위도, 경도) 를 MQTT를 사용한 웹소켓으로 대시보드에 실시간으로 변하는 데이터를 보여주었다. 카프카 컨슈머에서 받은 데이터를 바로 MQTT로 메시지 전송하였다. MQTT 프로토콜을 지원하는 메시지 브로커인 EMQX 오픈 소스 브로커를 사용하였다. 실시간으로 데이터를 보여주는 것이 목적이었고, 그 다음으로는 초당 몇건을 보여줄 수 있는지를 테스트 했다. 스프링 부트 버전 : 2.5.4자바 버전 : 1.8카프카 버전 : 3.7.0MQTT 버전 : 1.2.5 pom.xml 의존성을 아래와 같이 받아준다. org.eclipse.paho org.eclipse.paho.client.mqttv3 1.2.5 org.springframework.integrati..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c5ppec/btsIqQz2iE6/xtHxUJddZbkilC7XLL0UG0/img.png)
오늘은 RestTemplate을 사용하여 요즘 매우 핫하고 확장성이 뛰어난 MSA(Microservice Architecture) 프로젝트를 만들어 보았습니다. WAS 2개를 사용하여 서버간 통신으로 데이터를 API로 전송하는 서비스를 구현하며 정리했습니다. (실제로 요구사항이 들어왔을 때를 가정하고 프로젝트를 만들어 보았습니다. ) 📝 목차 1. 데이터를 전송하는 localhost:8081 서버와 API 만들기2. 데이터를 받는 localhost:8080 서버와 API 만들기3. 테스트 👇 RestTemplate 과 동기식 요청이란 더보기🙋♀️ RestTemplate 이란?HTTP 통신을 위한 도구로 RESTful API 웹 서비스와의 상호작용을 쉽게 외부 도메인에서 데이터를 가져오거나 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cm5DmI/btsIg8oQcF3/DQPKtZdzOtKgzvUlYBS73k/img.png)
카프카 브로커를 스케일 아웃 하는 것은 처리량을 늘리기 위한 방법은 아니다. (처리량을 늘리려면 가장 먼저 파티션을 늘려야 한다)카프카는 리더 브로커만 실질적으로 프로듀서와 통신하고 나머지 팔로워 브로커는 복제만 담당하기 때문이다. 하지만 혹시 모를 이슈 상황을 대비해 카프카 브로커를 스케일 아웃 해보았다.현재 카프카 브로커는 3개이며 5개로 스케일 아웃을 하고, 다시 3개로 스케일 인을 해보았다. 카프카 버전 : 3.7.0총 소요시간 : 8시간 (인증세팅이 없으면 1시간도 안걸리는 작업이지만, 카프카 브로커 sasl 인증을 추가해 줄 때 Credential을 자꾸 추가해 주는 실수를 해서... 오래 걸렸다. 한번 주키퍼에 저장된 Credentail은 다시 지정해줄 필요가 없다. 인증 프로세스 숙지..