본문 바로가기

Spring34

[USports] Websocket 구현 [USports] Websocket 구현 build.gradle implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.webjars:sockjs-client:1.1.2' implementation 'org.webjars:stomp-websocket:2.3.3-1' WebSocketConfig @Configuration @EnableWebSocketMessageBroker // STOMP를 사용 안 하고 EnableWebSocket으로 사용할 수 있다 public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Overri.. 2023. 12. 25.
[USports] Websocket 소개 [USports] Websocket 소개 HTTP 프로토콜 같은 경우 클라이언트가 요청을 보내고, 보낸 요청을 서버에서 응답을 하는 방식이다 웹에서 이루어지는 데이터 교환의 제일 기초적인 단계다 하지만 요청을 하고 응답을 하는 하나의 사이클이 끝나면, 클라이언트와 서버간의 연결은 끝나게 된다 example 클라이언트가 https://www.naver.com 을 서버에 요청을 한다 서버는 해당 페이지를 찾아서 응답을 해준다 클라이언트가 페이지를 받으면 클라이언트와 서버의 연결 상태는 끊기게 된다 즉 주식 정보, 비트코인 정보 같이 실시간으로 봐야하기 위해서는 새로 고침을 계속 눌러야 할 것이다 즉 실시간 데이터를 받기 위해 여러 방법이 있다 Polling & Long Polling Polling 같은 경우.. 2023. 12. 18.
[MovMag] WebClient [MovMag] WebClient 처음에는 외부 API를 통해서 JSON 파일로 파싱을 해서 데이터를 가지고 왔다 RestTemplate이라는 라이브러리를 추천 받았다 하지만, Spring 문서에서는 Spring 5.0에서부터는 RestTemplate보다는 WebClient를 사용하라고 권고하고 있다 NOTE: As of 5.0 this class is in maintenance mode, with only minor requests for changes and bugs to be accepted going forward. Please, consider using the org.springframework.web.reactive.client.WebClient which has a more modern A.. 2023. 11. 6.
[MovMag] ElasticSearch + MySQL [MovMag] ElasticSearch + MySQL 참고한 블로그!!! https://backtony.github.io/spring/elk/2022-03-02-spring-elasticsearch-2/ 해당 프로젝트에서는 영화 DB를 TMDB API에서 가지고 와서 MySQL에 저장을 해 놓은 상태다 ElasticSearch는 DB가 아닌 검색 엔진이기 때문에, MySQL에 저장되어 있는 포멧을, ElasticSearch 포멧으로 바꿔놔야 한다 스프링에서는 Entity를 통해서 DB와 연결을 했다면, ElasticSearch는 Document를 사용한다 한 프로젝트 안에 Entity와 Document 두 개를 정확해 어노테이션을 통해 명시를 해야 한다 하드 코딩으로 Document를 만들지 않고, E.. 2023. 11. 3.
[MovMag] ElasticSearch setup [MovMag] ElasticSearch setup 엘라스틱서치? 처음에는 query문을 통해서 원하는 내용을 출력하려고 했다 like 문을 사용할 수 있지만, 데이터가 너무 많을 때에는 찾는 속도가 느려질 수 있다 현재 만들고 있는 MovMag 이라는 영화 리뷰 API 자체에서, DB에 저장한 영화 개수만 10,000개가 넘고, 캐스트 수는 100,000명이 넘었다 엘라스틱서치는 DB는 아니지만, 방대한 양의 데이터를 신속하고 거의 실시간으로 저장, 검색, 분석할 수 있다 ELK (ElasticSearch / Logstatsh / Kibana) 단독으로 ElasticSearch를 사용하여 검색 기능을 구현할 수 있다 ElasticSearch : 분석 및 저장 기능을 담당 Logstatsh : 수집 기능.. 2023. 11. 2.
[MovMag] 20231031 오늘 배운 것 (@Asnyc) [MovMag] 20231031 오늘 배운 것 @Async TMDB 오픈 API를 가져올 때, 너무 많은 데이터를 가져오는 탓에 데이터를 수집하는 속도가 느렸다 500 페이지의 영화 (한 페이지 당 20개) => 10,000개 캐스트 정보 (한 영화를 만들기 위해 많은 사람들이 필요하다) : 163,404명 동기적으로 할 때에는 예측할 때에는 1시간에 약 120페이지의 데이터를 저장할 수 있었다 비동기를 사용하여 데이터를 가지고 왔을 때, 10분 안에 50페이지의 데이터를 저장했음 (1시간 안에 저장) AsnycConfig @EnableAsync @Configuration public class AsyncConfig implements AsyncConfigurer { @Override public Exe.. 2023. 10. 31.
[Java] 오늘 배운 것 20231025 [Java] 오늘 배운 것 20231025 JWT 토큰 @PostMapping("/login") public TokenDto login( @RequestBody @Valid MemberLogin.Request request ) { MemberLogin.Response loginInfo = memberServiceImpl.login(request); return "토큰이 생성되었습니다 : Bearer " + tokenProvider.generateToken(loginInfo.getEmail(), loginInfo.getRole()); } 토큰을 생성하고, 바로 리턴을 했다 이렇게 하면 나중에 유저가 API를 사용할 때에 토큰을 계속 복사, 붙여넣기를 해야하는 불편함이 있다 @PostMapping("/log.. 2023. 10. 25.
[스프링 부트 핵심 가이드] Chapter 13장. 서비스의 인증과 권한 부여 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 13장. 서비스의 인증과 권한 부여 어플리케이션을 개발하다 보면, 유저들이 인증과 인가를 해야 사용할 수 있는 기능들을 개발하게 된다 즉 보안 기능을 추가 해야 한다는 것이고, 보안을 위해서는 스프링에서 Spring Security가 있다 어플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위 프로젝트 중 하나 보안 관련된 많은 기능을 제공한다 보안 용어 이해 인증 (Authentication) 사용자가 누구인지 확인하는 단계다 (로그인) 확인이 되면, 서버는 유저에게 토큰을 전달한다 이 토큰을 이용하여, 유저는 원하는 리소스에 접근할 수 있게 된다 인가 (Authorization) 인증된 토큰, 즉 검증된 유저가 어플리케이션.. 2023. 10. 14.
[스프링 부트 핵심 가이드] Chapter 12장. 서버 간 통신 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 12장. 서버 간 통신 최근 서비스들은 마이크로 서비스 아키텍처 (MSA)를 주로 채택하고 있다 이 뜻은 어플리케이션이 가지고 있는 기능 (서비스)이 하나의 비즈니스 범위만 가지는 형태이다 이런 MSA를 도와주는 RestTemplate과 WebCilent가 있다 RestTemplate이란? 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다 서버와의 통신을 단순화한 템플릿을 사용하여 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다 기본적으로 동기 방식이고, 비동기 방식으로 바꾸기 위해서는 AsyncRestTemplate을 사용하면 된다 하지만 RestTemplate은 중단된 상태라서 WebClient 방식도 .. 2023. 10. 8.