분류 전체보기 6

[Spring Boot 프로젝트] 영화 예매 시스템 개발기 (6) — 뚝딱뚝딱 만들며 깨달은 것들 (프로젝트 후기)

안녕하세요!기획부터 DB 설계, 동시성 제어, 그리고 Redis TTL 이벤트 리팩토링까지 달렸던 영화 예매 시스템 개발기, 드디어 진짜 마지막 6편: 프로젝트 회고 및 후기입니다! 🎉 처음엔 "영화 예매 사이트? 팝콘 사 먹는 것까지 구현해 볼까?" 하며 가볍게 시작했는데, 막상 부딪혀 보니 그렇게 만만치 않더라고요. 이번 프로젝트를 진행하며 무엇을 만들었고, 어떤 벽에 부딪혔고, 또 무엇을 얻었는지 솔직하게 털어놓아 보려고 합니다. 1. 🎬 이번 프로젝트로 어디까지 만들었냐면요처음엔 그냥 예매 기능 하나만 바라보고 시작했지만, 막상 만들다 보니 영화 예매라는 게 생각보다 판이 컸습니다.기본 뼈대: 회원가입 및 로그인 (세션 관리), 그리고 영화 상세 페이지, 평점 및 좋아요 기능어드민(?)의 고통..

[Spring Boot 프로젝트] 영화 예매 사이트 개발기 (5) - 성능 개선 리팩토링 (스케줄러에서 Redis TTL 이벤트 & Warm-up으로 진화하기)

안녕하세요! 영화 예매 시스템 개발기 5편을 들고 왔습니다! 🎉 앞서 Redisson 분산 락까지 붙여가며 "아, 이제 진짜 예매 시스템 구실 좀 하네?" 하고 뿌듯해하고 있었는데요. 마음속 한구석에 아주 거슬리는 녀석이 하나 남아있었습니다. 바로 "결제 안 하고 튀어버린 사용자들의 PENDING 상태 좌석을 도대체 어떻게 깔끔하게 회수할 것인가?" 하는 문제였죠. 처음에 아무 생각 없이 짰던 스케줄러를 쿨하게 걷어내고, Redis의 만료 이벤트(TTL)를 써먹어 보겠다고 고군분투했던 리팩토링 과정을 날것 그대로 풀어보겠습니다. 1. 🚨 일단 짰던 스케줄러, 근데 이제 찝찝함을 곁들인...처음에는 뭣도 모르고 스프링 부트의 @Scheduled를 써서 이렇게 구현했었습니다.@Slf4j@Componen..

[Spring Boot 프로젝트] 영화 예매 사이트 개발기 (4) — Redis를 활용한 동시성 제어와 티켓 예매 시스템 구현기

안녕하세요! 드디어 영화 예매 시스템 개발의 꽃(이자 가장 머리 아픈 관문)인 동시성 제어와 티켓 예매 로직 구현 파트까지 왔습니다. 상영 시간표를 열고 좌석을 골라 예매 버튼을 누르는 순간은 사용자에게는 단순하지만, 백엔드 입장에서는 가장 긴장되는 순간입니다. 만약 두 명의 사용자가 0.1초 차이로 똑같은 명당 좌석을 동시에 클릭한다면? 생각만 해도 식은땀이 흐르는 이 '중복 예매 대참사'를 막기 위해, Redis를 꺼내 들고 고군분투했던 과정을 풀어보겠습니다. 1. 🚨 동시성 이슈란 무엇이고 왜 막아야 할까?영화 예매 시스템은 특성상 특정 인기 영화(예: 천만 관객 영화 개봉일!)에 트래픽이 순식간에 몰립니다.문제 상황: 사용자 A와 사용자 B가 동시에 같은 상영관의 E열 5번 좌석을 골라 예매 요..

[Spring Boot 프로젝트] 영화 예매 사이트 개발기 (3) — 시스템 아키텍처 및 비즈니스 흐름도 (Flow)

안녕하세요! 데이터베이스 설계라는 거대한 산(을 가장한 수정 지옥)을 무사히(?) 넘기고 나니, 이번에는 진짜 코딩을 시작해야 하는 순간이 찾아왔습니다. 사실 처음 프로젝트를 시작할 때 거창한 시스템 아키텍처나 서버 구조를 깊게 고민하고 시작한 건 아니었습니다. "일단 스프링 부트 켜고... 컨트롤러 만들고... 서비스에 로직 넣고... DB랑 연결하면 되겠지?" 하며, 몸으로 부딪히며 자연스럽게 익숙한 Spring MVC 패턴과 계층형 구조에 몸을 맡겼죠. 이번 3편에서는 그동안 짰던 코드들이 어떻게 얽혀서 돌아가는지, 우리에게 가장 친숙한 MVC 구조와 핵심 비즈니스 흐름(Flow)을 가감 없이 정리해 보겠습니다. 1. 📂 몸으로 익힌(?) 스프링 부트 기본 구조 (Spring MVC)스프링 부트로..

[Spring Boot 프로젝트] 영화 예매 사이트 개발기 (2) — 데이터베이스(DB) 설계 프로세스 (ERD 및 테이블 정의서)

안녕하세요!지난 1편에 이어 이번 2편에서는 본격적인 코드 작성에 앞서 시스템의 뼈대가 되는 데이터베이스 설계 과정을 공유해 드리려고 합니다. 영화 예매 시스템은 회원, 영화, 상영관, 좌석, 예매, 결제 등 수많은 도메인이 유기적으로 엮여 있습니다. 솔직히 말씀드리면 인프런에서 김영한 강사님의 DB강의를 수강한 저는 처음 ERD를 그릴 때만 해도 '와, 나 데이터베이스 설계 좀 치는데?' 하며 완벽하다고 자부했습니다. 물론, 앞으로 마주칠 끔찍한 수정 지옥을 알기 전까지는 말이죠... (솔직히 이런 대환장 파티는 알고 싶지 않았습니다 흑흑) 😂 처음에는 완벽해 보였던 설계도 막상 코딩을 시작하고 비즈니스 로직을 붙여나가다 보니, "여긴 왜 이렇게 묶어놨지?", "이 데이터는 왜 빠졌지?" 하며 수정을..

[Spring Boot 프로젝트] 영화 예매 사이트 개발기 (1) — 프로젝트 개요와 핵심 아키텍처 방향성

안녕하세요! 👋 이번 포스팅부터 Spring Boot, JPA, 그리고 Redis를 활용하여 직접 기획하고 구현한 영화 예매 웹 서비스 개발기를 시리즈로 연재해 보려고 합니다. 단순히 동작만 하는 코드를 짜는 것을 넘어, "실제 서비스였다면 마주쳤을 백엔드 문제들을 예비 개발자의 시선에서 어떻게 해결할 것인가?"에 초점을 맞추어 치열하게 고민하고 설계한 과정들을 담아내려 합니다. 이번 1편에서는 전체적인 프로젝트 소개와 핵심 아키텍처 방향성에 대해 이야기해 보겠습니다. 1. 🎬 프로젝트 개요프로젝트 주제: 동시성 제어와 효율적인 예매 만료 처리를 갖춘 영화 예매 백엔드 시스템 개발개발 기간: (개인 프로젝트 진행 기간 기입)주요 목표:견고하고 확장성 있는 DB 설계- 비즈니스 요구사항을 정확히 담아내..