1. 과정
기존

- 외부 API 호출(Thread.sleep(500))이 트랜잭션을 점유
- orderId는 결제 승인 API에 대한 멱등키이다. (파란 영역)
- 생성된 Order 엔티티의 PK를 활용하도록 하였다.
개선 방안

- 트랜잭션에서 외부 API를 분리한다.
- 외부 API를 분리하여 DB 커넥션 점유 시간 단축
Facade 패턴 적용하여 구현

- 복잡한 후속 처리와 분기 처리를 Service 쪽 코드에서 직접하지 않고, 상위 클래스 Facade에서 캡슐화하였다.
- 그러나, 트랜잭션이 분리되면서 일관성을 맞추기 위해 예외 처리와 분기 처리가 필요해졌다.