블로그

API 아키텍처 마스터링: API 기본

바이런 맥노트 썸네일
바이런 맥노트
2022년 12월 5일 게시


애플리케이션 프로그래밍 인터페이스 또는 API가 유행입니다.

환호

API는 새로운 것이 아니지만 COVID-19로 인한 디지털 혁신의 가속화, 향상된 소프트웨어 통합, 클라우드를 위한 레거시 앱의 재플랫폼화 노력과 같은 최근의 현상으로 인해 API가 지속적으로 확산되고 있으며, 이는 관리, 보안, 심지어 조직이 현대 디지털 경제에서 성공하기 위해 내리는 아키텍처 선택에도 영향을 미치고 있습니다.

API는 본질적으로 기계의 부상을 나타낼 수 있습니다. 다만 다행히도 인간은 (적어도 지금은) 아직도 그 건설, 관리, 보안에 대한 통제권을 갖고 있습니다.

기계 인간

기본적으로 "API 방식"(말하자면)으로 말하면 소비자는 일반적으로 다양한 표준, 스키마, 사양으로 구성된 통합 인터페이스를 통해 생산자 에게 쿼리나 요청을 보냅니다.

예를 들어, 국가 기상청( 생산자 )은 일일 날씨 데이터를 제공합니다. 휴대폰의 날씨 앱( 소비자 )은 WeatherKit REST API를 통해 이 시스템을 호출하거나, 보다 구체적으로는 쿼리를 실행한 후, 날씨 앱 사용자 인터페이스를 통해 데이터를 렌더링합니다. 이는 수백만 명의 사용자가 사용하는 인기 앱의 간단한 예이지만, 기계 간 통신이 현대 디지털 경험의 트래픽에서 가장 큰 비중을 차지하며 API를 기반으로 한다는 점이 주목할 만합니다.

사자

API는 비즈니스 가치로 전환되는 여러 가지 기술적 이점을 제공합니다.

기술 혜택 사업적 가치
웹 앱의 기본 구현을 추상화합니다. 조직은 모바일 앱과 마이크로서비스 기반 아키텍처를 신속하게 배포할 수 있습니다.
개발자가 툴링을 통해 API 소비자를 구현할 수 있도록 유형을 지정하세요. 리더는 제품 출시 시간을 단축하기 위해 개발 프로세스를 최적화할 수 있습니다.
일관되고 예측 가능한 정보 교환을 모델링하기 위해 의미론/동작을 정의합니다. 파트너는 타사 통합을 개발하고 이를 통해 수익을 창출할 수 있습니다.

API를 구현할 때는 고려해야 할 사항이 많습니다. 특히, 설계, 구축 및 유지 관리 중에 종속성을 분리하고 상호 운용성을 보장하는 데 도움이 되는 모델링, 버전 관리 및 계약 테스트와 관련이 있습니다.

고려 사항 설명 혜택
모델링 정보 교환을 표현하고 구조화하는 의미론이나 행동. 분산 아키텍처의 간소화된 관리.
버전 관리 API 수명 주기 전반에 걸친 출시 및 유지 관리를 위한 거버넌스 전략. 최대한의 유용성과 이전 버전과의 호환성.
계약 테스트 소비자와 생산자 간의 정의된 상호작용과 예상되는 반응. 타사 비즈니스 통합을 통한 결정론적 상호작용.

API를 구축, 관리 및 보호하는 데에는 옳고 그른 방법이 없습니다. 사실, API가 확산되기 시작했을 때, API를 대규모로 소비하기 위해 API의 모양과 구조를 표준화할 필요가 있었습니다. OpenAPI 이니셔티브와 그로 인한 OpenAPI 사양(OAS)이 등장했습니다. Swagger는 OpenAPI 사양의 원래 참조 구현이었으며, 대부분의 툴링은 이제 여전히 Swagger(HA!)를 유지하는 OpenAPI를 사용하도록 수렴되었습니다.

실제로 API는 다양한 표준, 스키마, 사양을 사용하여 구성할 수 있습니다. 예를 들어 RESTful 프레젠테이션, gRPC 서비스, GraphQL 스키마에 대한 연결 등이 있습니다.

