API 게이트웨이 정보
오늘날 웹 기반 서비스는 지도, 날씨 및 이미지 서비스부터 게임, 경매, 기타 많은 서비스 유형까지 매우 다양한 기능을 제공합니다. 서비스 제공업체는 서비스 구현, 배포, 관리 방법에 대해 많은 옵션을 선택할 수 있습니다. 예를 들어 한 서비스를 자바 또는 .NET으로 개발하고 다른 서비스에는 Node.js를 사용할 수 있습니다.
백엔드 구현 또한 서비스 제공업체가 다양하게 선택할 수 있습니다. 어떤 서비스 제공업체에서 기존 서비스가 특정 아키텍처를 사용해서 구현되었더라도 새 서비스는 완전히 다른 아키텍처를 사용해서 구현될 수 있습니다.
구현에 관계없이 웹 기반 서비스에는 모두 서비스를 앱 개발자에게 제공할 수 있는 방법이 필요합니다. 이러한 서비스는 HTTP 엔드포인트 집합으로 노출되는 경우가 많습니다. 서비스에 따라 엔드포인트가 XML 또는 JSON 형식의 데이터를 클라이언트 앱에 반환할 수도 있습니다.
Google Cloud Platform 서비스 정보
Google Cloud Platform(GCP)에서 서비스를 개발하는 경우에는 Cloud Functions, Cloud Run, App Engine 표준 환경과 같은 여러 서비스 구현 옵션 중에서 선택할 수 있습니다. GCP가 가진 유연성 덕분에 특정 서비스 요구사항에 꼭 맞는 백엔드 아키텍처를 선택할 수 있습니다.
앱 개발자는 백엔드 서비스의 이용자입니다. 앱 개발자는 서비스를 사용해서 브라우저에서 실행되는 앱을 통해 또는 서비스 요청을 수행할 수 있는 다른 앱 유형을 통해 휴대 기기 또는 태블릿을 위한 앱을 구현합니다.
웹을 통해 서비스를 공개적으로 노출하는 것은 까다로운 작업일 수 있습니다. 이를 성공시키기 위해서는 서비스 제공업체가 다음 요구를 충족시켜야 합니다.
- 서비스 액세스 인증
- 클라이언트와 서비스 사이의 데이터 전송 보안
- 악의적인 공격으로부터 서비스 보호
- 사용량 증감에 따른 서비스 확장
- 서비스 사용량 모니터링 및 추적 방법을 백엔드 운영팀에 제공
- 정확한 결제 정보 제공을 위한 사용량 추적
또한 서비스에 여러 다른 인터페이스 및 프로토콜이 사용될 경우에는 이러한 서비스 액세스도 앱 개발자에게 까다로운 작업이 될 수 있습니다. 개발자는 각 서비스 인터페이스를 학습 및 이해하고 여러 서비스의 변경사항을 모니터링하고 필요에 따라 앱을 업데이트하고 다시 배포해야 합니다.
API 게이트웨이
API 게이트웨이를 사용하면 서비스 구현에 관계없이 모든 서비스 간에 일관적인 잘 정의된 REST API를 통해 서비스에 대해 보안 액세스를 제공할 수 있습니다. 일관된 API를 사용하여 다음 이점을 활용할 수 있습니다.
- 앱 개발자가 서비스를 쉽게 사용할 수 있습니다.
- 공개 API에 영향을 미치지 않고 백엔드 서비스 구현을 변경할 수 있습니다.
- Google Cloud Platform(GCP)에 내장된 확장, 모니터링, 보안 기능을 활용할 수 있습니다.
다음 이미지는 API 게이트웨이를 통해 백엔드 서비스를 요청하는 앱 개발자를 보여줍니다.
앱 개발자는 API 게이트웨이를 사용해서 앱 구현을 위해 REST API를 소비합니다. 모든 API가 API 게이트웨이에 호스팅되기 때문에 앱 개발자들에게 모든 백엔드 서비스 간에 일관적인 인터페이스가 표시됩니다.
API 게이트웨이에 API를 배포하면 API를 변경할 필요 없이 백엔드 서비스를 업데이트하거나 한 아키텍처에서 다른 아키텍처로 서비스를 이동할 수도 있습니다. 서비스에 대해 API가 일관성 있게 유지되는 한 앱 개발자는 백엔드에서의 기본 변경사항으로 인해 배포된 앱을 수정할 필요가 없게 됩니다.
API 게이트웨이는 또한 API 만들기, 공유, 유지보수, 보안을 돕기 위해 호스팅, 로깅, 모니터링 및 기타 기능을 제공하는 분산형 API 관리 시스템입니다. API 게이트웨이는 기본적으로 GCP에 통합되어 있으며 트래픽 관리, 승인, 모니터링을 비롯하여 동시 API 호출 처리와 관련된 모든 태스크를 처리합니다.
API란 무엇인가요?
API는 한 애플리케이션이 다른 애플리케이션의 기능이나 데이터를 쉽게 사용할 수 있게 하는 인터페이스입니다. 안정적이고 간단하며 문서화가 잘 되어 있는 진입점을 정의하여, API를 사용하면 개발자가 다른 개발자가 빌드한 애플리케이션 로직에 쉽게 액세스하고 재사용할 수 있습니다.
예를 들어 다음 표에서는 특정 도서에 대한 정보를 반환할 수 있는 REST API 예시를 설명합니다.
속성 | 값 | 설명 |
---|---|---|
URL | https://www.mybooksapi.com/books/info | 국제 표준 도서 번호(ISBN)에 따라 특정 도서의 제목, 저자, 발행일을 반환합니다. |
HTTP 동사 | GET | API에 GET 요청을 수행합니다. |
쿼리 매개변수 | isbn
|
도서의 ISBN 번호, 즉 도서 ID를 전달합니다. |
응답 데이터 | { "title" : "book_title", "author" : "author_name", "published" : "publish_date" } |
도서 세부정보가 포함된 JSON 객체입니다. |
응답 코드 | 200 | 요청에 성공했습니다. |
이 정보를 사용해서 이 API에 대해 다음 cURL 요청을 수행하여 도서에 대한 정보를 가져올 수 있습니다.
curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217
데이터 형식 및 HTTP 응답 코드 설명을 포함하여 이 서비스가 잘 정의된 API이기 때문에 앱 개발자는 백엔드 서비스의 기본 구현에 대해 아무 것도 알 필요가 없습니다.
API를 사용하는 애플리케이션은 변경사항에 민감하기 때문에 API는 또한 API 제공자와 API 소비자 사이의 약속을 의미하기도 합니다. 이러한 계약에 따라 시간이 지나도 API가 예측 가능한 방식으로 변경될 수 있습니다. 예를 들어 title
또는 author
와 같은 쿼리 매개변수를 더 추가하거나 도서에 대한 다른 정보를 추가하기 위해 응답 JSON을 변경하도록 도서 API가 업데이트될 수 있습니다.
API 정의
API 게이트웨이에서 배포된 API는 OpenAPI 2.0 사양으로 정의됩니다. API 정의의 핵심 구성요소는 다음과 같습니다.
- 백엔드 서비스의 URL 또는 진입점
- API 요청에 전달되는 데이터의 데이터 형식
- API의 응답에서 서비스로 반환되는 데이터의 데이터 형식
- 서비스에 대한 액세스 제어를 위해 사용되는 인증 메커니즘
API를 정의한 후 gcloud 명령줄 인터페이스를 사용해서 이를 GCP의 API 구성에 업로드합니다.
API 게이트웨이에서 API 구성 배포
API를 만들기 위해 API 게이트웨이에서 API 구성을 배포합니다.
gcloud
명령어를 사용하여 API 구성을 배포합니다.
API 구성이 배포된 후 클라이언트가 API에 대해 REST 호출을 수행할 수 있습니다.
API 관리
배포 및 실행 후에는 사용량 측정항목 및 로그와 같은 API 활동을 모니터링할 수 있습니다. 클라이언트가 API에 요청을 수행하면 API 게이트웨이에 요청 및 응답에 대한 정보가 로깅됩니다. API 게이트웨이는 또한 지연 시간, 트래픽, 오류를 추적합니다.
시간이 지나면 새로운 기능 추가, 성능 향상, API 문제 해결 등을 위해 배포된 API를 업데이트해야 할 수 있습니다. 배포된 API를 업데이트하려면 단순히 API 정의에 대한 OpenAPI 사양을 업데이트한 후 API를 업로드하고 다시 배포하면 됩니다.
API 액세스 제어
API 게이트웨이를 사용하면 클라이언트가 API에 액세스하기 전 인증이 필요하도록 API를 구성할 수 있습니다. 현재까지 API 게이트웨이에서는 다음을 포함하여 Cloud Endpoints에서 사용되는 것과 동일한 인증 메커니즘 및 구문이 지원됩니다.
또한 Google Cloud Platform Console을 사용하여 다른 개발자와 API를 공유할 수 있습니다. 그러면 다른 개발자가 API를 사용 설정하고 이를 호출하기 위한 API 키를 생성할 수 있습니다.
사용자 ID 확인을 위한 인증 메커니즘 정의 외에도 API에서 인증된 사용자가 API로 수행할 수 있는 작업을 결정해야 합니다. 자세한 내용은 GCP 인증 가이드를 참조하세요.