API란
- 응용 프로그래밍 인터페이스(Application Programming Interface)
- 클라이언트의 요청을 시스템으로 보내고 시스템의 응답을 받는 다양한 종류의 인터페이스
- 서비스의 통신을 돕는 중재자
- REST, SOAP, GraphQL, gRPC 등의 아키텍처 스타일로 설계
* 마이크로 서비스 아키텍처(Micro Service Architecture)란?
- 전체 프로그램이 하나로 묶여있는 monolithic 아키텍쳐와 달리, 단일 프로그램을 각 컴포넌트 별도로 나누어 그것들의 조합으로 구축하는 방법.
- 각 컴포넌트는 API를 이용하여 타 서비스와 통신하며, 독립적 개발, 배포, 운영 가능
- API Gateway를 통해 API 서버 앞 단에서 모든 API 서버들의 Endpoint를 묶어줌
REST (REspresentational State Transfer)
- 사용자가 json, xml 통신을 통해 백엔드 정보에 액세스할 수 있는 클라이언트-서버 아키텍쳐
- http 프로토콜을 사용하여 서비스에 연결하며, URI로 리소스를 선택하고 특정 작업을 선택하기 위해 GET, PUT, POST 와 같은 http 요청 메서드를 사용한다.
- 요청과 응답은 동작과 관련된 데이터를 포함하고, 헤더는 메타데이터를 제공해준다.
예를 들어, ID 11의 프로덕트에 대한 요청을 보내고, API가 json 포맷으로 응답하도록 한다.
GET /products/11 HTTP/1.1
Accept: application/json
다음과 같은 응답을 받을 수 있다.
HTTP/1.1 200 OK
Content-Type: application/json
{ id: 11, name: "Red Apple", sku: "reapp", price: { amount: 100, currencyCode: "KRW" } }
gRPC (google Remote Procedure Call)
- google에서 개발한 오픈소스 RPC (RPC: 원격 컴퓨터나 프로세스에 존재하는 함수를 호출하는 데 사용하는 프로토콜)
- 일련의 함수를 외부 클라이언트에 노출시킴으로서 서비스 간 통신을 단순화, 관리하는 오픈 소스 프로토콜
- HTTP/2에 구축되며, 양방향 스트리밍과 TLS와 같은 기능을 활용
- 구조화된 데이터의 serialization을 위한 매커니즘으로 protocal buffer를 사용 (REST의 json 사용과 유사)
REST vs gRPC
- REST에서는 일반적으로 JSON, XML 메세지 형식을 사용하지만, gRPC에서는 Protocal buffers를 사용한다.
- REST에서는 메세지 페이로드가 크지만, gRPC는 작다.
- REST는 text parsing을 하기 때문에 복잡도가 높지만, gRPC는 바이너리 구조를 사용하기 때문에 복잡도가 낮다.
개괄적인 내용만을 정리해보았으나, 각 아키텍처의 자세한 설명과 네트워크 용어 정리가 추후 포스팅에서 필요할 듯 하다.
참고 자료
'Dev Notes > BE' 카테고리의 다른 글
NAS vs NFS (0) | 2025.02.26 |
---|---|
[Database] Docker로 RDBMS 사용하기 (ft. postgres, mysql) (0) | 2023.06.04 |
[Database] MySQL 커넥터 비교하기 (0) | 2023.05.28 |
[Database] ORM과 python에서 postgresql 연결하기 (0) | 2023.05.16 |