본문 바로가기

전체 글107

외부 API 호출 비동기적으로 처리하기 (WebClient, WebFlux에 대한 개 문제 상황 프로젝트에서 다수의 외부 API(데이터 파이프라인 시스템)에 순차적으로 데이터셋 아이디를 넘기고, 반환되는 결과값(전송ID와 데이터셋ID)을 DB에 적재하는 로직이 있었다 Rest template을 통해서 다수의 외부 API에 요청 후, 응답을 받으면 결과값 DB적재 그외 부차적인 DB 레코드 update 데이터 파이프라인 서비스의 데이터 처리가 느려서 외부 API의 응답이 느린경우, 클라이언트는 Timeout까지 대기 해결방법 WebClient를 사용한 비동기 / Non-Blocking 외부 API request API로 들어온 요청은 외부 API request를 다른 쓰레드에서 처리 → Non-blocking으로 클라이언트에 200 응답 비동기로 응답받은 후, DB 업데이트 → 해당 데이터.. 2024. 2. 18.
CORS 문제 해결 - Spring boot + React app간의 통신에서 (feat. Spring Interceptor) Issue 졸업프로젝트를 하는 도중에 클라이언트 (React)를 담당하는 동기에게 연락이 왔다. " CORS 문제가 나서 서버랑 http 통신을 할 수 없다! " 예전 프로젝트에서도 CORS 문제를 코드 하나로 간단히 해결해 준 경험이 있기에, 코드 하나 추가하고 배포해야지~ 하는 마인드로 CORS를 설정하는 코드를 쓰고 배포했지만 결과는 실패! (긍정) SOP 먼저 알고? Single-Origin Policy 즉, 동일 출처 정책 같은 출처를 가진 것들만 리소스들을 공유라는 현상을 이야기 한다. App A가 서버1에 위치하고 origin이 http://a.com:8080 App B도 마찬가지로 서버1에 위치하고 다른 port를 사용하고 origin이 http://a.com:8081 이라고 한다면 둘은 .. 2022. 11. 24.
프로그래머스 - 고득점 킷 : 기능개발 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 생각하기 처음에는 각 진도 상황을 deque에 넣고 계속 시간별로 for문을 돌면서 popleft 할 것들을 찾아보려했다 하지만 시간별로 가면 최대 100의 시간을 돌것이고 100개의 기능이 있다면 100개의 기능들의 진도상황을 업데이트 해주어야 할것이다 -> O(100 * 100) = O(10000) 가장 앞에 있는 기능과 뒤에 기능들의 진도상태를 비교.. 2022. 3. 25.
[Hash] 프로그래머스 : 베스트 앨범 - 파이썬 Python https://programmers.co.kr/learn/courses/30/lessons/42579?language=python3 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 생각하기 먼저 장르에 따라 dictionary에 해당 장르에 속하는 노래 idx를 분류 각 장르 딕셔너리를 돌면서 장르별 play 횟수를 counting 가장 높은 play 횟수를 가진 장르부터 각 노래 plays와 idx 기준으로 정렬 정렬된 list를 answer에 추가 구현하기 dictionary : {장르 : [idx의 리.. 2022. 3. 23.