API란 무엇인가?
Window API, Web API 등 우리가 프로그래밍을 수행하면서 자주 보는 표현 중 한 가지인 API는 도대체 뭘까?
API는 Application Programming Interface의 약자이다. Interface라는 단어가 들어있는 만큼, 어떤 편의성/도움을 제공하기 위한 수단이라고 예측 해볼 수 있다.
과연 어떤 것에 편의성을 제공하기 위함일까? 우선 각 단어 별로 나누어서 보자
- Application
특정한 목적을 수행하는 응용 프로그램.
- Programming
컴퓨터에서 어떤 동작을 수행하기 위한 명령어를 작성하는 행위.
- Interface (Computer Science에서의 의미)
서로 다른 소프트웨어 혹은 컴포넌트가 서로 정보를 주고 받을 수 있도록 하는 매개체 or 규칙

이를 종합해보면,
서로 다른 애플리케이션끼리 원활한 상호 작용을 수행하기 위한 매개체로
요약할 수 있다.
그 의미대로 API는 서로다른 두 컴포넌트/애플리케이션 간의 통신을 용이하게 한다.
이 매개체의 예시로는 함수 같은 것들이 있다.
그렇다면 Web API는 뭘까?

Web API는 앞서 언급한 API 종류 중 하나이다. 여기서 앞에 Web이 붙어있다.
그렇다면 Web API는 애플리케이션끼리 서로 상호 작용하게 하기 위한 매개체인데,
어떤 환경에서 한다고?? 인터넷(Web) 환경에서! 라고 볼 수 있다.
우리는 왜 Web API를 사용해야할까?

과거에는 응용 프로그램을 모놀리틱 아키텍처(Monolitic Architecture)를 기반으로 제작했다. 모놀리틱 아키텍처는 간단하게 말해서 올인원이다. 하나의 프로그램에 UI(User Interface), BL(Business Logic), DAL(Data Access Layers)을 모두 포함한 것이다.
해당 방식의 특징은 다음과 같다.
- 하나의 응용프로그램에 모든 기능이 탑재되어 개발,빌드,배포가 용이함.
- 각 구성 요소간 결합도가 높음. → 부분적인 Scale-Up 불가능
- 한 프레임워크, 언어에 종속됨. → 여러 기기를 통해 배포할 경우, 해당 기기에 맞는 새로운 버전으로 다시 구현
- 문제 발생 시, 어느 부분에서 발생한 문제점인지 인지하기 힘듬.
장점도 있지만, 각 구성요소간 의존도가 높은 만큼 문제 발생 시, 비효율적인 방식으로 해결해야한다.
우리 좀 더 독립적으로 구성해보자

공통된 기능 (BL / DAL)을 Web API의 형태로 구현하고 이를 서버를 통해 각기 다른 환경에서 동작하는 응용 프로그램에 해당 기능을 제공하는 것이다. 물론 각 환경 별로 적절한 UI를 다시 구성해줄 필요는 있다.
응용 프로그램이 서버로 요청을 보내면, 각 요청의 목적에 맞게 엔드 포인트(End Point)에 도달하며, 그 엔드 포인트에는 해당 요청을 처리하기 위한 기능들이 존재하는 형태인 것이다.
이를 통해 우리는 기기의 제약 없이 보다 유연하게, 개발할 수 있게 된다. 이는 당연히 개발 시간을 절약하는 것으로도 이어진다.

혹은 기상청, 쇼핑몰 등에서 수집한 가치있는 데이터들을 Web API를 통해 개발자에게 공유되면 다양한 서비스들이 개발될 수도 있다.
결론

여기서 중요한 건
1. 비즈니스 로직을 제공
2. 가치있는 데이터를 공유
이 두 가지 시나리오 모두 어떤 함수를 호출하는 것으로 제공된다는 점!
그리고 이 함수 모두 Web 환경을 거처 호출된다.
즉 Web API를 한 줄로 요약하면,
Web을 통해(HTTPS 프로토콜을 통해) 원격으로 호출할 수 있는 함수들의 집합이다.
'Server' 카테고리의 다른 글
| [Concurrency] 동시성 개요 (0) | 2024.12.18 |
|---|---|
| [Concurrency] 스레드 개요 (0) | 2024.07.11 |
| [Web 서버 기초] ASP.Net Core - Middleware Pipeline (0) | 2024.06.12 |
| [Web 서버 기초] Web API Framework와 ASP.Net Core (0) | 2024.05.31 |
| [Web 서버 기초] Web API는 어떻게 동작하는가? (Feat. CRUD) (1) | 2024.05.29 |