Server8 [Spring] AI와 함께 한 모의투자 시스템 구축기 (+ 카프카 찍먹) 0. 들어가며두근두근 모의투자 시스템 구축기 안녕하세요 프로미 입니다.최근에 분산 환경에서의 모의투자 시스템 '시큐어 트레이더(시트)'를 만들게 되었어요.(이름만 봤을 땐 노잼이죠) 최근에 주식을 시작하게 되었는데, 증권 시스템의 속도와 일관성이 공존하는 환경이 신기하게 다가왔어요.프로젝트를 하면서 정합성을 위해 비관락을 걸면 응답 속도가 느려지기도 했었거든요, 공존할 수 없는 2개의 특징이 존재하는 시스템이라니 흥미가 생기지 않나요? (최면) 결론적으로 이런 흥미를 바탕으로 증권 시스템을 이해해 보고자 직접 구현을 해보게 되었답니다. 1. 준비하기한국투자증권 API, 스프링, 카프카, 레디스,... 프로젝트를 위해선 주식 거래를 위한 시세 정보 API 가 필요해요.저는 한국투자증권 API를 사용했어요.. 2026. 4. 19. [Spring] Thread: 알림은 내가 보낼게, 배치 처리는 누가할래? 들어가며 안녕하세요. 프로미입니다 :) 오늘은 ‘코코스’ 알림 로그 찍기 개발 중에 생긴 트러블슈팅 과정을 설명드리려고 합니다.세부적으로는 Thread Dump, visualVM, Async, batch 처리에 대해서 다루는 글입니다. Thread의 상태 추적에 흥미가 있는 분들에게 추천합니다. 1. 문제 상황 코코스 프로젝트에서 알림 기능을 개발했었다.실제로 알림이 전송되는 것은 아니고, 로그 같이 사용자의 알림 박스에 쌓이는 방식이다. 커뮤니티 활동 기록(댓글, 좋아요)은 특정 사용자한테만 알링이 간다.코코스 매거진이 올라오면 전체 사용자한테 알림이 간다.1)의 경우 큰 문제가 되지 않지만, 2)의 경우 DB Insert 연산이 사용자 수만큼 발생한다. 2. 기존 코드의 동작Sync 로 동작하는.. 2026. 3. 15. [Redis] Redis는 빠르니까 메인 데이터베이스로 써도 될까? (추천하지 않는 이유) 들어가며 안녕하세요Redis를 공부하고 있는 프로미입니다! Redis는 왜 빠른가?Redis를 메인 데이터베이스로 사용할 수는 없을까?궁금증을 가지고 생각을 정리해 보았어요!저와 비슷한 궁금증을 가졌던 분들에게 도움이 되길 바랍니다. 1. Redis란? For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine. - redis github Redis는 ‘매우 빠른 인메모리 데이터 저장소’이다.Redis 하면 ‘빠르다’는 특징이.. 2026. 2. 6. [Redis] 대용량 트래픽에도 동작하는 좌석 예매 시스템 구축 (Lua, Zset) 안녕하세요 프로미 입니다.어느 날 유튜브에서 redis 관련 동영상을 보게 되었는데요,직접 구현해보고 싶은 생각이 들어 redis를 활용한 좌석 예매 시스템을 구축해 보았습니다! 이 글은 Redis를 이용해“동시에 몰리는 요청을 어떻게 제어할 수 있을까?”를직접 구현과 부하 테스트로 검증해 본 기록입니다.- Redis Sorted Set으로 대기열을 어떻게 구성했는지- polling, 스케줄링 중복 같은 실제 문제를 어떻게 해결했는지 를 다루고 있어요평소에 대용량 트래픽 + 대기열 처리에 관심 많으셨던 분들에게 추천드려요 1. 대용량 트래픽에도 동작하는 좌석 예매 시스템 구축https://youtu.be/c-ERjEodn_o?si=JmjSM1BeHLVzbw9W- 코딩하는 기술사 우연히 “수백만 동시 접속.. 2026. 2. 4. 동시성의 기준점 ① – DB 트랜잭션부터 다시 보자 TL;DR동시성 문제는 여러 요청이 동시에 같은 데이터를 읽고 판단/수정하면서 발생한다.Isolation(격리성)은 성능과의 트레이드오프 때문에 여러 단계로 나뉜다.DB는 격리 수준을 보장하기 위해 내부적으로 두 가지 전략(2PL, MVCC)을 선택한다.DB 트랜잭션만으로는 모든 동시성 문제를 해결할 수 없고, 제약조건, 원자적 업데이트, 낙관락/비관락 같은 추가 전략이 필요하다. 동시성 문제동시성 문제는 비슷한 시기에 여러 개의 요청이 한 번에 동일한 DB 자원에 접근하여 발생하는 문제이다. Spring 서버 개발을 하다 보면 흔히 동시성 문제를 겪게 된다.예를 들어 2개의 요청이 동시에 좋아요 수를 +1 할 때, 결괏값이 +2가 아닌 +1이 되는 상황이 있을 수 있다.흔히 이런 문제 상황에 대한 해법.. 2026. 1. 21. [Java] ConcurrentHashMap은 왜 빠를까? – CAS와 bin-level lock 들어가며HashMap 대신 ConcurrentHashMap을 사용해라 Spring 개발을 해왔다면 흔히 듣는 말이다.왜 이런 말이 나오게 되었는지 ConcurentHashMap의 소스코드를 까(?)보면서 알아보자 HashMap과 SynchronizedHashMap은 싱글 스레드 환경에서 빠르게 동작한다. HashMap은 기본으로 싱글 스레드 환경에서 사용하기 위해 설계되었다. 동시성을 보장하지 않기 때문에 2개 이상의 스레드가 동시에 실행됐을 때 결과값을 예측할 수 없다. 동시성을 보장하기 위해, HashMap과 Synchronized를 함께 사용할 수 있다. 하지만 락의 범위가 크고, 모든 스레드를 직렬화하기 때문에 성능은 좋지 않다. 예시) 문제가 발생하는 코드아래 코드를 실행하면 2000을 기대.. 2026. 1. 15. 이전 1 2 다음