⛅️ 들어가는 말
우아한테크코스 레벨2의 네번째 미션은 방탈출 결제 / 배포이다.
1~2단계는 외부 API(토스 페이먼츠 결제) 연동하는 것이고,
3단계는 AWS에 배포하는 것이고,
4단계는 문서화를 하는 것이다.
⛅️ 미션에 대한 부분
⭐️ 외부 요청
스프링에서 외부 API 연동은 처음해봤다.
일반적으로 RestTemplate, RestClient를 사용하는 것 같았고, 나는 구조가 깔끔한 RestClient를 사용해서 구현했다.
단순히 외부 요청만 하면 될 거라 생각했는데 생각보다 할 일이 많았다.
- Connection Timeout
- Read Timeout
- 전체 응답 중 어떤 응답을 사용할지
- 외부 요청에 대한 에러를 어떻게 내 클라이언트에게 전달할지
- 실패 시 어떻게 처리할지
결제에 대한 부분은 정합성이 중요하기 때문에 요청과 응답에 대한 인터셉터를 만들어서 로그를 찍었다. 또한 결제에 대한 부분은 데이터베이스에서 물리 삭제를 하는 것보다 추적을 위해서 논리 삭제가 좋다는 것도 알게 되었다.
예약과 결제, 그리고 외부 요청이 같은 트랜잭션에 있을 경우 외부 요청이 오래 걸리면 커넥션을 계속 점유하고 있기 때문에 분리해야 된다는 것도 알게 되었다.
⭐️ 배포
AWS EC2를 이용해서 간단하게 배포하는 과정이 있었다.
실습은 하지 않았지만 RDBS를 사용하고 추가적인 인프라를 구성하는 방법을 배웠다.
기본적인 리눅스 명령어를 배워 로그를 정렬하고 찾는 방법들을 배웠다.
⭐️ 문서화
ERD를 그리고, 문서화를 하는 요구사항이 있었다.
문서화를 하기 전 나는 수동과 자동 중 문서화를 자동화하는 방법을 선택했다.
문서를 수동으로 작성하는 방법은 수정도 어렵고, 오류가 있을 것 같다고 생각했다. 문서 자동화 도구에서 대표적인 Swagger와 RestDocs 중 나는 RestDocs를 선택했다. Swagger는 사용을 해보기도 했고, 검증되지 않는 부분에 대해서 문서화를 한다는 것이 별로라고 생각했다. RestDocs은 Swagger와 다르게 테스트를 통과해야만 문서가 작성된다. 하지만 작성하기가 힘들다는 단점이 있다.
⛅️ 끝내며
레벨2가 끝났음에도 불구하고 아직 제대로 공부하지 못한 내용들이 많다.
예를 들어, 크게 lock, event, property에 대한 부분들이 있다.
이 외에도 다른 인프라적인 부분들을 잡고 레벨3로 나아가야겠다.
'우아한테크코스 6기 백엔드' 카테고리의 다른 글
[우아한테크코스 6기 백엔드] 레벨2 글쓰기 - 나만의 길을 걷는다 (0) | 2024.12.19 |
---|---|
[우아한테크코스 6기 백엔드] 레벨1 글쓰기 - 천천히 가볼까? (3) | 2024.12.19 |
[우아한테크코스 6기 백엔드] 방탈출 사용자 예약 회고 (0) | 2024.12.19 |
[우아한테크코스 6기 백엔드] 방탈출 예약 관리 회고 (0) | 2024.12.19 |
[우아한테크코스 6기 백엔드] 체스 회고 (0) | 2024.12.19 |