profile
클라우드 데이터 플랫폼 주니어 개발자 도도입니다!
post-thumbnail

Virtual Thread vs Goroutine : 경량 스레드의 비교

Java의 Virtual Thread와 Go의 Goroutine은 모두 M:N 매핑 모델을 사용하는 경량 스레드입니다. 두 기술 모두 수백만 개의 동시 작업을 효율적으로 처리할 수 있지만, 구현 방식과 철학에는 큰 차이가 있다고 합니다.전통적인 OS 스레드는 생성 비용

2025년 11월 14일
·
0개의 댓글
·
post-thumbnail

[DDIP] Spring JPA N+1 문제 해결기: Batch Loading으로 성능 최적화하기

문제 상황 최근 진행 중인 DDIP(일상의 순간을 돈으로)프로젝트에서 DdipEvent 도메인을 구현하면서 성능 이슈에 직면했다. DdipEventEntity가 PhotoEntity와 InteractionEntity와 각각 1:N 관계를 맺고 있는 상황에서 발생한 N

2025년 9월 13일
·
0개의 댓글
·
post-thumbnail

[NEWZET] k6 부하 테스트를 통한 1000개 동시 메일 수신 로직 성능 19.8% 개선 이야기

NEWZET 서비스에서 대규모 이메일 수신은 빈번하게 일어난다. 특히 뉴스레터 서비스 집합소라는 특성상 동시에 수많은 이메일을 처리해야 하는 시스템이라 성능 최적화 반드시 필요했다. 1000개 동시 이메일 처리라는 환경에서 성공률 100프로를 달성하고싶어 무작정

2025년 8월 4일
·
0개의 댓글
·
post-thumbnail

[DDIP] UUID와 JPA의 숨겨진 함정: isNew() 판정과 성능 최적화 가이드

DDIP 프로젝트를 개발하면서 UUID 기반의 엔티티를 설계하던 중, 팀원으로부터 흥미로운 질문을 받았다."이 부분에 대해서 UUID가 저장되는 시점에 하이버네이트가 자동으로 uuid를 자동 생성해서 id를 채워주는 것 같은데, 혹시 그럼 새로운 엔티티 생성 시 새로운

2025년 8월 2일
·
0개의 댓글
·
post-thumbnail

[DDIP] 헥사고날 아키텍쳐 기반 Auth 및 OAuth 로직 구현 (NEWZET 경험 기반 고도화)

DDIP 프로젝트의 백엔드로 참여하게 되었다. DDIP 프로젝트는 일상의 순간을 돈으로 바꾸기 위한 서비스를 만들기 위해 구성된 경북대학교 컴퓨터학부 학우들의 프로젝트이다.백엔드로 참여하기 전, NEWZET 프로젝트에서 구성하였던 Auth 로직의 활용을 위해 인증/인가

2025년 8월 1일
·
0개의 댓글
·
post-thumbnail

[NEWZET] FCM 알림 전송 비동기 배치처리

FCM 알림 전송을 위한 비동기 배치 처리 시스템 구현으로 대량 트래픽 상황에서 시스템 안정성 및 응답성 향상메일 서비스 특성상 단기간에 대량의 메일 수신이 발생하며, 각 메일 수신 시마다 FCM 알림을 전송해야 하는 상황이다. 동기 처리 방식으로 구현한다면 다음과 같

2025년 6월 23일
·
0개의 댓글
·
post-thumbnail

[NEWZET] 메일 수신한 아티클 DB 저장 로직 배치처리

메일 저장 프로세스의 전반적인 성능과 확장성을 개선하기 위해 Redis 기반 배치 처리 시스템과 효율적인 중복 감지 메커니즘을 구현이를 통해 데이터베이스 부하를 줄이고, 대량의 메일 데이터를 빠르게 처리 가능한 인프라가 도입개별 처리로 인한 성능 저하: 각 아티클이 도

2025년 6월 2일
·
0개의 댓글
·
post-thumbnail

[2025 Google Developer Groups APAC Solution Challenge] AI-Powered Emotional Support Diary "Todak"

Todak(토닥) is an innovative, private diary service (Closed-Type SNS) where users can freely express their emotions while receiving AI-powered empatheti

2025년 5월 19일
·
3개의 댓글
·
post-thumbnail

[NEWZET - AUTH 2탄] 확장 가능한 객체지향적 OAuth 구조 설계 및 카카오 소셜 로그인 구현

지난 포스트인 객체지향적 JWT 인증 처리 및 커스텀 리졸버/인터셉터 도입에 이어 확장 가능한 객체지향적 OAuth 구조 설계 및 카카오 소셜 로그인을 구현하였다.객체지향적 OAuth 구조 설계 및 구현OAuth를 통한 사용자 정보 획득 및 서버 회원 계정 연결 로직

2025년 4월 26일
·
0개의 댓글
·
post-thumbnail

[NEWZET - AUTH 1탄] 객체지향적 JWT 인증 처리 및 커스텀 리졸버/인터셉터 도입

현재 상용화되어 앱시장에 나와있는 뉴젯 서버스의 백엔드 프레임워크를 스프링으로 이전하고 성능 개선 및 유저 피드백 개선에 초점을 두었다.첫 번째 과정으로, 인증파트를 도맡아 구현하였고 그 과정을 담았다.기존 슈퍼베이스 기반 서드파티 인증 로직을 서버 내부로 이전한다JW

