API (Application Programming Interface) 게이트웨이는 구글 클라우드 플랫폼(GCP)에서 제공하는 서비스 중 하나로, 여러 가지 다양한 서비스들에 대한 '중앙 출입문' 역할을 합니다.

 

쉽게 예를 들어 설명해 보겠습니다. API 게이트웨이는 레스토랑의 주문 창구와 비슷합니다. 레스토랑은 한식, 중식, 양식 등의 메뉴가 있고, 각 메뉴를 담당하는 요리사가 있다고 가정해 보겠습니다. 손님들이 음식을 주문할 때 직접 요리사와 이야기하지 않고, 웨이터에게 원하는 종류의 음식을 말하면 웨이터는 이를 요리사에게 전달합니다. 이때 웨이터는 주문한 음식이 레스토랑에서 조리를 할 수있는 메뉴인지 아닌지 먼저 확인합니다. 만약 주문한 음식이 일식이면 주문을 받을 수 없습니다. 그런 후, 음식 주문을 각 음식을 담당하는 해당 요리사에게 전달합니다.

 

위의 예와 마찬가지로 API 게이트웨이는 사용자가 서비스에 대한 접근 권한이 있는지 확인하고, 간편하게 하나의 통로를 통해 어떤 요청을 해당 서비스 중의 하나로 전달하고 처리할 수 있게 합니다.

 

따라서 API 게이트웨이는 아래와 같은 장점을 가집니다.

복잡성 감소: 여러 서비스와의 연결을 단순화하고 통합합니다.

보안 강화: 접근 제어와 인증 기능을 제공하여 데이터와 서비스가 안전하게 보호됩니다.

확장성: API 게이트웨이에는 로드 밸런싱(Load Balancing) 기능을 추가할 수 있어서 요청이 많아져도 쉽게 확장할 수 있어 많은 사용자가 동시에 접속해도 안정적입니다.

 

간단히 사용예를 들어 보겠습니다.

만약 어떤 사용자가 http 요청을 통해서 google storage에 사진을 저장한다고 가정해 보겠습니다. 이때, 사용자는 API에 대한 접근권한을 얻기 위해서 요청의 내부에 API Key를 넣습니다. (마치 자물쇠가 달린 문을 열기 위한 열쇠와 같습니다.) 이 키는 오직 사용자만 알고 있어서, 다른 사용자는 사진을 저장할 수 없습니다. (위의 레스토랑 예에서 웨이터가 음식 종류의 확인에 해당)

 

이때, 일반적으로 API 키는 다음과 같이 HTTP 요청에 포함됩니다:

URL의 쿼리 파라미터로 포함하는 방식:

    GET https://your-api-endpoint.com/data?key= <YOUR_API_KEY>

여기서 <YOUR_API_KEY>는 API 게이트웨이를 생성할 때 사용자가 만든 Key입니다.

다른 방식으로는 HTTP 요청 헤더에 포함하는 방식:

    GET /data HTTP/1.1

    Host: your-api-endpoint.com

    x-api-key: <YOUR_API_KEY>

위 두 가지 방식 중 하나를 선택하여 API 키를 요청에 포함할 수 있습니다.

 

다시 사용자가 웹 애플리케이션을 통해 이미지를 업로드하는 경우로 돌아가 보겠습니다. 이 경우 API 게이트웨이는 사용자의 업로드 요청을 받아서 Cloud Run(지난번 글, 클라우드 컴퓨팅: Cloud Run을 보세요.)으로 전달하고, Cloud Run은 이미지를 Cloud Storage에 저장합니다. 이후 Cloud Run은 이미지가 저장되었다는 메시지를 Pub/Sub 서비스(Pub/Sub는 클라우드 내부에서 이벤트의 발생을 다른 서비스들에게 알려주는 서비스입니다.)에 전송합니다.

이렇게 Pub/Sub을 통해 필요할 경우 그것에 맞는 다른 서비스들을 추가적으로 호출하고 그 이미지를 처리/분석하는 작업(예를 들어서 사진의 크기, 포맷에 따라서 분류하고, 추가적으로 썸네일 작성 서비스 호출 혹은 이미지 인식 작업 호출 등)들을 수행할 수 있습니다. (앞의 레스토랑의 예에서 음식 종류별 요리사 선정에 해당)

 

또는 경로 지정을 통해서 서로 다른 서비스를 호출할 수도 있습니다. 예를 들어서 앞에서

    GET https://your-api-endpoint.com/data?key= <YOUR_API_KEY>

이렇게 요청했는데 대신 경로를 바꾸어서

    GET https://your-api-endpoint.com/image?key= <YOUR_API_KEY>

요청을 할 수도 있습니다. 이 경우, /image위치에서 다른 서비스를 하는 또 다른 cloud run 함수가 필요합니다.

 

이처럼 API 게이트웨이는 사용자의 요청을 다양한 서비스로 간단히 연결하고, 안정적이며 효율적인 방식으로 관리하는 핵심적인 역할을 합니다.

 

+ Recent posts