본문 바로가기

프로젝트/MovMag5

[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.
[MovMag] 오늘 배운 것 - 20231030 [MovMag] 오늘 배운 것 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("/login") pu.. 2023. 10. 31.