내멍냥봐(NMNB)
close
프로필 사진

내멍냥봐(NMNB)

github: @NMYB-Team

  • 분류 전체보기 (6)
    • spring (4)
    • React Native (1)
  • 홈
  • 태그
  • 방명록
Spring WebFlux + Coroutine으로 구현한 비동기 영상 업로드 기능

Spring WebFlux + Coroutine으로 구현한 비동기 영상 업로드 기능

🔸들어가며…기존의 Spring Boot 애플리케이션은 Spring MVC 기반으로 구성되어 있었고, 내장 톰캣(Tomcat) 서버를 사용하고 있었습니다.하지만 영상 업로드와 같은 대용량 데이터를 효율적으로 처리하기 위해서는 비동기 방식의 서버(Netty 기반 WebFlux)가 필요했고, Spring Boot에서는 WebMVC와 WebFlux를 동시에 사용하는 것이 어렵기 때문에, 각 서버를 분리하기 위해 멀티모듈 구조를 도입하게 되었습니다! 현재 저희 서비스의 멀티모듈 구조는 다음과 같습니다. 📁 domain : 핵심 도메인 로직(엔티티, 인터페이스 기반 repository)📁 application : Service 계층📁 application-bootstrap : Application 모듈을..

  • format_list_bulleted spring
  • · 2025. 6. 24.
영상 랜덤 조회 기능 구현기: Seed 기반 랜덤 + 캐시로 성능 개선하기

영상 랜덤 조회 기능 구현기: Seed 기반 랜덤 + 캐시로 성능 개선하기

🔹들어가며….이번에는 구현한 기능은 인스타 릴스나 유튜브 쇼츠처럼 사용자별 랜덤으로 영상을 보여주는 기능입니다! 랜덤 정렬을 어떻게 효율적으로 처리할 것인지, 그리고 성능은 어떻게 유지할 것인지에 대한 고민이 필요했습니다.이번 포스팅에서는 이 고민들을 어떻게 해결했는지 랜덤 조회 방식부터 캐시를 활용한 성능 개선까지의 과정을 공유해보려 합니다일단 조건을 정리해봅시다.🔸조건한 페이지당 7개의 데이터 응답중복 없게 랜덤으로 조회해서 넘기기 🔸 어떤 방법이 있을까...처음 떠오른 방법은 ORDER BY RAND() 를 사용하는 방법이었습니다. SQL에서 ORDER BY RAND()를 쓰면 전체 데이터를 한 번 다 읽은 다음, 메모리에서 섞어서 필요한 만큼만 가져올 수 있습니다. 간단하고 편하긴 한데 문제..

  • format_list_bulleted spring
  • · 2025. 6. 4.
좋아요 등록/취소 기능 구현 : 캐시와 비동기를 활용한 성능 최적화

좋아요 등록/취소 기능 구현 : 캐시와 비동기를 활용한 성능 최적화

🔸들어가며.. 이번 게시글은 좋아요 등록/취소 기능을 구현하며 있었던 일들을 공유해보겠습니다! 🤔고민 1 …| 😒 유저가 좋아요를 누르거나 취소할 때마다 계속 쿼리를 날려줘야 하는 것인가?좋아요 누르기 취소는 엄청 빈번하게 요청되는데요, 만약 사용자가 엄청 늘어나게 되고 그 사용자들이 엄청 빈번하게 좋아요 기능을 요청하게 된다면 …. 데이터베이스는 매번 읽고 쓰기를 하며 부하가 폭발하게 될 것 입니다. 이 문제를 해결하기 위해서 보다 빠르게 접근할 수 있는 🌟캐시🌟를 사용해보기로 했습니다! 캐시를 사용하면 DB에 접근하지 않고 빠르게 조회해 바로 응답 가능하기에 성능상 이점을 가지게 됩니다. 🔸프로덕션 코드 구현Redis를 사용하려고 합니다.🔹1. 캐시 저장 일단은 캐시에서만 저장하고 조..

  • format_list_bulleted spring
  • · 2025. 5. 21.
커스텀 ID 적용하기 : UUID와 NanoID, Hibernate IdentifierGenerator 기반으로 리팩토링까지!

커스텀 ID 적용하기 : UUID와 NanoID, Hibernate IdentifierGenerator 기반으로 리팩토링까지!

🔹들어가며….안녕하십니까…오늘은 Entity를 생성하며 고민되었던 지점에 대해서 나눠보려고 합니다. 주요 주제는 기본키 생성전략을 따르는것이 아닌, 커스텀으로 조건을 적용해 id를 생성하는 방법을 구현하며 고민에 대한 내용입니다! 저는 JPA를 사용하며 IDENTITY, SEQUENCE, TABLE 정도의 기본 키 생성 전략을 사용했었습니다. 그 중 저는 IDENTITY를 주로 사용했었는데, 이 전략은 데이터베이스가 자동으로 기본 키를 생성해줍니다. 이번 저희 기능에서의 Entity는 총 3가지 Like, Post, User입니다.Post와 Like는 기본 키 생성 전략인 IDENTITY를 따릅니다.하지만 USER의 경우…다음과 같이 UUID로 생성된 값을 ID로 가집니다. 🔹UUID값을 가지는 ID..

  • format_list_bulleted spring
  • · 2025. 4. 30.
  • navigate_before
  • 1
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (6)
    • spring (4)
    • React Native (1)
인기 글
전체 방문자
오늘
어제
Copyright © ssukkhui 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바