API란?

애플리케이션 프로그래밍 인터페이스(API)는 한 소프트웨어가 다른 소프트웨어의 기능을 사용할 수 있는 방법입니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 'API'의 정의
  • API 호출, API 엔드포인트, API 스키마, API 통합에 대한 설명
  • 웹 API, SOAP API, REST API에 대한 설명
  • API 보안 보호에 대한 이해

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

애플리케이션 프로그래밍 인터페이스(API)란?

애플리케이션 프로그래밍 인터페이스(API)는 소프트웨어 프로그램이 다른 소프트웨어 프로그램으로 데이터를 전송할 수 있도록 하는 규칙 집합입니다.

API를 사용하면 개발자는 중복 작업을 피할 수 있습니다. 개발자는 이미 존재하는 애플리케이션 기능을 빌드하고 다시 빌드하는 대신 API가 요구하는 대로 요청 형식을 지정하여 기존 기능을 새 애플리케이션에 통합할 수 있습니다.

API는 "인터페이스"로, 하나의 사물이 다른 사물과 상호 작용하는 방법을 의미합니다. 실제 예를 들어, ATM에는 화면과 여러 개의 버튼으로 구성된 인터페이스가 있어 고객이 은행과 상호 작용하고 현금 인출과 같은 서비스를 요청할 수 있습니다. 마찬가지로 API는 한 소프트웨어가 필요한 서비스를 얻기 위해 다른 프로그램과 상호 작용하는 방법입니다.

Jennifer가 출근길 통근자들이 출근 전에 고속도로 교통 상황을 확인할 수 있는 웹 사이트를 구축한다고 상상해 보세요. Jennifer는 웹 사이트 이용자에게 이 정보를 제공하기 위해 복잡한 고속도로 추적 시스템을 설정하는 데 많은 시간과 비용을 투자할 수 있습니다. 하지만 이러한 기능은 외부에서 이러한 시스템을 만들었으므로 이미 존재합니다. 이러한 방식으로 시스템을 다시 고안하는 대신 Jennifer의 웹 사이트는 외부 고속도로 추적 서비스에서 제공하는 API를 사용합니다. 이제 Jennifer는 웹 사이트의 다른 측면을 구축하는 데 집중할 수 있습니다.

API 호출이란?

API 호출은 API 요청이라고도 하며, API 사용을 트리거하는 API에 보내는 메시지입니다.

예시를 다시 참조하여 Jennifer는 웹 사이트가 로드될 때 고속도로 추적 서비스에 대한 API 호출을 자동으로 생성하는 방식으로 웹 사이트를 구성합니다.응답이 해당 서비스에서 웹 사이트로 돌아와 최신 고속도로 교통 정보를 표시할 수 있도록 합니다.

API 호출이 작동하려면 API의 요구 사항에 따라 형식을 지정해야 합니다. API의 요구 사항을 "스키마"라고 합니다. 스키마에서는 각 요청에 제공되는 응답 유형도 설명됩니다.

통근자가 Jennifer의 웹 사이트를 이용하여 192번 고속도로의 교통 상황을 확인한다고 가정해 보겠습니다. 웹 사이트에서는 이 정보를 제공하기 위해 API 호출을 전송합니다("고속도로 192"라는 메시지). 고속도로 추적 서비스의 API 서버에서는 이 메시지를 수신하고 192번 고속도로의 이동 시간을 회신합니다. API의 스키마를 다음과 같은 방식이라고 상상해 보세요.

API 요청 API 응답
"192번 고속도로" 192번 고속도로의 이동 시간
"217번 고속도로" 217번 고속도로의 이동 시간
"225번 고속도로" 225번 고속도로의 이동 시간

(이는 매우 단순화된 예시이며 실제 API 요청, 응답, 스키마는 더 복잡합니다.)

이제 Jennifer의 웹 사이트에서 "ASDFGHJ 고속도로"에 대한 API 요청을 보낸다고 가정해 보겠습니다. 이는 실제 고속도로 이름만 허용하는 API의 스키마를 따르지 않으므로 유효한 요청이 아닙니다. 서버는 이러한 요청에 대해 사용 가능한 응답을 제공할 수 없습니다.

API 엔드포인트는 무엇인가요?

엔드포인트는 커뮤니케이션 채널의 끝을 의미합니다. API 엔드포인트는 API 응답이 시작되는 곳입니다.

