목록2024/04 (5)
코딩블로그
Mobi는 서울시 실시간 도시 데이터의 데이터를 가져오는 것이 중요한 프로젝트이기에 과거의 프로젝트 경험을 통해 사용성을 더 높이기 위해 Spring MVC의 @Async말고 Webflux를 사용하기로 하였다.사용하기 전에 Webflux에 대한 이해가 필요한 것 같아 정리해 보려고 한다. - 낮은 지연시간과 처리율이 높은 작업량을 개선시키기 위해 Sprng webflux를 사용한다- 개발자들에게 비동기적이고 non-blocking 애플리케이션을 만들 수 있다. Reactive Programming이란?- 인터넷 전체에서 모든 사용자가 Big Data를 사용하는 데에 있어서 millisecond의 반응 속도로, 시스템 일부가 망가져도 동작하고, 시스템 자원은 신축성이 있게 운영되고, 데이터를 주고 받는 ..
이미 진행이 된 프로젝트에 합류를 하다 보니 코드 컨벤션 맞추어서 해야하는데 오랜만에 팀 프로젝트로 진행하다 보니 컨벤션 실수도 하고 새로 알게 된 점들도 있다. 그중에서 Spotless이라는 플러그인을 알게 되었는데, 테스트 코드의 컨벤션을 지킬 수 있게 도와준다. 나름 유용할 것 같아서 팝콘메이트에도 적용을 해보았다. (과거에 한창 프론트엔드 할 때 VSCode의 prettier 플러그인을 애용했는데 스프링 부트에서도 비슷한 플러그인을 제공해준다니!!) Spotless란? Junit5에서 컨벤션을 지키고 쉽게 유지보수하기 위해 사용하는 플러그인이다 메인 루트의 Build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.1' ..
상영회 생성하는 API가 잘 호출이 되는지 확인하기 위한 테스트를 구성해보아서 간단하게 200뜨는 것 보고 처음에는 "아~ 잘되네~~"하고 넘어갔는데 다른 사람들 코드를 참고해보니까 실제로 API를 호출하고 Body안에 원하는 Response까지 받아와야 되는 것을 깨닫게 되었다. 그래서 Body안에 원하는 값을 받아오기 위해서 트러블슈팅을 해보았다. 나는 Controller를 테스트하기 위해서 @AutoConfigureMockMvc 어노테이션을 사용한다 웹 환경에서는 반드시 서블릿 컨테이너가 구동되고 DispatchServlet 객체가 메모리에 올라가야 한다. 그래서 저 @AutoConfigureMockMvc 어노테이션을 사용해서 서블릿 컨테이너를 Mocking하여 실제로 테스트용 모형 컨테이너를 사용..
이번에 팝콘메이트 하면서 통신할 때 에러 코드나 짤막한 에러 원인을 받아 볼 수 있게 하였는데, 그 정보들만 가지고 원인을 해결하지 못할 때가 있다 보니 리팩토링 할 겸 팀 공용 디스코드에 로그 전체를 볼 수 있는 시스템을 만들어 보려고 한다 먼저 팀이 사용하는 디스코드에서 웹후크를 만들려면 채널 설정 -> 연동 들어가서 웹후크 만들기를 누르면 된다! 간단한 작업이다 본격적으로 코드 구현에 대해 알아보자 (1) FeignClient 이용하는 방식 먼저 DiscordClient 클래스에 Controller 클래스에 메서드 짜주는 것처럼 인터셉터를 위한 메서드를 써준다 @FeignClient( name = "discord-client", url = "웹후크 URL", configuration = Discor..
문제점 팝콘작 추천하기 기능에서 TMDB API를 사용하는 데 OKHTTP를 Feign Client로 바꾸어 API 성능을 개선을 했었다 https://hanbxx.tistory.com/56 TMDB OPEN API 연결 OKHTTP -> FeignClient로 변경해서 구현하기 +Test 코드 작성하기 팝콘메이트에서 외부 API와 통신하는 기능이 적지 않다. 카카오와 애플은 이미 FeignClient를 이용하여 구현을 하였는데, 영화 관련 Open Api (영진위,TMDB)는 OKHTTP를 이용하여 사용하고 있다. 이미 FeignC hanbxx.tistory.com 이 포스팅에서 다루어보았다 우선 실제로 API 성능 테스트나 모니터링을 직접 해본 적이 없어서 개선했던 API의 성능을 측정해보려고 한다 ..