REST (Representational State Transfer)
REST는 애플리케이션을 설계하기 위해 널리 채택된 API 아키텍처 스타일입니다. 리소스 조작, 상태-비저장 및 균일한 인터페이스를 위해 표준 HTTP 메서드(GET, POST, PUT, DELETE)를 기반으로 합니다. REST API는 리소스를 식별하기 위해 URI(Uniform Resource Identifier)를 사용하며 JSON 또는 XML과 같은 다양한 형식으로 데이터를 교환합니다.
SOAP (Simple Object Access Protocol)
SOAP는 네트워크를 통해 구조화된 정보를 교환하기 위한 XML 기반 프로토콜입니다. 엄격한 규칙을 따르며 메시지의 구조를 정의하기 위해 XML 스키마를 사용합니다. SOAP API는 일반적으로 HTTP 프로토콜을 사용하지만 SMTP나 TCP와 같은 프로토콜도 사용할 수 있습니다. SOAP API는 높은 수준의 프로토콜 추상화를 제공하고, 암호화 및 트랜잭션 관리와 같은 고급 기능을 지원합니다. 은행 및 금융 산업에서는 보안을 이유로 일반적으로 SOAP를 사용합니다.
SOAP는 서로 다른 시스템 간의 복잡한 연결이 필요한 환경에서 사용됩니다. 암호화, 디지털 서명 및 신뢰할 수 있는 메시징과 같은 고급 기능을 지원하는 엄격하고 표준화된 메시징 프로토콜을 제공합니다. 따라서 보안, 신뢰성 및 트랜잭션이 중요한 시나리오에 적합합니다.
GraphQL
GraphQL은 API 쿼리 언어로 클라이언트가 서버에 특정한 데이터를 요청할 수 있습니다. 클라이언트가 필요한 데이터만 요청하여 데이터 패치에 대해 유연하고 효율적인 접근 방식을 제공합니다. 각 엔드포인트가 고정된 데이터 세트를 반환하는 REST와 달리 GraphQL API는 단일 엔드포인트가 있으며 클라이언트는 요구 사항에 따라 응답을 형성할 수 있습니다.
facebook, GitHub, Shopify, Twitter등의 회사가 사용합니다.
gRPC (Google Remote Procedure Call)
gRPC는 구글이 원격 프로시저 호출 API 구축을 위해 개발한 고성능 오픈 소스 프레임워크입니다. protobuf를 사용하며 여러 프로그래밍 언어를 지원합니다. gRPC API는 양방향 스트리밍 및 인증과 같은 기능을 제공하며 전송을 위해 이진 직렬화 및 HTTP/2를 사용하여 서비스 간의 효율적인 통신을 가능케 합니다.
gRPC는 효율적이고 확장 가능한 분산 시스템을 구축하게 합니다. 구글, 넷플릭스, 스퀘어 등의 회사가 사용합니다.
WebSocket
WebSocket은 단일 TCP 연결을 통해 이중 통신 채널을 제공하는 통신 프로토콜입니다. 요청-응답 기반의 전통적인 HTTP와 달리 WebSocket은 클라이언트와 서버 간의 실시간 양방향 통신을 허용합니다. 이것은 클라이언트와 서버가 반복적인 요청 없이 서로에게 메시지를 보낼 수 있게 합니다. WebSocket은 채팅 애플리케이션, 협업 도구, 스트리밍 서비스와 같은 실시간 업데이트가 필요한 애플리케이션에서 사용됩니다.
WebSocket을 사용하는 메시징 어플리케이션은 Slack, Discord, Trello, Robinhood 등이 있습니다.
Webhook
Webhook는 HTTP POST 요청을 다른 시스템의 미리 정의된 URL로 전송하여 한 시스템에서 이벤트를 자동으로 알리거나 트리거하는 메커니즘입니다. 두 시스템이 거의 실시간으로 데이터를 전송하여 통신할 수 있도록 합니다. 특정 이벤트나 조건이 발생하면 Webhook를 트리거하고, Webhook는 대상 시스템의 엔드포인트로 관련 데이터 페이로드를 전송합니다. 일반적으로 서로 다른 서비스와 시스템을 통합하는 데 사용되며 실시간 데이터 동기화, 이벤트 기반 워크플로우 및 자동 알림을 가능하게 합니다.
출처
'레퍼런스' 카테고리의 다른 글
[Medium] 자바 개발자가 피해야 하는 11가지 실수 (1) (0) | 2024.05.17 |
---|---|
[Medium] 300개 이상의 리트코드 문제를 해결한 방법 (0) | 2024.04.24 |
[Medium] 2024 버클리즈 Java SpringBoot 인터뷰 질문 (3) (0) | 2024.04.10 |
[Medium] 2024 버클리즈 Java SpringBoot 인터뷰 질문 (2) (0) | 2024.04.03 |
[Medium] 2024 버클리즈 Java SpringBoot 인터뷰 질문 (1) (0) | 2024.04.01 |