yeong0jae yeong0jae
close
프로필 사진

yeong0jae

github: @yeong0jae

  • 분류 전체보기 (31)
    • woowacourse (7)
    • 컨퍼런스 (1)
      • 2024 (1)
    • Tomcat (1)
    • Redis (3)
    • Project (3)
    • Infra (2)
    • Kotlin (3)
    • Java (3)
    • Spring (1)
    • OOP (2)
      • 객체지향의 사실과 오해 (2)
    • CS (1)
      • OS (1)
      • Network (0)
    • MySQL (0)
    • Algorithm (4)
      • 코딩테스트 후기 (1)
      • 문제 풀이 (3)

Transactional Outbox Pattern으로 비동기 작업 신뢰성 보장하기

배경두게더 서비스의 핵심 기능 중 하나는 챌린지 그룹 멤버들 사이의 상호작용입니다. 사용자가 투두를 완료하면 사진과 설명으로 인증을 요청하고, 같은 그룹의 다른 멤버가 그것을 검사해서 인정하거나 거절하는 방식입니다. 즉, 사용자는 투두 작성 → 인증 생성 → 알림 → 검사 이라는 흐름을 거치게 됩니다.알림을 통해 사용자들은 상호작용하며 챌린지를 이어가며, 인증 → 알림은 서비스에서 정말 중요한 기능이라고 할 수 있습니다. 현재 코드투두 인증 요청을 하게 되면 현재 다음과 같은 순서로 동작합니다.@Transactionalpublic void certifyDailyTodo( final Long memberId, final Long dailyTodoId, final String certify..

2025. 11. 4.

파일 다운로드 경험 개선: 비동기 작업 분리, Polling 기반 진행률 추적하기

배경이전 글에서 BlockingQueue 기반 이미지 다운로드 병렬 처리를 통해 성능을 개선했습니다. 이미지가 포함된 피드백 50개 (운영 서버 내 단체의 피드백 평균 개수) 기준으로 다운로드 시간을 5초에서 500ms로 단축하였고, 메모리 사용량도 안정적으로 제어할 수 있었습니다. 하지만 파일 생성 과정 전체로 보면 여전히 긴 시간이 소요됐습니다. 이미지 다운로드 외에도 피드백 조회, 엑셀 생성과 이미지 삽입, 디스크 flush 등 여러 단계를 거쳐야 했기에 결과적으로 전체 파일 생성에는 약 10초가 소요되었습니다. 여기서 문제는 이 10초 동안 사용자에게 아무런 응답을 주지 못한다는 것이었습니다. 사용자는 다운로드 버튼을 누른 후 서버에서 파일 생성이 완료되는 10초 간 응답을 받지 못하고, 파일이 ..

2025. 10. 12.

병렬 처리하면 무조건 좋을까? : BlockingQueue로 파일 다운로드 성능 & OOM 개선하기

배경피드줍줍 서비스를 운영하며 다음과 같은 피드백을 받았습니다.단체 관리자를 위해 피드백 데이터를 외부에서 활용 가능한 형태로 제공되면 좋겠음현재 웹 화면 만으론 데이터 분석, 보고서 작성, 외부 도구 연동이 어려움이를 해결하기 위해 관리자들이 수집한 피드백 데이터를 엑셀 파일로 내보내는 기능을 개발했습니다.피드백에는 이미지도 포함되어 있기 때문에 수십개의 이미지를 어떻게 안정적이게 다운받고 엑셀 파일에 첨부시킬지 고민하게 되었습니다. 기능은 아래와 같이 피드백 추출 버튼을 누를 시 엑셀 파일이 다운되도록 동작합니다. 다운을 받고 나면 위와 같이 피드백 데이터가 정리된 엑셀 파일을 볼 수 있습니다. 엑셀 생성 방식 선택먼저 자바에서 엑셀을 생성하는 방법에 대해 조사한 결과, 대표적으로 두 라이브러리가 있..

2025. 10. 7.
  • navigate_before
  • 1
  • navigate_next
공지사항
전체 방문자
오늘
어제
전체 카테고리
  • 분류 전체보기 (31)
    • woowacourse (7)
    • 컨퍼런스 (1)
      • 2024 (1)
    • Tomcat (1)
    • Redis (3)
    • Project (3)
    • Infra (2)
    • Kotlin (3)
    • Java (3)
    • Spring (1)
    • OOP (2)
      • 객체지향의 사실과 오해 (2)
    • CS (1)
      • OS (1)
      • Network (0)
    • MySQL (0)
    • Algorithm (4)
      • 코딩테스트 후기 (1)
      • 문제 풀이 (3)
인기 글
Copyright © yeong0jae 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바