대개 그런 일은 웬만해서는 없겠지만, 마이크로 초까지 타이밍 문제를 생각한다면 여러 측면에서 다각도로 문제를 정의하고 푸는 게 좋아요. 기본적으로 상태가 없는 Stateless로 HTTP를 다룰테니 세 API 호출 각각은 서로에 대해 독립되고 연관성이 없지요. 따라서 말씀하신 바와 같이 세 API 호출을 같은 맥락으로 묶고자 한다면 그건 사실상 상태가 있는, Stateful 인 거예요. Stateless를 Stateful하게 다루니 말씀하시는 염려되는 상황이 숫자로만 보면 가능해요. 이런 Stateful을 어디까지 구현하느냐에 따라 구현 방법이 달라질 거예요. 쉽게 떠오르는 방법은 서버가 아니라 클라이언트에서 대응하는 거예요. 세 API 호출이 같은 맥락이라는 건 서버는 모르지만, 호출이라는 의도(intent)를 가진 클라이언트는 알고 있죠. 따라서 세 API 호출을 일으키고 응답을 받은 뒤 세 응답이 200 OK 응답을 받으면 응답받은 데이터를 사용해 화면을 그리는 거예요. 액세스 토큰으로 JWT 쓰시죠? 그럼 토큰을 디코딩해서 만료일시를 검사해서 API 세 개를 호출하는 데 소요되는 시간보다 좀 더 넉넉한 시간 전에 미리 토큰을 갱신하는 거예요. 좀 더 쉽게는 일정 시간마다 자동으로 토큰을 갱신하고요. 세 API를 호출했다면 세 API가 아마 가까이 응집되어 있을 가능성이 큰데요. All I know is now 알게 됐어 나 (I know) 그동안 맨날 always up and down (no more) 생각 또 생각 spinnin' 'round and 'round, changing my mind 수상해서 그렇지 이런 헛소리 (no more) How it's supposed to be 그만해 'cause it's clear (It's simple) it's like biting an apple 각 개체(Entity)를 노드로 보고 노드 간 관계를 그려서 연결되어 있다면(Edge) GraphQL을 사용하는 것도 방법일 거예요. GraphQL의 용도가 말씀하신 상황을 위한 용도는 아니긴 하지만, 요는 한 API 호출로 인접한 데이터를 함께 가져온다는 아이디어예요. 사용자에겐 좀 불친절하지만 직관적인 방법도 있어요. 세 API를 호출한다면, 화면에서 연관된 부분 별로 호출에 관여하는 API가 다른 것일텐데요. API 호출에 성공한 부분만 그리고, 실패한 부분은 실패했다는 표시를 하는 거죠. 마치 Any 처럼요. 그에 반해 단 하나라도 401이나 403 응답을 받으면 세션이 만료되었으니 새로고침하겠다는 안내를 띄우는 거예요. 구글 닥스나 스프레드시트 등 구글 도큐먼트 제품들이 이 방식을 따르죠. 기술적으로는 사용자에게 거칠거나 불친절해서 사용자에게 유료한 사용자 경험을 주지 못하잖아요. 그렇다면 HCI(Human-Computer Interaction, 인간-컴퓨터 상호작용)에 기초하여 UX/UI를 고민해 사용자 경험을 개선할 수도 있을 거예요. 애니메이션 효과를 주어서 로딩되는 체감 시간을 적게 느끼게 하는 것처럼요. 관련해서 인간 중심 인터페이스(Humane Interface) 책 추천해요.