8퍼센트 기업과제 입금, 출금, 거래내역 조회 api를 만드는 기업과제였다. 과제를 보자마자 다른 api만드는 것 보단 더 안정성에 힘써야 했다 생각했다. 이를테면 거래내역과 계좌의 잔액이 다른 데이터 정합성 문제가 일어나면 정말 큰 문제라 생각했다. 즉, '입금을 한다'의 하나의 요청에 대해 계좌의 잔액 변경 입금 거래내역 생성 두개의 각각의 결과가 DB내에 동일하게 존재 하여야한다. 그렇기 위해선 트랜잭션을 생각할 수밖에 없었다. 트랜잭션은 트랜잭션 내 하나의 쿼리가 오류가 나면 모두다 롤백시킨다. 즉, 원자성의 특징을 띈다. 그런데 더 나아가 우린 '동시성'에 대해서도 깊게 고민했다. 찾아보니 트랜잭션에 고립레벨을 줄 수가 있는 걸 알게 되었다. DBMS마다 기본적으로 ..