1. 개념 및 정의
1.1 REST API
REST API(Representational State Transfer Application Programming Interface)는 HTTP 프로토콜을 기반으로 리소스를 CRUD(Create, Read, Update, Delete) 방식으로 제공하는 웹 서비스 아키텍처입니다. REST API는 클라이언트와 서버 간의 통신에서 URI(Uniform Resource Identifier)와 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용합니다.
1.2 TCP
TCP(Transmission Control Protocol)는 OSI 7계층 모델의 전송 계층(Transport Layer)에 해당하는 프로토콜로, 신뢰성 있는 데이터 전송을 보장하는 연결 지향(Connection-Oriented) 프로토콜입니다. TCP는 패킷을 순서대로 전달하고 손실된 패킷을 재전송하여 정확한 데이터 전달을 보장합니다.
2. 주요 차이점
2.1 통신 방식
- REST API: HTTP 기반의 요청-응답 방식으로 동작하며, 클라이언트가 요청을 보내고 서버가 응답을 반환하는 형태로 이루어집니다.
- TCP: 지속적인 연결을 유지하며, 데이터를 패킷 단위로 송수신하여 신뢰성 있는 데이터 전송을 보장합니다.
2.2 프로토콜 계층
- REST API: 애플리케이션 계층에서 HTTP 프로토콜을 사용합니다.
- TCP: 전송 계층에서 동작하며, IP 프로토콜과 함께 사용됩니다.
2.3 연결 방식
- REST API: 무상태(Stateless) 방식이며, 요청과 응답이 독립적으로 처리됩니다. 각 요청은 이전 요청과 관계없이 독립적으로 실행됩니다.
- TCP: 상태(Stateful) 방식이며, 클라이언트와 서버 간 연결이 유지됩니다. 연결이 끊기면 다시 연결을 설정해야 합니다.
2.4 데이터 전송 신뢰성
- REST API: HTTP를 기반으로 동작하기 때문에 자체적으로 데이터 신뢰성을 보장하지 않습니다. 대신 응답 코드(200, 404, 500 등)나 응답 바디의 내용을 통해 상태를 확인해야 합니다.
- TCP: 패킷을 순서대로 전달하며, 손실된 패킷은 재전송하여 신뢰성 있는 데이터 전송을 보장합니다.
2.5 속도 및 성능
- REST API: HTTP 요청마다 헤더와 메시지를 포함해야 하므로 TCP보다 오버헤드가 많아 성능이 상대적으로 낮을 수 있습니다.
- TCP: 연결이 유지되며, 데이터가 패킷 단위로 전송되므로 속도가 빠르고 네트워크 리소스를 효율적으로 사용할 수 있습니다.
2.6 사용 사례
- REST API: 웹 애플리케이션, 마이크로서비스, 모바일 앱 백엔드 등에서 주로 사용됩니다.
- TCP: 실시간 스트리밍, 온라인 게임, 파일 전송, VoIP(인터넷 전화) 등에서 사용됩니다.
3. REST API와 TCP의 장점 및 단점
3.1 REST API의 장점
✅ 간편한 사용: URI를 사용하여 리소스를 쉽게 식별하고 HTTP 메서드를 통해 명확하게 요청할 수 있습니다.
✅ 확장성: 다양한 클라이언트(웹, 모바일, IoT 등)에서 쉽게 접근할 수 있습니다.
✅ 무상태(Stateless): 요청마다 독립적으로 처리되므로 서버가 클라이언트 상태를 저장할 필요가 없습니다.
✅ 표준화된 프로토콜: HTTP 기반이므로 방화벽이나 네트워크 환경에 관계없이 사용할 수 있습니다.
3.2 REST API의 단점
❌ 성능 저하: 요청마다 HTTP 헤더를 포함해야 하므로 TCP보다 오버헤드가 큽니다.
❌ 실시간성 부족: 요청-응답 방식이므로 실시간 데이터 전송에는 적합하지 않습니다.
❌ 데이터 크기 제한: HTTP 기반이므로 대량의 데이터를 전송하기에는 비효율적일 수 있습니다.
3.3 TCP의 장점
✅ 신뢰성 높은 데이터 전송: 패킷 손실 시 재전송을 통해 데이터의 정확성을 보장합니다.
✅ 빠른 속도: 연결이 유지되므로 데이터를 지속적으로 송수신할 수 있습니다.
✅ 실시간 데이터 전송 가능: VoIP, 온라인 게임, 스트리밍 등 실시간 데이터 처리에 적합합니다.
3.4 TCP의 단점
❌ 상태 유지 필요: 클라이언트와 서버 간 연결을 유지해야 하므로 리소스 소모가 큽니다.
❌ 설정 복잡성: 네트워크 연결 설정 및 유지가 복잡할 수 있습니다.
❌ 방화벽 문제: 일부 네트워크 환경에서는 TCP 포트 차단 등의 문제가 발생할 수 있습니다.
4. REST API와 TCP의 사용 예시 비교
웹 서비스 | ✅ 웹 서버-클라이언트 간 통신 | ❌ 일반적으로 사용되지 않음 |
파일 전송 | ❌ HTTP 업로드/다운로드 속도 느림 | ✅ FTP 등으로 빠른 전송 가능 |
실시간 채팅 | ❌ 요청-응답 방식이므로 실시간성 부족 | ✅ WebSocket, TCP 소켓 사용 |
온라인 게임 | ❌ 느린 요청-응답 방식 | ✅ 빠른 데이터 전송 가능 |
동영상 스트리밍 | ❌ HTTP 기반 스트리밍 지원 가능하지만 느림 | ✅ 빠른 데이터 전송 지원 |
IoT 기기 연결 | ✅ RESTful API 사용 가능 | ✅ MQTT, TCP 소켓 활용 가능 |
5. 결론
REST API와 TCP는 서로 다른 목적에 최적화된 통신 방식입니다.
- REST API는 웹 기반 서비스에 적합하며, 무상태성을 갖고 있어 확장성과 유지보수성이 뛰어납니다.
- TCP는 빠르고 신뢰성 있는 데이터 전송이 필요할 때 적합하며, 실시간 통신에 강점을 가집니다.
따라서 웹 서비스나 마이크로서비스 개발에는 REST API가 적합하며, 실시간 데이터 전송이 필요한 경우 TCP를 사용한 소켓 통신(WebSocket, MQTT 등)이 적합합니다. 💡
'[AWS-FRF] > EC2' 카테고리의 다른 글
[중요] NGINX / JAVA 서버 로그 주기 설정 작업 !! (5) | 2025.03.12 |
---|---|
[참고] Amazon EBS 암호화 작동 방식 !! (3) | 2025.03.11 |
[참고] AES-256(Advanced Encryption Standard - 256bit) 강력한 대칭키 암호화 알고리즘 !! (3) | 2025.03.11 |
[중요][AWS] Vault Consul 포트 이슈 !! (4) | 2025.03.05 |
[참고][장애회고] ORM(JPA) 사용 시 예상치 못한 쿼리로 인한 HikariCP 이슈 (3) | 2025.02.19 |
[중요] Amazon Linux 2023 Swap 메모리 설정하기!! (2) | 2025.02.17 |
[중요] 자바 힙(Heap) 메모리 구조 & 동작과정 !! (4) | 2025.02.07 |
[중요][AWS][Linux] systemctl 명령어로 서비스 등록, 생성, 삭제!! (18) | 2025.02.05 |
댓글