기본 용어 설명
API
- Application Programming Interface
- 소프트웨어 간의 상호작용을 위한 규약이나 프로토콜
- 다른 소프트웨어 컴포넌트와 통신할 수 있게 해주는 인터페이스
프로토콜
- 컴퓨터나 전자 기기들 간에 데이터를 주고받을 때 사용하는 규칙이나 표준
- 서로 다른 시스템 간의 원활한 통신을 가능하게 함
- HTTP, TCP/IC, FTP 등이 대표적인 통신 프로토콜
- 데이터 형식, 전송 순서, 오류 처리 방법 등을 정의함
- 프로토콜은 네트워크 통신의 기반이 되며, 다양한 기기와 소프트웨어 간의 호환성을 보장함
인터페이스
- 서로 다른 두 개의 시스템, 장치 또는 소프트웨어 사이에서 정보나 신호를 주고받는 경계나 접점을 의미
- 소프트웨어에서는 클래스나 객체가 구현해야 하는 메서드들의 집합을 정의함
- 복잡한 시스템을 단순화하고, 사용자나 다른 시스템과의 상호작용을 용이하게 함
- 사용자와 시스템 간의 상호작용을 담당하는 사용자 인터페이스 (UI), 소프트웨어 컴포넌트 간의 상호작용을 정의하는 프로그래밍 인터페이스 등이 있음
아키텍처 스타일
- 소프트웨어 시스템의 구조를 설계하는 방법론이나 패턴을 의미함
- 시스템의 구성 요소와 그들 간의 관계를 정의함
CRUD 연산
- Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 의미함
- 데이터를 다루는 기본적인 네 가지 작업을 나타냄
URI
- Uniform Resource Idntifier
- 리소스를 고유하게 식별하는 문자열
- URL은 URI의 한 형태로, 리소스의 위치를 나타냄
리소스
- 네트워크 상에서 고유하게 식별될 수 있는 모든 종류의 정보나 서비스
- 종류
- 정적 파일 : HTML 문서, 이미지, 비디오, PDF 등
- 동적 생성 콘텐츠 : 데이터베이스 쿼리 결과, 실시간 정보 등
- 서비스 : 웹 API, 웹 서비스 등
- 실제 객체의 디지털 표현 : 사용자 프로필, 제품 정보 등
- 추상적 개념 : 세션, 상태 정보 등
- 특징
- 고유 식별성 : 각 리소스는 URI를 통해 고유하게 식별됨
- 표현 가능성 : 리소스는 다양한 형식(HTML, JSON, XML 등)으로 표현될 수 있음
- 상태 변경 가능성 : 리소스는 시간에 따라 그 상태나 내용이 변경될 수 있음
- 웹 아키텍처에서의 역할
- RESTful 시스템에서 리소스는 핵심 개념임
- 예시
- 웹 페이지 (http://happybeen.com/page)
REST API
- REST(Representational State Transfer) API는 웹 서비스를 설계하는 아키텍처 스타일
- HTTP 프로토콜을 기반으로하는 웹 서비스 디자인 방식
- 리소스를 URI로 표현하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스를 조작함
- 이를 통해 간단하고 직관적인 API 설계가 가능하며, 확장성과 유연성이 뛰어남
- 실제 프로젝트에서 REST API를 설계할 때는 명확한 리소스 정의, 적절한 HTTP 메소드 사용, 버전 관리 등을 고려함
주요 특징
- 클라이언트-서버 구조
- 클라이언트와 서버가 독립적으로 분리되어 있음
- 서버는 API를 제공하고, 클라이언트는 사용자 인터페이스와 사용자 상태를 관리함
- 이 분리로 인해 각 부분을 독립적으로 개발하고 확장할 수 있음
- 무상태성
- 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않음
- 모든 필요한 정보는 각 요청에 포함되어야 함
- 이로 인해 서버의 확장성이 향상되고, 구현이 단순화 됨
- 캐시 가능성
- 응답은 캐시 가능 여부를 명시해야 함
- 클라이언트나 중간 서버에서 응답을 캐시할 수 있어 성능이 향상됨
- 불필요한 네트워크 통신을 줄일 수 있음
- 계층화 시스템
- 클라이언트는 보통 서버에 직접 연결되는지, 중간 서버를 통해 연결되는지 알 수 없음
- 중간서버(프록시, 게이트웨이 등)를 사용해 시스템 확장성과 보안을 향상시킬 수 있음
- 로드 밸런싱, 공유 캐시 등의 기능을 추가할 수 있음
- 균일한 인터페이스
- 리소스 식별, 표현을 통한 리소스 조작, 자기 서술적 메시지, HATEOAS(Hypermedia as the Engine of Application State) 등의 원칙을 따름
- 이를 통해 전체 시스템 아키텍처가 단순화되고 가시성이 향상됨