• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

API 개발에대한 질문

22.01.11 04:02 작성 조회수 220

0

도원님 안녕하세요.
강의를 통해 API 개발하는데 많은 도움을 받고있습니다.
 
개발중 궁금한게 생겨서 질문드립니다.
 
한 api가 클라이언트에 응답하는데 필요한 모든 데이터를 처리하는데 시간이 많이 소요돼서 사용자 입장에서 품질이 떨어진다고 생각돼서 개선을 하고싶은데요
 
제가 하고싶은 방향은 응답 dto에서 처리가 빨리 끝나는 값은 넣고 나머지는 빈상태로 클라이언트에 우선 응답을 내려주고,
서버는 뒷단에서 나머지 필요한 작업을 한뒤 최종 데이터를 내려주고싶습니다.
제 경우 응답 dto의 특정 필드를 처리하는데 시간이 많이 소요되나, 중요 데이터는 아니라 이런 방향으로 하려고 합니다.
 
이렇게 개발하려면 어떤 개발 패턴이나 기술을 사용해야하는지 모르겠어서 질문드립니다. 키워드를 알려주시면 구글링해서 좀 찾아보고싶습니다.
아니면 이런 경우 실무에서 많이 사용되는 다른 방향이 있을까요?
 
답변 부탁드립니다.
감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요, 이도원입니다. 

문의하신 내용처럼 특정 로직을 처리하는데에 시간이 오래 걸리는 작업을 동기화 상태에서 작업해 놓으면, 클라이언트 사이드에서는 작업이 완료될 때까지 기다리게 됩니다. 예를 들어 대시보드를 만들고, 해당 대시보드에서 동시에 5~6개의 그래프를 보여주는 작업이 있다고 가정해 보겠습니다. 각각의 그래프에 필요한 데이터를 API로 만들어 놓은 상태에서, 해당 API를 순차적으로 호출하게 되면, 각각의 API 처리가 끝나야 다음 단계를 API를 호출하게 되고, 모든 API 호출이 끝난 상태에서 화면에 그래프가 표시될 것입니다. 그래서 이러한 부분을 처리할 때는 각 그래프의 API를 호출할 때 비동기 방식으로 사용하고, 해당 API처리가 끝나지 않아도 다른 API를 처리할 수 있도록 작업하시면 좋을 것 같습니다. 최근 Frontend 기술로 많이 사용되는 React, Angular, Vue 등은 각 필요한 요청을 비동기로 처리하면서 화면의 부분만을 변경해 주도록 작업할 수 있습니다. 추가로, 하나의 API에서 여러 로직을 처리하는 과정에 특정 부분만 먼저 결과를 반환하고, 일부는 말씀하신 것처럼 비어있는 데이터로 반환하는 경우라면, 필요한 부분과 부가적인 부분의 API를 분리해서 사용해 처리하는 것이 좋을 것 같습니다. 자주사용되는 API와 그렇지 않은 API를 하나의 호출로 처리할 필요는 없다고 생각됩니다. 

추가 질문사항 있으시면 글 남겨 주세요. 

감사합니다.