Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

은행 업무의 트랜잭션을 개발해보자!

개요

어느 날, 김세이라는 열정적인 개발자는 프로젝트를 진행하던 중 갑자기 고민에 빠졌다.

“사용자들이 동시에 여러 개의 요청을 보낼 때, 과연 어떻게 처리될까? 특히 입금이나 출금처럼 중요한 금융 요청들이 겹칠 때 문제가 생기지 않도록 어떻게 처리해야 하지?”

이 생각은 단순한 궁금증을 넘어서 중요한 문제로 다가왔다. 사용자가 동시에 여러 요청을 보냈을 때, 처리 순서나 성공 여부에 따라 결과가 달라질 수 있기 때문이다. 예를 들어, 입금 요청이 두 개 동시에 들어오면 하나는 성공하고 나머지는 실패하게 해야 한다. 또한, 입금과 출금이 동시에 일어날 수 있는데, 이 경우 요청이 차례대로 실행되어야 했다.

김세이는 혼자서 이 문제를 해결하는 것보다 팀과 상의하는 것이 좋겠다고 생각했다. 팀 동료들에게 고민을 털어놓자, 모두가 그의 생각에 공감했다.

“맞아, 이런 금융 트랜잭션에서 동시성 문제가 발생하면 큰 문제가 될 수 있어. 반드시 순차적으로 처리가 이루어져야 해,” 한 동료가 진지하게 말했다.

“그리고 입금 요청이 여러 개 동시에 들어올 경우 하나만 성공하고 나머지는 실패하도록 처리해야겠네,” 또 다른 동료가 덧붙였다.

김세이는 동료들과 의견을 나누며 점점 확신이 생겼다. 이 문제를 해결하기 위해 필요한 기능을 정의하고 구현하는 일은 그들의 프로젝트에서 매우 중요한 과제였다. 그렇게 김세이와 팀원들은 함께 동시성 문제를 해결하고 안전한 금융 서비스 구현을 목표로 나아가기 시작했다.

Author: Chat-GPT

문제

com.seikim.spring.readonly 파일은 오로직 읽기만하시고 수정하지 마세요!

com.seikim.spring.solution 패키지 안에 있는 파일만 수정, 추가하여 문제를 해결해보세요!

테스트는 com.seikim.spring.SolutionTest을 실행시켜 모두 성공시키면 성공입니다!

총 4개의 문제로 구성되어 있습니다.

  1. 동일한 유저에게 요청이 여러개가 들어오면 차례대로 실행됩니다.
  2. 동일한 유저에게 잔고 입금 요청이 동시에 2개 이상 발생하는 경우 한 요청만 성공하고, 나머지는 실패합니다
  3. 동일한 유저에게 잔고 입금과 출금 요청이 동시에 발생할 수 있습니다. 이 경우 요청은 차례대로 실행됩니다.
  4. 동일한 유저에게 잔고 출금 요청이 동시에 2개 이상 발생하는 경우, 요청이 차례대로 실행됩니다.