통신 방식
- RESTful API
- HTTP 프로토콜을 기반으로 요청/응답 모델을 따름
- 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 반환하고 연결이 종료
- 상태 없는(stateless) 방식으로 각 요청은 독립적으로 처리
- 소켓 통신
- 양방향 실시간 통신을 지원하는 지속적인 연결을 통해 데이터를 전송
- 연결이 유지되는 동안 클라이언트와 서버 간에 데이터를 지속적으로 송수신 가능
연결 유지 여부
- RESTful API
- 기본적으로 연결을 유지하지 않음 (stateless)
- 요청이 끝나면 연결이 종료되고, 새로운 요청을 할 때마다 새로운 연결이 설정
- 소켓 통신
- 연결 유지
- 클라이언트와 서버는 한 번 연결을 맺으면 그 연결을 통해 데이터를 지속적으로 주고 받음
응답 방식
- RESTful API
- 클라이언트가 요청을 보내면 서버는 그에 대한 응답을 반환
- 단방향 통신이므로, 클라이언트가 요청할 때마다 서버의 응답을 기다림
- 소켓 통신
- 양방향 통신 가능
- 서버와 클라이언트가 서로 데이터를 주고 받음
- 이벤트 기반으로 실시간으로 데이터 교환 가능
성능과 실시간 처리
- RESTful API
- 요청과 응답이 각각 별개의 트랜잭션으로 처리
- 실시간 처리에는 적합하지 않음
Ex) 데이터가 변경될 때마다 서버에 요청을 보내야 하므로 실시간 정보 전달에는 한계가 존재
- 소켓 통신
- 지속적인 연결을 통해 실시간 데이터 전송이 가능하므로 실시간 처리에 적합
Ex) 채팅 애플리케이션, 실시간 알림 시스템 등에서 유리
- 지속적인 연결을 통해 실시간 데이터 전송이 가능하므로 실시간 처리에 적합
사용 사례
- RESTful API
- 주로 웹 애플리케이션, 모바일 애플리케이션에서 데이터 조회나 CRUD 작업을 처리하는 데 사용
- 소켓 통신
- 실시간 데이터 전송이 필요한 곳에서 사용
Ex) 채팅 애플리케이션, 게임, 실시간 알림, 주식 거래 시스템 등에서 유용
- 실시간 데이터 전송이 필요한 곳에서 사용
통신 프로토콜
- RESTful API
- HTTP/HTTPS 프로토콜 사용
- 클라이언트는 서버에 요청을 보내고 서버는 응답을 보내는 요청/응답 모델을 따름
- 소켓 통신
- TCP 또는 UDP 프로토콜을 기반으로 하며, 지속적인 연결을 유지
- 클라이언트와 서버 간에 실시간 양방향 통신이 가능
스케일링
- RESTful API
- 서버가 요청을 처리하고 응답을 반환하는 방식이므로 서버를 수평적으로 확장하는 로드 밸런싱이 비교적 용이
- 소켓 통신
- 연결을 유지하면서 실시간 데이터를 처리하므로 로드 밸런싱이나 세션 관리가 더 복잡할 수 있음
Ex) WebSocket 서버를 수평적으로 확장할 때 상태를 어떻게 관리할지에 대한 고민이 필요
- 연결을 유지하면서 실시간 데이터를 처리하므로 로드 밸런싱이나 세션 관리가 더 복잡할 수 있음
'Computer Science' 카테고리의 다른 글
[Software Engineering] CBD 방법론 (1) | 2024.12.03 |
---|---|
[Database] 트랜잭션의 개념과 ACID 원칙 (1) | 2024.11.18 |
[Software Architecture] REST API과 RESTful API (0) | 2024.11.18 |
[OOP] SOLID 원칙 (0) | 2024.11.13 |
[알고리즘] 시간 복잡도와 공간 복잡도 (0) | 2024.11.05 |