구현 개요 이익 언제 사용할 것인가


REpresentation State Transfer(REST)는 통합 인터페이스를 설명하는 가벼운 아키텍처 모델을 제공하며, 가장 일반적으로 기본 전송 프로토콜로 HTTP를 사용하여 적용됩니다.

REST는 API 기반 아키텍처를 구현한 가장 널리 배포된 방식입니다.

Postman 2022 API 보고서 현황

  • REST는 매우 기본적인 규칙을 가지고 있으며, 진입 장벽이 낮고 도메인 모델이 강력하여 구현이 비교적 간단합니다.
  • 계층화된 시스템으로서 REST 인터페이스 기반 시스템의 복잡성은 추상화됩니다. 예를 들어, 소비자는 웹 서비스 뒤에 있는 데이터베이스 시스템과 상호작용하고 있다는 사실을 인식하지 못합니다.
  • REST는 콘텐츠 유형(JSON 및 YAML 포함)에 대한 유연한 지원을 제공합니다.
  • OpenAPI 사양이 소비자와 API의 형태와 구조를 공유하기에 충분한 경우.
  • 기본적으로 제작자에서 소비자로의 요청은 상태가 없으므로, 캐싱을 HTTP 헤더에 따라 동적으로 결정해야 합니다.
  • 제작자가 제공한 단일 API에 대한 리소스 모델을 확장하거나 API 게이트웨이를 사용하여 동일한 기본 URL에 여러 API를 제공하는 경우.


GraphQL은 API를 위한 오픈소스 데이터 쿼리 및 조작 언어이며, 기존 데이터로 이러한 쿼리를 충족하기 위한 런타임입니다(Facebook에서 개발하여 현재는 Linux Foundation의 일부).
  • 여러 소스에서 쿼리를 실행할 수 있는 쿼리 언어를 제공합니다. 
  • 클라이언트가 여러 API에 걸쳐 있는 필드를 포함하여 필요한 필드만 정확하게 요청할 수 있으므로 처음 로드하는 데 걸리는 시간이 줄어듭니다.
  • 스키마 언어는 개별 API의 유형과 API 결합 방식을 지정하여 모든 API에 걸쳐 단일 버전을 제공하는 기능을 제공하여 버전 관리를 간소화합니다.
  • 기존의 레거시 시스템에 추가되어 복잡성을 추상화하는 보완 기술입니다. 
  • API 소비자가 광범위한 상호 연결된 서비스에 대한 균일한 액세스, 필터링, 쿼리를 요구하는 경우.
  • 작은 화면과 네트워크 가용성에 제약을 받는 모바일 기기의 경우.


gRPC는 Linux Foundation의 관리 하에 있는 현대적이고 오픈 소스이며 고성능 원격 프로시저 호출(RPC) 프레임워크입니다.
  • HTTP/2, 가벼운 프로토콜 버퍼, 직렬화된 페이로드, 상태 저장 구현을 사용하여 높은 성능과 안정성을 제공합니다.
  • 부하 분산, 추적, 상태 검사 및 인증을 위한 플러그형 지원.
  • 모든 언어에 대한 풍부한 툴링 지원을 통해 높은 인터페이스 기능과 메시지 상호 운용성을 제공합니다. 
  • 분산 컴퓨팅의 마지막 단계로, 장치, 모바일 앱, 브라우저를 백엔드 마이크로서비스에 연결하고 모바일과 데스크톱/IoT 간 상호 작용을 지원하는 크로스 플랫폼 앱을 제공합니다.
  • 컨테이너 간 교통("동서")의 경우.
  • 스트리밍이 필요한 외부 인터페이스("북-남") 및 채팅, 금융, 뉴스와 같은 스트리밍 앱의 경우 

API 기본에 대한 입문서를 바탕으로 후속 게시물에서 클라우드를 위한 레거시 앱의 리플랫폼을 통해 모든 것을 통합하기 전에 API 아키텍처를 구축, 관리 및 보호하는 방법을 살펴보겠습니다.

앱 보호

앞서나가고 싶나요? 오늘 eBook을 다운로드하세요:

API 아키텍처 마스터링 | O'Reilly 전자책