API 활용에 대한 개인적인 생각

Ahn yi·2022년 12월 7일
0

spring

목록 보기
11/11

비슷한 기능에 대해 API를 나눌까 VS 합칠까

  • 부하테스트를 하기 전에 기본 CRUD 기능이라 할 수 있는 도서 상세/대여/반납 처리를 해두었는데 front까지 다루려다 보니 문제가 발생하였다. 부하테스트를 하기에 앞서 고려해둔 사항은 두 가지가 있다.

    	1. 한 명의 사용자가 같은 도서에 대해 여러권을 대여하는것을 막아야 한다.
    	2. 여러명의 사용자가 하나의 도서에 대해 대여를 시도하였을 경우 도서의 재고 처리를 제대로 해야 한다.

    그 중 첫 번째 고려사항에서 Jmeter를 사용하기 전부터 고려해볼 만한 상황이 가볍게 발생하였다. 간단하게 도서 대여/반납을 하나의 API를 통해 Service단에서 if문으로 나누어 처리를 진행하였다. 아무 문제가 없었지만 버튼을 동시에 누를 경우 문제가 발생하였다. 동시에 여러번 눌렀을 경우 대여/대여 혹은 대여/반납의 처리가 테스트 할 때마다 제각각으로 결과가 나오게 되었다.

  • 결론적으로, API를 나누어 처리하였다. front와 협업을 하는 입장에서는 어떻게 하는 것이 더 효율적이고 괜찮은 방법일지는 아직 모르겠지만 혼자서 backend와 frontend를 처리하는 입장에서 도서/대여 API를 나눈 후에 각각의 예외처리 즉,

    	1. 대여/대여일 경우 한 번의 대여만 되도록 한다.
    	2. 대여 버튼을 연속으로 눌렀을 경우 대여/반납은 존재할 수 없다.

    페이지가 redirect될 때 '대여' 버튼이 '반납'버튼으로 변하면서 url mapping 되있는 게 서로 다르므로 예외를 해결할 수 있었다.

  • 부하테스트와는 별개로 부하테스트 전에 API 설계를 하며 고민해본 부분이다. front(react)와 협업을 할 경우 어떻게 될 지는 그 때 상황을 봐야 될 거 같다.

이번 프로젝트에서 이번 API에서는 나누는 걸로 선택하여 예외를 쉽게 해결할 수 있었지만 어느 것이 더 효율적이냐는 프로젝트마다, 프로젝트 내의 API마다 다를것 이라고 생각한다.

profile
소통을 잘하고싶은 백엔드 개발자

0개의 댓글