20220717 WIL
·
Memorization
이번 주는 구현하느라 정신없는 날이었다...! MVP를 진행하는 동안 다뤄보았던 기술 스택을 정리해 보자면 WebClient를 공부했고 Lazy Subscription으로 MVC 패턴에 적용해 보았다. 😅 그 과정에서 Reactive Progrmming, WebFlux를 학습했으나 RestTemplate의 속도가 10%가량 빨라 프로젝트에는 RestTemplate를 주로 사용하고, JMeter를 적용해 Concurrent User에 대해 성능 테스트를 해 볼 예정이다. RestTemplate을 도입한 이유는 공공 API, 카카오맵 API를 이용하기 위함이다. 공공 API에서 배리어 프리 업장을 얻어오고, 공공 API 데이터를 검증하고 더 많은 정보를 얻어오기 위해 카카오맵 로컬 API(키워드 검색, 위도..
20220711 TIL
·
Memorization
Entity Class의 첫 설계가 중요한 것 같다! 자연 상태의 그대로를 저장하는 것이 좋은 것 같다. 현재 우리의 위도/경도는 String으로 선언되어있다. Repository에 있는 시작 위도/경도, 끝 위도/경도에 해당하는 범위에 있는 Store를 호출하고자 한다. 이 때 형변환이 필요하기 때문에 QueryDSL를 사용해보고자 한다. 현재 오류가 나는 QueryDSL 코드는 return queryFactory.selectFrom(store) .where(store.latitude.castToNum(Double.class).goe(latStart), store.latitude.castToNum(Double.class).loe(latEnd), store.longitude.castToNum(Double..
20220710 TIL&WIL
·
Memorization
이번주에 있었던 큰 변화..😢 현재 Spring MVC로 구현되어있으며, Spring Data JPA 및 QueryDSL을 활용하는 우리 어플리케이션에서 Spring MVC에서 Spring WebFlux으로의 전환은 많은 시간을 필요로 해서 고려하지 못했다. 진행하던 프로젝트에 WebClient와 RestTemplate 모두를 어플리케이션에 적용해 보고, 어느 것이 더 효율이 높을까 측정해봤다. 현재 외부 API 호출의 흐름도는 다음과 같다 각각의 호출 결과가 다음 호출의 매개변수로 사용되는 형태이다. 또한 Blocking으로 WebClient를 구현하면 WebClient의 메리트가 떨어져서 아래와 같이 Lazy Subscription을 이용하여 구현해 보았다. .bodyToMono(SomeData.cl..
20220708 TIL
·
Memorization
WebClient를 버려야 하는걸까? 😢 러닝커브가 너무 높다 허허;; 그래서 구글링하다가 찾은 Lazy Subscribe를 통한 Stream 또는 Iterable 로 변환 시킬 수 있는 Flux.toStream() , Flux.toIterable() 함수를 이용했다 내일은 위의 방식으로 구현한 WebClient와 RestTemplate을 비교해보고자 한다. 둘 중 효율이 높은 쪽을 선택할 것 같다😔 WebClient로 호출한 REST API public LocationKeywordSearchForm giveLatLngByAddressRest(String address) throws JsonProcessingException { WebClient client = WebClient.builder() .ba..
20220707 TIL
·
Memorization
벌써 실전 프로젝트가 2주나 지났다니.. 상상도 못할 일이다 뭔가 점점 컨디션도 나빠지고, 번아웃이 올랑말랑 하는 것 같다 이럴 때 일수록 쉬운 작업도 섞어줘가면서 해야 될 듯 싶다 WebClient를 꼭 Async/NonBlocking으로 처리하고 싶었는데.. 😢 일단 계속 바꿀 수 있도록 노력해야겠다 현재 WebClient를 거치고 나면 이렇게 값이 저장되고 있다. 그리고 Docker/Jenkins를 Github Action으로 전환해볼까 생각해보고 있어서 이전에 했던 코드를 정리하면서 다시 적용해보는 중이다!
20220705 TIL
·
Memorization
프로젝트 맡은 부분이 딱 내가 부족한 비동기/동기, 함수형 프로그래밍인 것 같아 좋다 😊 오늘은 Web Client에서 private 필드를 못 꺼내오는 이 상황에 대해서... 삽질을 해볼 예정이다 왜 public은 긁어오고 private은 못 긁어올까 1️⃣ bodyToMono 자체에서 class로 매핑을 하는 게 맞을지 2️⃣ bodyToMono를 String으로 가져와서 파싱하는 게 나을 지 모르겠다! 1️⃣을 적용하면서 막혀 있는데, 일단 돌아가는 2️⃣번을 확실히 정립하고 1️⃣을 테스트하면서 적용해보아야 할 듯 싶다 생각보다 해결방법이 간단했다 ㅜㅜ API 에서 던져주는 필드값이 대문자라서 발생하는 에러였다. 그리고 Non-blocking으로 구현하고 싶었으나, API끼리의 결합도가 높아서 (..