API


프로그램들이 서로 소통하는 방법 , (인간이 아닌) 코드들끼리 서로 소통하기 위해 만들어짐

우리가 키보드로 컴퓨터와 대화를 하는 것처럼 API는 키보드처럼 서버에서 만든 것, 그리고 API가 작동하면 그걸 앱이나 웹에 전달 (백엔드 데이터베이스, 서버로 가서 알려줌)

Ex) 날씨 api, web api,

동기로 API를 처리했을 때


가장 일반적인 방법으로 API 요청을 수행하는 것이다. 코드가 순차적으로 실행되며, 요청과 응답이 처리될 때까지 다음 코드로 진행되지 않는다.

function fetchUserData(userId) {
  const response = fetch(`https://api.example.com/users/${userId}`);
  const userData = response.json();
  return userData;
}

function displayUserName(userId) {
  const user = fetchUserData(userId);
  console.log(user.name);
}

displayUserName(123);
console.log("End of script");

위 코드에서 fetchUserData 함수가 API 요청을 하고 응답이 올 때까지 대기한다. 따라서 displayUserName 함수에서 fetchUserData 함수가 완료될 때까지 아무 작업도 수행되지 않는다. 결과적으로 출력은 다음과 같다:

Alice (user's name)
End of script

따라서 API호출을 동기로 처리한다면 다음과 같은 문제가 생긴다.

  1. 응답 지연: 동기 방식에서는 API 호출이 완료될 때까지 애플리케이션의 다른 부분이 차단된다. 이는 특히 네트워크 지연이나 서버 처리 지연이 있는 경우 사용자 경험에 부정적인 영향을 줄 수 있다.
  2. 성능 저하: 동기 방식은 애플리케이션의 성능에 영향을 줄 수 있다. 하나의 작업이 완료될 때까지 다른 작업을 시작할 수 없기 때문에, 시스템의 전반적인 처리량이 감소할 수 있다.
  3. UI 블로킹: 특히 클라이언트 측 애플리케이션에서 동기 API 호출은 사용자 인터페이스(UI)가 응답하지 않게 만들 수 있다. 사용자는 애플리케이션이 '멈춘' 것처럼 느낄 수 있으며, 이는 사용자 경험을 크게 저해한다.
  4. 리소스 활용의 비효율성: 동기 처리는 CPU와 같은 시스템 리소스를 효율적으로 활용하지 못할 수 있다. 이는 특히 고성능을 요구하는 애플리케이션에서 문제가 될 수 있다.
  5. 스케일링 문제: 대규모 사용자 기반 또는 높은 트래픽을 처리하는 애플리케이션에서 동기 처리는 스케일링에 문제를 일으킬 수 있다. 서버는 동시에 많은 요청을 처리할 수 있는 능력이 제한된다.