2025년 4월 11일
·
0개의 댓글
·
post-thumbnail

다중 pod 환경에서 분산 락을 이용한 동시성 처리 및 서버 에러 로그 전송 로직 구현

Google Developers Group on knu에서 2025 솔루션챌린지에 참가하게 되었다. 해당 프로젝트에서 백엔드파트를 맡아 진행하던 중 포인트 로직 구현 과정에서 안정성과 위험부담을 줄이기 위해 동시성 처리 및 로그 저장 로직을 구현하는 과정을 담았다.시작

2025년 4월 4일
·
0개의 댓글
·
post-thumbnail

[GDG 사이드 프로젝트] 함께 공부하는 공간 "알고하이브"

Google Developers Group on 경북대학교 팀원들과 진행한 사이드프로젝트입니다.알고하이브는 "Algo(Algorithm)"와 "Hive(협업 공간)"를 결합한 함께 알고리즘 문제를 풀며 공부할 수 있는 서비스입니다.MarkDown 실시간 적용서버 내부

2025년 3월 27일
·
0개의 댓글
·

[백준] 6118 : 숨바꼭질 (JAVA)

백준 6118번 문제는 "숨바꼭질" 문제로, 최단 거리를 구하는 문제입니다. N개의 노드가 있고, 각 노드는 양방향으로 연결되어 있습니다. 특정 노드에서 시작하여 다른 모든 노드로의 최단 거리를 구하고, 가장 먼 노드까지의 거리와 그러한 노드의 개수를 출력하는 문제

2025년 2월 10일
·
0개의 댓글
·

[백준] 12852 : 1로 만들기 2 (JAVA)

백준 온라인 저지의 12852번 문제, "1로 만들기 2"를 푸는 코드입니다. 문제는 자연수 N이 주어졌을 때, N을 1로 만들기 위한 최소 연산 횟수와 그 과정을 출력하는 것입니다. N을 1로 만들기 위해서는 다음 세 가지 연산 중 하나를 수행할 수 있습니다:N에

2025년 2월 6일
·
0개의 댓글
·

[백준] 12865 : 평범한 배낭 (JAVA)

백준 온라인 저지의 12865번 문제인 "평범한 배낭"을 푸는 동적 계획법(Dynamic Programming)을 이용한 풀이입니다.문제 설명:문제는 N개의 물건이 주어지고, 각 물건은 무게(weight)와 가치(value)를 갖습니다. 최대 K 무게의 배낭에 물건을

2025년 2월 6일
·
0개의 댓글
·
post-thumbnail

쿠버네티스 다중 pod 환경에서 사용 가능한 공유 저장공간 - Kubernetes에서 PVC, PV, NFS의 역할과 로직 흐름

PV (Persistent Volume):클러스터에서 사용할 수 있는 물리적 또는 네트워크 스토리지NFS, AWS EBS, Ceph 등 다양한 스토리지 백엔드 지원PVC (Persistent Volume Claim):애플리케이션(파드)이 스토리지를 요청하는 방식특정 용

2025년 2월 4일
·
0개의 댓글
·
post-thumbnail

다중 pod를 이용한 쿠버네티스 환경에서 단체채팅방 구현 방법 - 실시간 채팅방별 접속인원 조회 기능 구현

해당 요청을 해결하기 위해서 우선, 현재 존재하는 UserStatusProducer 클래스의 메서드를 확인했다이후, Consumer에 해당하는 UserStatusConsumer의 메서드들을 확인했다.다중 Pod 환경이기 때문에 일반적인 웹소켓과는 다른 방식으로 작동한다

2025년 2월 3일
·
0개의 댓글
·
post-thumbnail

다중 pod를 이용한 쿠버네티스 환경에서 단체채팅방 구현 방법 - 채팅방 접속자 조회 기능 추가

지난번 만들었던 채팅방에서 접속자 목록을 조회하는 기능을 추가하였다WebSocket을 이용해 사용자 연결 및 채팅방 입장, 실시간 메시지 수신, 사용자 목록 업데이트 등을 처리하는 로직을 구현했다.사용자는 채팅방에 입장하기 전에 이름을 설정하고, 이를 WebSocket

2025년 1월 25일
·
0개의 댓글
·
post-thumbnail

다중 pod를 이용한 쿠버네티스 환경에서 단체채팅방 구현 방법 - 채팅기능 구현

프로젝트에서 단체채팅방 기능을 구현해야 하는 상황이 왔다.초기에는 WebSocket을 Handler와 함께 사용하여 Simp브로커로 구현하였다.\-> 단일 서버에서는 문제없이 사용 가능why? 인메모리 방식을 사용한 웹소켓 통신이기 때문이다.그러나, 현재 서버는 쿠버네

2025년 1월 21일
·
0개의 댓글
·
post-thumbnail

[GDG 사이드 프로젝트] 도커 및 쿠버네티스 사용시 발생하는 dev파일 관리 문제 해결

application-dev.properties를 gitignore 등록해당 파일에 민감정보를 두고 git에 민감정보가 올라가는 것 방지,개개인 로컬 개발시에는 직접 application-dev.properties 파일을 만들어 사용기존 방식은 vm서버 내부에 직접 스

2025년 1월 14일
·
2개의 댓글
·