반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 오류
- 파이토치
- csrf_token
- DB
- 프로그래밍
- 데이터베이스
- Linux
- pytorch
- AI
- css
- 웹서버
- 프론트엔드
- django-debug-toolbar
- 개발환경
- 디자인 패턴
- Django
- MySQL
- 파이썬
- 리눅스
- html
- python
- pyvenv.cfg
- 인공지능
- javascript
- java
- 웹프로그래밍
- 백엔드
- 디자인패턴
- Design Pattern
- vscode
Archives
- Today
- Total
Shong Studio의 정보 창고
REST API, Graph QL, gRPC란? 본문
728x90
반응형
1. REST API
REST API (Representational State Transfer API)는 클라이언트와 서버 간의 상호작용을 위해 사용되는 아키텍처 스타일로, 웹 서비스 설계 원칙 중 하나입니다. REST는 자원을 URI로 식별하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 통해 자원에 대한 작업을 수행합니다.
- 주요 특징:
- 무상태성 (Stateless): 서버는 각 요청을 독립적으로 처리하며, 이전 요청의 상태를 기억하지 않습니다.
- 자원 기반 (Resource-Based): 모든 것은 자원으로 간주되며, URI를 통해 자원을 식별합니다.
- 표현 (Representation): 자원의 상태는 XML, JSON, HTML 등 다양한 포맷으로 표현될 수 있습니다.
- 클라이언트-서버 구조: 클라이언트는 사용자 인터페이스를 담당하고, 서버는 데이터 저장 및 비즈니스 로직을 처리합니다.
- 캐싱 가능: HTTP의 캐시 기능을 활용하여 성능을 향상시킬 수 있습니다.
2. GraphQL
GraphQL은 Facebook에서 개발한 쿼리 언어로, 클라이언트가 필요로 하는 데이터만을 명확하게 요청할 수 있는 API를 설계하는 데 사용됩니다. REST의 한계를 극복하기 위해 만들어졌으며, 특히 데이터 페칭 최적화에 중점을 둡니다.
- 주요 특징:
- 유연한 데이터 요청: 클라이언트는 필요한 자원과 필드를 정확히 지정할 수 있습니다.
- 단일 엔드포인트: 모든 요청이 단일 엔드포인트로 처리됩니다.
- 타입 시스템: 강력한 타입 시스템을 통해 요청과 응답 구조를 명확히 정의합니다.
- 계층형 데이터 요청: 네스트된 관계형 데이터를 한 번의 요청으로 가져올 수 있습니다.
- 효율적인 데이터 페칭: 과도한 데이터 전송(과다 또는 과소 페칭)을 방지할 수 있습니다.
3. gRPC
gRPC는 Google에서 개발한 오픈 소스 원격 프로시저 호출(Remote Procedure Call) 프레임워크로, 프로토콜 버퍼스(Protocol Buffers)를 사용하여 직렬화된 데이터를 전송합니다. 주로 고성능, 이진 데이터 통신이 필요한 마이크로서비스 환경에서 사용됩니다.
- 주요 특징:
- 이진 프로토콜: 텍스트 기반이 아닌 이진 형식으로 데이터를 전송하여 성능이 뛰어납니다.
- 다양한 언어 지원: C++, Java, Python 등 여러 언어에서 클라이언트와 서버를 구현할 수 있습니다.
- 양방향 스트리밍: 클라이언트와 서버 간의 양방향 스트리밍이 가능하여 실시간 데이터 전송에 유리합니다.
- 서비스 정의:
.proto
파일을 통해 서비스와 메시지를 정의합니다. - 로드 밸런싱 및 인증: 기본적인 로드 밸런싱과 인증 기능을 제공합니다.
4. API Gateway
API Gateway는 마이크로서비스 아키텍처에서 클라이언트의 요청을 적절한 서비스로 라우팅하는 역할을 하는 서버입니다. API Gateway는 여러 마이크로서비스를 통합하여 클라이언트에게 단일 접점을 제공합니다.
- 주요 기능:
- 요청 라우팅: 클라이언트의 요청을 적절한 마이크로서비스로 라우팅합니다.
- 보안: 인증 및 권한 부여를 관리합니다.
- 로드 밸런싱: 트래픽을 분산시켜 시스템의 안정성을 높입니다.
- 데이터 변환: 클라이언트와 서버 간 데이터 형식을 변환합니다.
- API 컴포지션: 여러 서비스로부터 데이터를 모아 하나의 응답으로 조합할 수 있습니다.
5. MSA 환경
MSA (Microservices Architecture) 환경은 애플리케이션을 작은 독립적인 서비스들로 나누어 개발하고 배포하는 아키텍처 스타일입니다. 각 서비스는 고유의 기능을 담당하며, 독립적으로 배포되고 확장될 수 있습니다.
- 주요 특징:
- 독립적 배포: 각 서비스는 독립적으로 배포될 수 있어 개발과 배포의 유연성을 높입니다.
- 폴리글롯 환경: 각 서비스가 서로 다른 기술 스택을 사용할 수 있습니다.
- 고가용성: 개별 서비스가 실패해도 전체 시스템의 가용성에 큰 영향을 미치지 않습니다.
- 자율적 개발팀: 각 팀이 특정 서비스의 설계, 개발, 배포를 자율적으로 관리할 수 있습니다.
- 경량 프로토콜: 서비스 간 통신은 주로 HTTP/REST, gRPC 등을 사용하여 경량화된 방식으로 이루어집니다.
728x90
반응형
'IT' 카테고리의 다른 글
Docker와 Kubernetes에 대해서 알아보자 (0) | 2024.09.14 |
---|---|
도커(Docker)란? - 개념 및 설치 방법 (Feat. Mysql) (0) | 2024.03.01 |
IntelliJ IDEA에서 한글이 깨지는 문제 - Windows (0) | 2024.03.01 |
IntelliJ IDEA와 VSCode: 웹 개발 호환성 분석 (0) | 2024.03.01 |