본문 바로가기
IT/API

API이란(Restful API, FAST API)?, 부제: API의 역사

by Cyber_ 2024. 4. 7.

0. 개요

API란 컴퓨터와 컴퓨터를 연동하는 인터페이스이다. 나는 API의 개념을 이 정도만 알고 API의 종류와 그에 따른 개념에 대해 지식이 현저히 부족하다. 지금부터 SOAP API, REST API, RESTfulAPI 그리고 최근 주목받고 있는 FAST API에 대해서 알아가보고자한다.

1. API

1) API(Application Programming Interface)란?

  • Application: App이라고도 불리며 특정 목적을 위해 작업을 수행하도록 설계된 하나 이상의 프로그램웹사이트는, 정적인 페이지, 웹 어플리케이션은 동적인 페이지로 구분할 수 있다.
  • 동적인 페이지란 사용자에게 보여주기만 하는 정적인 페이지를 벗어나 사용자가 검색한 결과를 보여주고 입력한 개인정보를 DB에 저장하는 등의 사용자와 소통하는 행위를 가능하게 하는 페이지이다.
  • Interface: 2개 이상의 장치나 소프트웨어 사이에서 신호를 주고받을 대 그 사이를 연결하는 연결장치나 경계면 또는 연결하는 경계에서 상호접속하기위한 하드웨어, 소프트웨어 조건, 규약 등, 서로 다른 물체 사이에서 상호 간 대화하는 방법예를 들어, 넓은 범위에서의 인터페이스는 문법과 같다 한국어의 경우 '나는 밥을 먹는다.', '그녀는 밤을 지샜다.'와 같이 주어가 앞에오고 목적어가 가운데오고 동사가 마지막에 온다. 이러한 문법을 인터페이스에 비유할 수 있으며,
  • API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성요소가 서로 통신할 수 있게 하는 메커니즘.
  • 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상데이터가 들어있고, 휴대폰의 날씨 앱은 API를 통해 이 시스템과 '대화'하여 휴대폰에 매일 최신 날씨 정보를 표시
  • API는 어떤 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할수 있게 해주는 소프트웨어 도구

2) SOAP(Sipmle Object Access Protocol) API

  • SOPA는 프로토콜, 보안이나 메시지 전송 등에 있어서 REST보다 더 많으 표준들이 정해져 있기 때문에 조금 더 복잡
  • 오버헤드가 많지만 보안, 트랜잭션, ACID(원자성, 일관성, 고립성, 지속성)을 준수해야 하는 보다 종합적인 기능이 필요한 조직에게 적합한 방식
  • 기업용 애플리케이션 등을 작업하는데 더 이상적
  • 성공/반족 실행 로직이 규정되어 있기 때문에 처음부터 끝까지 신뢰성을 제공
  • ACID를 준수하기 때문에 디터의 변형을 줄여주고, 데이터베이스와의 상호작용에 대해서 사전에 정확하게 정하기 때문에 데이터의 무결성을 지켜준다.

3)REST(Representational State Transfer) API

  • 네트워크를 통해서 컴퓨터들끼리 통신할 수 있게 해주는 아키텍처 스타일
  • 인터넷 식별자(URI)와 HTTP 프로코톨을 기반
  • 데이터 포맷으로는 브라우저 간 호환성이 좋은 JSON을 사용
  • 클라이언트와 서버사이에서 통신할 수 있게하고, 아키텍처를 만들 수 있게 해줌.
  • 저옵의 페이로드(실제 전달하려는 내용)가 두 지점사이를 왕복
  • 단일한 인터페이스 사용
  • REST로는 풀지 못하는 문제들을 해결하기 위해서 그래프 QL과 같은 언어가 등장
  • SOAP을 활용해서 메시지를 전달할 필요가 없이 애플리케이션에서 웹의 자우너과 서비스를 HTTP의 Get, Post, Put, Delete Method들만을 사용해서 직접적으로 접근하고 제어
  • 각 요청이 어떤 동작이나 정보를 위한 것인지를 위한 것인지를 그 요청의 모습 자체로 추론 가능
  • URI는 정보의 자원만 표핸해야 하며, 자원의 행위는 HTTP Method에 명시한다는 것

