본문 바로가기

전체 글97

확장: "로그인이 자꾸 풀려요" - Scale-out과 세션 정합성 이전 포스팅https://changbroblog.tistory.com/240 위기: "재고가 이상해요..." - 동시성 이슈와의 전쟁이전 포스팅https://changbroblog.tistory.com/239 시작: 대규모 트래픽을 견디는 티켓 예매 시스템 구축기안녕하세요! 이번 프로젝트는"수만 명의 사용자가 동시에 접속하는 티켓팅 환경에서 어떻게 시스changbroblog.tistory.com 전 포스팅에서 에서 Redis 분산 락으로 동시성 문제를 해결했습니다. 하지만 트래픽이 계속 늘어난다면 단일 서버(Monolith)로는 CPU와 메모리의 한계에 부딪히게 됩니다.그래서 이번에는 서버를 3대로 늘리고(Scale-out), 앞단에 Nginx를 두어 트래픽을 분산시키는 구조를 도입했습니다. 그런데 예상.. 2026. 2. 5.
위기: "재고가 이상해요..." - 동시성 이슈와의 전쟁 이전 포스팅https://changbroblog.tistory.com/239 시작: 대규모 트래픽을 견디는 티켓 예매 시스템 구축기안녕하세요! 이번 프로젝트는"수만 명의 사용자가 동시에 접속하는 티켓팅 환경에서 어떻게 시스템을 안정적으로 유지할 수 있을까?" 라는 질문에서 시작되었습니다.단순히 기능을 만드는 것에changbroblog.tistory.com 전 포스팅에서 구축한 시스템으로 야심 차게 부하 테스트를 진행했습니다. JMeter를 통해 '2026 싸이 흠뻑쇼 - 서울' 공연을 300명이 동시에 예매하기를 누른다고 가정하고 테스트를 진행하겠습니다. 궁금하시죠? JMeter 상에서는 모든 요청이 성공(Success)했다고 떴습니다.하지만 DB와 홈페이지를 확인한 순간 재밌는 일이 벌어졌습니다. .. 2026. 2. 2.
시작: 대규모 트래픽을 견디는 티켓 예매 시스템 구축기 안녕하세요! 이번 프로젝트는"수만 명의 사용자가 동시에 접속하는 티켓팅 환경에서 어떻게 시스템을 안정적으로 유지할 수 있을까?" 라는 질문에서 시작되었습니다.단순히 기능을 만드는 것에 그치지 않고, 일부러 시스템을 박살(?) 내보고 하나씩 고쳐나가는 과정을 통해 고가용성 아키텍처를 구축해 나가는 과정을 기록해보려 합니다. 시작하겠습니다 !! [Part 1] 대규모 트래픽을 견디는 티켓 예매 시스템: 환경 구축과 첫 번째 설계1. 기술 스택 선정: 왜 이 도구들을 선택했나?Java 21 (LTS): 최신 장기 지원 버전으로, 향후 부하 테스트 시 성능 최적화를 고려해 선택했습니다.Spring Boot 3.2.2: Redisson 등 외부 라이브러리와의 안정적인 호환성을 고려하여 가장 안정적인 버전을 선택했.. 2026. 2. 2.
[Programmers] 파괴되지 않은 건물 (카카오 2022 공채) [문제 링크]https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [효율성 실패 코드]import java.util.*;class Solution { int[][] board; public int solution(int[][] board, int[][] skill) { // board 건물 내구도 // skill -> type = 1 -> 공격 // skill -> type = 2 -> 회복 // skill -> [type, r1, c1, r2.. 2025. 9. 24.
[Programmers] 양과 늑대 (카카오 2022 공채) [문제 링크]https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [코드]import java.util.*;class Solution { class Node { int value; // 0:양, 1:늑대 Node left; Node right; public Node (int value) { this.value = value; } } int maxSheep = 0; publi.. 2025. 9. 16.
[Programmers] 양궁대회 (카카오 2022 공채) [문제 링크]https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [코드]class Solution { // 가장 많은 차이로 이기는 경우 private int maxDiff = -1; // 조건에 가장 알맞는 최고의 정답 private int[] bestAnswer = {-1}; // 위 두개는 일단 모든 경우를 해도 라이언이 이길 수 없는 경우일때의 정답으로 초기화 public int[] solution(int n, int[] info) { .. 2025. 9. 11.