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

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

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

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

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

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

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

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

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

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

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

Google Developers Group on 경북대학교 팀원들과 진행한 사이드프로젝트입니다.알고하이브는 "Algo(Algorithm)"와 "Hive(협업 공간)"를 결합한 함께 알고리즘 문제를 풀며 공부할 수 있는 서비스입니다.MarkDown 실시간 적용서버 내부
백준 6118번 문제는 "숨바꼭질" 문제로, 최단 거리를 구하는 문제입니다. N개의 노드가 있고, 각 노드는 양방향으로 연결되어 있습니다. 특정 노드에서 시작하여 다른 모든 노드로의 최단 거리를 구하고, 가장 먼 노드까지의 거리와 그러한 노드의 개수를 출력하는 문제
백준 온라인 저지의 12852번 문제, "1로 만들기 2"를 푸는 코드입니다. 문제는 자연수 N이 주어졌을 때, N을 1로 만들기 위한 최소 연산 횟수와 그 과정을 출력하는 것입니다. N을 1로 만들기 위해서는 다음 세 가지 연산 중 하나를 수행할 수 있습니다:N에
백준 온라인 저지의 12865번 문제인 "평범한 배낭"을 푸는 동적 계획법(Dynamic Programming)을 이용한 풀이입니다.문제 설명:문제는 N개의 물건이 주어지고, 각 물건은 무게(weight)와 가치(value)를 갖습니다. 최대 K 무게의 배낭에 물건을

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

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

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

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

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