4) REST API의 설계 규칙

  • URI는 명사를 사용(리소스 명은 동사가 아닌 명사를 사용)
  • 슬래시(/)로 계층 관계를 표현
  • URI 마지막 문자로 슬래시를 포함하지 않는다.
  • 밑줄을 사용하지 않고, 하이픈을 사용
  • URI는 소문자로만 구성
  • HTTP 응답 상태 코드 사용
  • 파일확장자는 URI에 포함하지 않는다.

5) Restful API란?

  • Restful은 REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고 합니다.
  • 즉, REST의 원리를 잘 따르는 시스템을 RESTful이란 용어로 지칭

6) SOAP REST 차이

이미지 출처:https://blog.wishket.com/soap-api-vs-rest-api-%EB%91%90-%EB%B0%A9%EC%8B%9D%EC%9D%98-%EA%B0%80%EC%9E%A5-%ED%81%B0-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80/

2. FastAPI

1) FastAPI란?

  • 파이선 3.6 이상에서 작동하는 표준 파이썬 타이 힌트를 바탕으로 한, 현대적이고 빠른 API 서버 웹 프레임워크이다.
  • Flask와 비슷한 구조, 기본적으로 비동기식으로 작성되어 있어 I/O 병목현상이 자주 일어나는 웹 서버에서 빠른 성능을 보여줌

2) 장점

  • 빠름(Starlette, Pydantic): NodeJS 및 Go와 대당할 정도로 매우 높은 성능
  • 빠른 코드 작성
  • 적은 버그
  • 직관적
  • 쉽고, 짧고, 견고
  • 표준 기반: OpenAPI 및 JSON 스키마

3) 비동기처리

  • 비동기처리: 특정 로직의 실행이 끝날때까지 기다려주지 않고 나머지 코드를 먼저 실행하는 것
  • 이러한 비동기처리를 기본적으로 지원하기 때문에 뛰어는 퍼포먼스를 내고 있으며 많은 관심을 받고 있다.

3. API 역사

부분은 그냥 궁금해서 알아보았다. 관심없으면 안봐도 됨.

1) 첫 등장

1964년 api는 처음 하드웨어 독립성을 높이기 위해 사용, 예를 들어 서로 다른 하드웨어부품마다 개발자가 하나하나 프로그램을 새롭게 작성하는 것보다 같은 일을 하는 하드웨어를 추상화 시켜 함수를 한번 사용하여 서로다른 화면에 출력하는 일을 쉽게 사용해주기 위해 생겨난 개념

2) api라는 단어의 첫 사용

1984년 등장한 매킨토시가 그래픽 사용자 인터페이스 개념을 크게 보급시키는 데 성공시켜 windowOS나 macOS 등 운영체제에서는 각각의 운영체제에서 동작할 수 있는 애플리케이션을 만들기 위하여 제공되었던 으용프로그램들이 api라는 단어로 사용

3) Web API

1990년도 인터넷이 보편적으로 대중화, 이 때 다양한 기기에서 서버에에 있는 데이터를 읽고 쓰기 위해서는 서버에서 제공하는 Web API들을 이용해서 처리할 수 있었다. 이러한 네트워크에서 기기들간에 의사소통을 해나가는 규격사항이 우리가 알고 있는 HTTP(Hypertext Transfer Protocol)

4) SOAP 아키텍처 탄생배경

1996년 기존에는 사람이 읽는 문서만 주고 받았으나, 이제 서버-클라이언트가 데이터를 주고 받을 일이 많아지게 됩니다.
네트워크 망을 새롭게 만드는 것이 번거로와 기존 HTTP와 HTML을 이용해서 Object-Model을 만들면 어떨까하는 발상으로 2000년, Microsoft에서 XML-RPC 문법을 발표, 이후 SOAP로 개명

5) REST 탄생 배경

1998년 대학원생은 Microsoft Research에 본인이 만든 REST 아키텍처를 발표, 2000년 대학우너생은 RESTful API에 대해 박사 논문으로 발표
기존 HTTP Method, Status Code등을 적극적으로 이용, 자원(Resource)에 고유한 URI을 할당해 사용

'IT > API' 카테고리의 다른 글

REST API, 쉽게 이해해보자  (0) 2024.05.12