이 예에서 API 연결의 클라이언트는 Jennifer의 웹 사이트이고 엔드포인트는 API를 호스팅하는 서버입니다.Jennifer의 API 호출은 API 서버가 담당하는 특정 URL로 이동해야만(URL은 www.cloudflare.com/learning과 같은 웹 주소입니다)응답을 받을 수 있습니다.

API 통합이란?

API 통합은 API를 사용하여 두 개 이상의 애플리케이션을 결합하는 것입니다. 영업팀과 마케팅팀을 한 사무실에 통합하면 두 팀이 함께 일하고 서로의 노력을 통해 이점을 누릴 수 있는 것처럼, API 통합도 한 애플리케이션이 다른 애플리케이션의 기능을 활용할 수 있게 해줍니다. API 통합은 일반적으로 두 애플리케이션 또는 데이터베이스 간에 데이터를 동기화하는 데에도 사용됩니다.

웹 API란?

운영 체제부터 소프트웨어 라이브러리까지 컴퓨터 코드와 관련된 모든 것에는 API가 있을 수 있습니다. 웹 API는 특히 인터넷을 통해 액세스하는 웹 애플리케이션에서 사용하기 위한 것입니다.

웹 API는 요즘 인터넷에서 매우 중요한 역할을 합니다. 거의 모든 사용자 대면 애플리케이션은 API에 의존하여 작동합니다(Jennifer의 웹 사이트뿐만 아니라!). 소프트웨어 개발 철학은 모두 API 사용에 의존합니다. 이러한 철학 중 하나가 JAMstack이며, 여기서 JAM은 JavaScript, API, markup의 약자입니다. 또 다른 예는 마이크로서비스 아키텍처로, 애플리케이션을 구성하는 다양한 기능을 호출하기 위해 API를 사용합니다. 이러한 접근 방식 없이 구축된 애플리케이션도 일반적으로 API에 의존합니다.

SOAP API와 REST API란?

SOAP API와 REST API는 서로 다른 범주의 API를 설명합니다.

단순 객체 접근 프로토콜(SOAP)은 프로토콜의 한 유형입니다.SOAP API는 SOAP 프로토콜만 사용하는 API입니다.

웹 표현 상태 변경(REST)은 웹 서비스를 위한 아키텍처 스타일입니다. REST API는 REST 아키텍처를 사용하여 구축된 모든 API입니다. SOAP API와 달리 REST API는 모든 프로토콜에서 작동합니다. 오늘날 대부분의 API는 REST API입니다.

API 때문에 보안 위험이 초래될까요?

애플리케이션을 사용하도록 허용하면 해당 사용자가 애플리케이션을 남용할 위험이 있는 것처럼, API를 사용하면 API 클라이언트가 서비스를 남용할 위험이 있습니다. 또한 웹 API 호출은 인터넷을 통해 이동하므로 네트워크를 통한 다른 데이터 전송과 마찬가지로 가로채거나 스푸핑하거나 수정할 수 있습니다.

API 보안은 공격과 남용으로부터 API를 보호하는 관행입니다. 최근 인터넷에서 API의 중요성을 고려할 때 API 보안은 웹 앱 보안의 핵심 구성 요소입니다. 중요한 API 보안 조치에는 다음이 포함됩니다.

  • 레이트 리미팅: 너무 많은 API 요청을 하는 클라이언트는 다른 클라이언트의 API를 느리게 하거나 충돌을 일으킬 수 있습니다.레이트 리미팅은 특정 시간 내에 특정 API 엔드포인트에서 발생할 수 있는 API 요청 수에 제한을 두는 기능입니다.
  • DDoS 보호: 레이트 리미팅 제한과 유사하게, 분산 서비스 거부(DDoS) 보호는 한꺼번에 많은 양의 요청을 전송하여 API를 고갈시키거나 압도하는 것을 목표로 하는 DDoS 공격을 차단합니다.
  • 인증: API 요청이 공격자가 아닌 합법적인 출처에서 오는지 확인하려면 API 엔드포인트와 클라이언트를 인증하는 것이 중요합니다.상호 TLS(mTLS)는 가장 효과적인 API 인증 형태 중 하나입니다.
  • 스키마 유효성 검사: API 요청이 API의 스키마와 일치하지 않는 경우, API는 기밀 데이터를 공개하는 등 예기치 않은 방식으로 반응할 수 있습니다. 스키마 유효성 검사를 통해 API는 이러한 요청을 삭제할 수 있습니다.

Cloudflare API Gateway에는 API 위협으로부터 보호하기 위한 이러한 보안 기능과 기타 보안 기능이 포함되어 있습니다. API 보안에 대해 자세히 알아보려면 API 보안이란?을 참조하세요.