안녕하세요.
오늘은 Azure API Management 서비스에 대해 알아보겠습니다.
# API Management 란?
Azure API Management(APIM)는 기업 환경에서 API 게이트웨이 역할을 수행하는 서비스로,
외부 요청을 안전하게 받아 내부 서비스로 전달하는 프록시 입니다.
저는 처음에 Application Gateway와 차이가 헷갈렸는데요.
간단히 말하면 APIM은 “API 노출·인증·변환·정책 적용”에 특화된 서비스이고
Application Gateway는 Path 기반 라우팅 (/api, /static 등) Hostname 기반 라우팅“웹 서비스의 트래픽에 특화된 서비스입니다.

# 배포하기
API Management 서비스로 들어갑니다.

아래와 같이 기본적인 설정만 기입한 후 생성합니다.

각 계층 별로 VNET 통합 등의 차이가 있고 저희는 내부 VM으로 연결을 해야 해서 표준 v2로 생성하겠습니다.
# 설정

저희는 백엔드 VM이 웹 서버이므로 HTTP로 API를 하나 생성하겠습니다.

위와 같이 생성하고 이름과 백엔드를 설정합니다.
Web service URL : 연결할 URL
API URL suffix : Base URL 뒤에 붙을 고유한 엔드포인트
(즉, 최종 URL은 http://khkim-apim4.azure-api.net/web 이게 됩니다.)

백엔드 VM이 현재 HTTP이므로 HTTP로 설정합니다.
Header name과 Query parameter 는 api-key로 설정합니다.
Subscription required를 체크할 경우 호출 시 subscription key를 요구하게 됩니다.

GET 메서드를 추가하여 HTML 파일을 반환하는 설정을 추가합니다.

API 설정을 끝냈으면 네트워크 설정을 해야 합니다.
저희는 APIM을 통해서 내부 VM에 연결할 것이기 때문에 아웃바운드 네트워크 설정을 해야 합니다.
즉 내부적으로 VM과 프라이빗 통신을 할 수 있는 네트워크가 필요합니다.
먼저 VNET에서 위와 같이 NSG가 설정되어 있고 "Microsoft.Web/serverFarms" 에 위임된 서브넷을 생성합니다.

이제 다시 APIM으로 돌아와 네트워크를 클릭 후 아웃바운드 비활성화를 클릭합니다.

위와 같이 아까 설정한 서브넷을 지정합니다.

이제 저희는 구독 key가 필요한데요.
키 표시를 선택하여 키를 확인 후 저장해 둡니다.

이제 다시 API로 돌아와 Base URL을 확인합니다.
# 테스트
이제 외부에서 접근해 보겠습니다.
http://<base-domain>/<URL suffix>?api-key=<subscription-key>

성공적으로 호출되는 것을 확인 가능합니다.