Chanmin Dev Log
close
프로필 사진

Chanmin Dev Log

github: @denev6

  • 분류 전체보기 (50) N
    • 개념 (14)
    • 프로젝트 (15)
    • 트러블슈팅 (14) N
    • 활동 회고 (2)
    • 일상 (5)
  • 홈
  • 태그
  • 방명록

Redis Pub/Sub을 활용하여 실시간 알림 기능 개선

기존 SSE 활용 방식리플 프로젝트에서는 SSE(Server-Sent Events)를 활용해 실시간 알림 기능을 구현했다.알림을 보내기 위해 사용자의 SseEmitter 객체를 ConcurrentHashMap에 저장해두는 방식이다.private final Map emitters = new ConcurrentHashMap();private final Map eventCache = new ConcurrentHashMap();public SseEmitter save(String emitterId, SseEmitter sseEmitter) { emitters.put(emitterId, sseEmitter); return sseEmitter;}이 구조는 단일 서버 환경에서는 문제가 없지만, 스케일 아웃..

  • format_list_bulleted 프로젝트
  • · 2025. 6. 13.
Spring 멀티스레딩을 활용한 비동기 처리

Spring 멀티스레딩을 활용한 비동기 처리

지난번에 스프링의 멀티스레딩 활용 방식을 알아봤다. 여러 가지 방식 중에서 멀티스레딩을 활용한 비동기 처리 방식을 내 프로젝트에 적용시켜보고자 한다. 동기 처리를 했을 때와 비동기 처리를 했을 때의 성능 차이를 분석하여 비동기 처리 방식이 어떻게 활용될 수 있는지 살펴보자. 스프링의 비동기 처리 적용 방법 우선 스프링에서 비동기 처리를 적용시키기 위한 간단한 방법을 알아보자. @Configuration@EnableAsyncpublic class AsyncConfig {} 스프링에서 비동기 처리를 적용하려면 먼저 비동기 설정 클래스를 생성하고, @EnableAsync 어노테이션을 사용해 비동기 기능을 활성화해야 한다. 그 후, 비동기 처리를 적용할 메서드에 @Async 어노테이션을 추가하면 해당 메서드가..

  • format_list_bulleted 프로젝트
  • · 2025. 2. 18.

대량의 데이터 저장하기 - Bulk Insert

20만 건의 데이터를 읽어와 데이터베이스에 저장하는 로직을 구현하면서, JPA의 saveAll() 방식과 JDBC를 활용한 Bulk Insert 방식을 비교하며 겪었던 차이를 중심으로 작성한 글이다. 대량 데이터 저장 기능은 시스템 성능에 직접적인 영향을 미치기 때문에, 효율적인 쿼리 실행 방식이 필수적이다. 성능 최적화를 목표로 두 가지 방식의 장단점을 분석하고, 그 차이를 정리했다. JPA vs JDBC 스프링 데이터 JDBC 특징JDBC 위에 얇은 추상화 계층을 제공, SQL 직접 제어가 가능.설정이 간단하며 성능 최적화가 중요한 애플리케이션에 적합.개발자가 SQL을 직접 작성하여 데이터베이스 작업을 세밀하게 제어 가능.JDBC는 Java에서 데이터베이스와 상호작용하기 위한 표준 API입니다. 이..

  • format_list_bulleted 프로젝트
  • · 2025. 2. 11.

인증된 사용자 정보 추출 커스텀 어노테이션 생성

1. 커스텀 어노테이션이 필요한 이유 1.1 사용자 식별 정보 추출 커스텀 어노테이션을 사용하는 이유 JWT 토큰 인증 후 토큰에 있는 정보를 가지고 member의 정보(id, email 등)을 추출하는 로직이 필요한데, 컨트롤러에서 항상 파라미터로 인증 정보를 전달받아서 식별 정보를 추출하는 코드를 계속 작성하는 것은 중복된 코드를 계속 작성하는 불필요한 작업이기 때문에 깔끔하게 어노테이션 하나로 선언적으로 표현하기 위해서 커스텀 어노테이션 사용 2. @AuthMember 어노테이션 선언 @Retention(RetentionPolicy.RUNTIME)@Target(ElementType.PARAMETER)@Parameter(hidden = true)public @interface AuthMember {}..

  • format_list_bulleted 프로젝트
  • · 2025. 2. 10.
카카오페이 단건 결제 구현하기

카카오페이 단건 결제 구현하기

1. 카카오페이 단건결제 API 1.1 KakaoPay Developer 애플리케이션 등록 카카오페이 단건결제 API를 사용하기에 앞서 KakaoPay Developers에서 애플리케이션 등록이 필요 테스트용으로서 Secret key(dev) 사용 1.2 단건 결제 API 출처 : https://developers.kakaopay.com/docs/payment/online/single-payment 실제 사업자 등록이 필요한 실제 결제가 아니기 때문에 테스트 결제를 이용 단건 결제의 구현 순서는 1. 결제 준비하기, 2. 결제 요청 - 사용자 결제 수단 선택, 3. 결제 승인하기 순으로 이루어짐 결제 준비하기 결제 요청 - 사용자 결제 수단 선택 결제 승인 2. 단건 결제 구현하기 2.1 기본값 설정..

  • format_list_bulleted 프로젝트
  • · 2025. 2. 10.
SSE로 푸시 알림 기능 구현하기

SSE로 푸시 알림 기능 구현하기

1. SSE 개념 참고 : https://velog.io/@wellbeing-dough/Spring-Boot-SSE-알림-개발 1.1 SSE(Server-Sent-Events) 방식SSE는 서버와 한번 연결을 맺고 나면, 일정 시간 동안 서버에서 변경이 발생할 때마다 서버에서 클라이언트로 데이터를 전송하는 방법클라이언트는 서버를 구독(SSE Connection을 맺음)서버는 변동사항이 생길 때마다 구독한 클라이언트들에게 데이터를 전송 SSE는 서버에서 클라이언트로 text message를 보내는 브라우저 기반 웹 애플리케이션 기술이며 HTTP의 persistent connections을 기반으로 하는 HTML5 표준 기술 💡 클라이언트가 서버와 크게 통신할 필요가 없는 경우와 단지 업데이트된 데이터만 ..

  • format_list_bulleted 프로젝트
  • · 2025. 2. 10.
  • navigate_before
  • 1
  • 2
  • 3
  • navigate_next
공지사항
  • 블로그 이전
전체 카테고리
  • 분류 전체보기 (50) N
    • 개념 (14)
    • 프로젝트 (15)
    • 트러블슈팅 (14) N
    • 활동 회고 (2)
    • 일상 (5)
인기 글
전체 방문자
오늘
어제
Copyright © chanminee 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바