@miiiinju 개발 블로그

@miiiinju 개발 블로그

  • 분류 전체보기
    • Computer Science
    • Backend
      • Spring
      • Spring Security
      • JPA
      • Redis
      • Docker
      • AWS
      • Java
    • PS
      • Baekjoon
      • Programmers
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

@miiiinju 개발 블로그

컨텐츠 검색

태그

최근글

댓글

공지사항

아카이브

Backend/Spring(11)

  • [모두의 랜덤 디펜스] WebClient Mocking하기 (ExchangeFunction Stubbing)

    Meta: WebClient, Mocking, ExchangeFunction, RestTemplate, Spring Boot, MockWebServer, API Testing, Reactive Programming, Mono, ClientResponse이 글에서는 Spring Boot에서 WebClient를 Mocking하는 방법에 대해 설명하고, MockWebServer와 ExchangeFunction을 사용한 두 가지 접근 방식을 소개합니다.항상 RestTemplate만 사용하다, 이번 프로젝트를 진행하면서 Http Client를 WebClient로 변경했습니다. 비즈니스 로직 중 직접 만든 lambda를 호출하여 응답을 얻는 부분이 존재하는데, 외부 API를 호출하는 부분을 Mocking하여 테스트..

    2024.04.09
  • [모두의 랜덤 디펜스] Spring Batch Processor에서 발생하는 N+1문제 삽질하기

    혹시나 정답을 알고 계신 분이 있으시다면 제가 한 분석에 관해 피드백 주시면 정말 감사할 것 같습니다 ㅜㅜ default_batch_fetch_size옵션이 들어가있음에도 불구하고 @OneToMany에 대해 N+1문제가 발생하는 상황입니다. 다른 List 내 다른 필드 ManyToOne 의 경우 batch_fetch옵션이 잘 작동했지만, List 내 OneToMany에 관해서만 문제가 발생했습니다. 문제 상황 Spring Batch에선 보통 chunk단위로 트랜잭션을 관리합니다. 트랜잭션 내임에도 불구하고 AbstractPagingItemReader를 직접 상속하여 만든 PagingCollectionItemReader에서 찾은 Item을, Processor에서 LAZY 로딩 된 필드에 접근하면 아래와 같..

    2024.04.05
  • [모두의 랜덤 디펜스] Spring @Scheduled를 이용해서 오늘의 문제 출제 로직 개발하기

    https://morandi.co.kr 모두의 랜덤 디펜스 모두의 랜덤 디펜스: 코딩테스트를 준비하는 최고의 솔루션! morandi.co.kr 모두의 랜덤 디펜스는 기업별 코딩 테스트 실전 모의고사 서비스입니다. 현재 서비스를 피봇팅하여 시즌2를 준비중에 있습니다. 개요 모두의 랜덤 디펜스에는 오늘의 문제 (DailyDefense)라는 기능이 있습니다. '오늘의 문제'는 매일 5개의 문제를 제공해주고, 사용자들이 자연스럽게 풀어볼 수 있게 하는 기능입니다. 오늘의 문제는 매일 12시에 새로 바뀌어야하고, 매일매일 바뀌는 문제를 구현하기 위해 Scheduler를 도입했습니다. ERD에서 오늘의 문제가 저장되는 테이블은 위와 같습니다. 여기에는 항상 오늘 날짜에 해당하는 DailyDefense가 존재해야하고..

    2024.03.27
  • [모두의 랜덤 디펜스] Spring Batch 5.X로 업데이트된 문제 가져오는 Job 만들기 - 2편 성능비교

    https://morandi.co.kr 모두의 랜덤 디펜스 모두의 랜덤 디펜스: 코딩테스트를 준비하는 최고의 솔루션! morandi.co.kr 모두의 랜덤 디펜스는 코딩 테스트 실전 모의고사 서비스입니다. 기존 서비스를 아주 살짝~~ 피봇팅하여 게이밍 포인트를 추가한 서비스를 개발중에 있습니다. 단일 Item vs List item 단일 Item으로 배치를 진행하는 것과 List형태의 Item으로 배치를 진행하는 것의 성능 차이가 궁금해져서 직접 실험을 해보게 되었습니다. 모두 chunk가 50일 때 기존 구현 1 : 50개 단위로 paging하는 API 호출 후 결과 모두를 queue에 저장 후, item read 호출 시 마다 하나씩 반환, (ProblemDTO) 비교하고자 하는 구현 2 : 50개 ..

    2024.03.10
  • [모두의 랜덤 디펜스] Spring Batch 5.X로 업데이트된 문제 가져오는 Job 만들기 - 1편

    https://morandi.co.kr 모두의 랜덤 디펜스모두의 랜덤 디펜스: 코딩테스트를 준비하는 최고의 솔루션!morandi.co.kr모두의 랜덤 디펜스는 코딩 테스트 실전 모의고사 서비스입니다.기존 서비스를 아주 살짝~~ 피봇팅하여 게이밍 포인트를 추가한 서비스를 개발중에 있습니다. 1차 MVP로는 백준의 문제 풀을 이용하여 다양한 컨텐츠의 문제 풀이 환경을 제공하는 것을 목표로 하고 있는데, 문제 데이터의 지속 업데이트 기능이 필요하게 되어 Spring Batch에 관심을 가지게 되었습니다.개요모두의 랜덤 디펜스에서 '랜덤 디펜스' 기능은 3만개의 문제 리스트 중에서 저희가 '정의한 로직'을 바탕으로 문제를 뽑아 사용자에게 풀 수 있게 제공합니다! '정의한 로직'은 사용자가 아직 풀어본 적이 없는..

    2024.03.09
이전
1 2
다음
티스토리 깃허브

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.