-
(2024.12.04(수요일)) 슈퍼코딩 (신입연수원) 2주차 Day 3 후기2024년 12월 04일
- 유니얼
-
작성자
-
2024.12.04.:55
728x90오늘의 배운점
REST API란?
REST API는 REST(REpresentational State Transfer) 아키텍쳐 스타일의 설계 원칙을 준수하는 API(애플리케이션 프로그래밍 인터페이스)입니다. REST API는 애플리케이션을 통합하고 마이크로서비스 아키텍쳐의 구성 요소를 연결하는 유연하고 가벼운 방법을 제공합니다.
REST API의 설계원칙
REST API는 다음 6가지 설계 원칙을 기반으로 동작합니다:
1. 균일한 인터페이스 (Uniform Interface)
- 리소스는 고유한 URI(Uniform Resource Identifier)를 통해 식별됩니다.
- 동일한 리소스는 항상 동일한 URI를 통해 접근 가능.
- 예: 사용자 데이터를 조회하려면 /users/{id}와 같은 URI를 사용.
2. 클라이언트-서버 분리 (Client-Server Separation)
- 클라이언트와 서버는 서로 독립적으로 동작하며, 클라이언트는 URI만 알면 리소스에 접근 가능.
- 서버는 클라이언트와 상호작용하면서도 클라이언트의 상태를 관리하지 않음.
- 예: 프론트엔드와 백엔드의 독립적인 개발 가능.
3. 무상태성 (Stateless)
- 각 요청은 독립적이며 필요한 모든 정보를 포함해야 함.
- 서버는 클라이언트의 상태를 저장하지 않음.
- 예: 인증 토큰을 요청마다 포함하여 인증 수행.
4. 캐시 가능성 (Cacheability)
- 리소스는 캐싱 가능해야 하며, 응답에는 캐시 가능 여부를 명시.
- 클라이언트는 서버 응답을 캐싱하여 성능 최적화 가능.
- 예: 정적 리소스(이미지, CSS 파일 등)는 클라이언트 캐시에 저장.
5. 계층화된 시스템 아키텍처 (Layered System)
- 클라이언트와 서버 간 요청과 응답은 중간 계층(프록시, 게이트웨이 등)을 거칠 수 있음.
- 중간 계층은 로드 밸런싱, 보안 강화 등의 역할을 수행.
6. 코드 온디맨드 (Code on Demand, 선택 사항)
- 필요 시 서버에서 실행 가능한 코드를 클라이언트로 전달하여 실행.
- 예: 클라이언트에 JavaScript 코드를 전송하여 동적 페이지 렌더링 수행.
REST API의 장점
- 표준화: HTTP 표준을 따르므로 학습 곡선이 낮고 이해하기 쉬움.
- 확장 가능: 클라이언트와 서버 간 의존성이 낮아 확장성과 유지보수가 용이.
- 가벼운 통신: SOAP 같은 대체 기술보다 간단하고 가벼운 구조.
- 유연성: 다양한 데이터 형식(JSON, XML)과 프로그래밍 언어 지원.
- 캐싱 가능: 응답을 캐싱하여 성능 최적화 가능.
REST API의 단점
- 실시간성 부족: 요청-응답 모델에 기반하므로 실시간 통신(예: WebSocket, gRPC 등)이 필요한 환경에는 부적합.
- 복잡한 비즈니스 로직 처리 어려움: 단순 CRUD 작업 외의 복잡한 비즈니스 요구사항에는 추가 설계가 필요.
- 무상태성의 한계: 모든 요청에 필요한 정보를 포함해야 하므로, 데이터 오버헤드가 발생할 수 있음.
- 보안: HTTP는 기본적으로 보안이 취약하므로, 인증/인가와 HTTPS 사용이 필요.
소켓 프로그래밍이란?
소켓 프로그래밍은 네트워크를 통해 데이터를 송수신하기 위해 양방향 통신을 지원하는 기술입니다. 소켓은 클라이언트와 서버 간 지속적인 연결을 유지하며, 데이터를 실시간으로 전송할 수 있는 효율적인 방법을 제공합니다.
소켓 프로그래밍의 주요 특징
- 지속적인 연결: 클라이언트와 서버 간의 연결을 유지하여 데이터 전송.
- 양방향 통신: 클라이언트와 서버가 동시에 데이터를 주고받을 수 있음.
- 실시간 처리: 데이터 변경 사항을 즉시 다른 쪽에 전달.
- 프로토콜 지원:
- TCP: 신뢰성 있는 연결 기반 통신.
- UDP: 빠르고 가벼운 비연결 통신.
소켓 프로그래밍의 장점
- 실시간성: 데이터가 변경되면 즉시 전송.
- 효율성: 지속적인 연결로 데이터 전송 속도 향상.
- 이벤트 기반 처리: 특정 이벤트 발생 시 데이터 처리 가능.
REST API와 소켓 프로그래밍 비교
모델 요청-응답 기반 지속적인 연결 기반 데이터 전송 클라이언트 요청 시 데이터 전송 이벤트 발생 시 즉시 데이터 전송 연결 상태 비연결 (요청마다 연결 생성 및 종료) 연결 유지 실시간성 낮음 높음 주요 용도 데이터 조작 (CRUD), 비실시간 작업 실시간 채팅, 게임, 스트리밍, IoT 시스템 성능 요청량 증가 시 성능 저하 연결 유지로 효율적인 데이터 전송 가능 비즈니스 로직 처리 단순 데이터 조작에 적합 복잡한 이벤트 기반 로직 처리 가능 일일 보고 양식
부족한 점 : REST API와 소켓 프로그래밍의 장단점 이해 부족.
스스로 시도해본 것들 : REST API 보안 방법 조사 및 CRUD와 소켓 프로그래밍 비교 실험.
알게된 점 : 서버-클라이언트 데이터 검증 방법, CRUD와 소켓 프로그래밍의 상호보완 가능성.
회고 : 다양한 해결책을 시도하며 기술 이해도를 높임.반응형다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드
받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이
감지되어도 모달 창이 표시되지 않습니다.)