생성형 AI 및 API 관리: 보안, 확장, 범용화 권장사항
Rakesh Talanki
Principal Architect, Google Cloud
여러 파트로 이루어진 이 시리즈는 생성형 AI 애플리케이션을 강력하게 만들고 실사용을 위한 준비에 중요한 측면들을 다룹니다. API 관리는 생성형 AI 생태계에서 LLM에 대한 액세스를 제어하고 보안을 보장하며 성능을 관리하는 데 중요한 역할을 합니다.
1부: Apigee가 Vertex AI 엔드포인트 보안에 중요한 이유
현대적인 플랫폼은 빠른 속도의 맞춤형 경험을 제공하는 데 효과적입니다. Google Cloud의 Vertex AI는 검색 및 추천과 같은 전자상거래 기능에 강력한 머신러닝 기능을 제공합니다. 하지만 까다로운 프로덕션 워크로드를 처리하고 원활하게 확장하며 고가용성을 보장하기 위해서는 강력한 API 관리 솔루션이 필요합니다. 불량 사용자의 모델 쿼리를 막는 것은 플랫폼 관리자의 큰 과제입니다. 이때 API 관리 플랫폼이 도움이 될 수 있습니다.
GCP 부하 분산기와 Cloud Armor는 Vertex AI 엔드포인트 네트워크 액세스 및 WAF 보안을 위한 강력한 기반을 제공하지만 이것만으로는 포괄적으로 방어하기에 부족할 수 있습니다.
부하 분산기와 Cloud Armor만으로는 Vertex AI 엔드포인트를 보호하기에 충분하지 않은 이유
GCP 부하 분산기와 Cloud Armor의 역할을 간략히 살펴보겠습니다.
- GCP 부하 분산기: 확장성과 가용성을 위해 여러 Vertex AI 인스턴스에 수신 트래픽을 분산합니다. 기본적인 네트워크 수준(레이어 3/4)의 보안을 제공합니다.
- Cloud Armor: DDoS, SQL 삽입, 교차 사이트 스크립팅(XSS)과 같은 레이어 7 공격으로부터 보호하는 웹 애플리케이션 방화벽(WAF)입니다. GCP 부하 분산기와 통합됩니다.
보안 취약점이 발생하는 이유
- API 관련 위협: 부하 분산기와 Cloud Armor는 API 취약점의 미묘한 차이를 이해하는 데 특화되어 있지 않습니다. 공격자가 일반적인 네트워크 수준에서 보호하지 못하는 API의 로직과 구조가 지닌 취약점(예: 손상된 객체 수준 인가, 대량 할당)을 공격할 수 있습니다.
- 데이터/모델 보안: Vertex AI 엔드포인트에서 민감한 정보나 모델이 노출될 수 있습니다. Cloud Armor는 다음에 대한 보호를 제공하지 않습니다.
- API 수준의 데이터 무단 반출
- 모델 추론 엔드포인트에 대한 승인되지 않은 액세스
- 모델 무결성(모델 포이즈닝)에 대한 공격: 잘못된 데이터 또는 악성 데이터를 학습 데이터 또는 학습 프로세스로 전송하여 모델을 조작할 수 있음 - 비즈니스 로직의 결함: 부하 분산기와 Cloud Armor는 애플리케이션의 비즈니스 로직을 이해하지 못합니다. 겉보기에는 적법한 방식이지만 실제로는 기본 비즈니스 프로세스를 악용하여 공격자가 API 호출을 조작할 수 있습니다.
Apigee: 보안 취약점을 보완하는 솔루션
Apigee는 핵심적인 레이어를 추가하여 GCP 부하 분산기와 Cloud Armor를 보완하는 API 관리 솔루션입니다.
1. API 중심 보안
- Vertex AI 전용 API 게이트웨이: Vertex AI 엔드포인트 앞에 위치하는 Apigee 같은 API 게이트웨이를 고려해 보세요. OAuth, API 키/토큰 검증, 스키마 검증, API 구조에 맞춤화된 위협 감지 등 특수한 보안 정책이 지원됩니다.
- 포지티브 보안 모델: 포지티브 보안 모델은 이상 감지에만 의존하지 않고 허용되는 항목을 명시적으로 정의합니다.
- 트래픽 제어: 비율 제한과 할당량을 통해 악용과 무절제한 사용량 급증으로부터 Vertex AI 리소스를 보호합니다.
API-Centric Security
2. Apigee를 Vertex AI 엔드포인트용 부하 분산기로 사용
- 리전 복원력을 위한 부하 분산: Apigee의 부하 분산 기능을 사용하여 여러 리전에 배포된 Vertex AI 엔드포인트 간에 지능적으로 트래픽을 분산합니다.
- 중앙 집중식 트래픽 관리: Apigee가 API 트래픽의 단일 진입점이 됩니다. 클라이언트 상호작용이 간소화되어 여러 리전 Vertex AI 엔드포인트를 관리하는 대신 단일 API 엔드포인트로 작업하면 됩니다.
- 지능적인 부하 분산: Apigee는 다양한 부하 분산 알고리즘(라운드 로빈, 가중치 등)을 제공하여 리전, 엔드포인트 상태, 부하와 같은 요소에 따라 요청을 여러 Vertex AI 엔드포인트에 분산합니다.
- 장애 조치 및 복원력: Apigee는 리전 Vertex AI 엔드포인트를 사용할 수 없는지 감지하고 트래픽을 자동으로 다른 리전의 정상 엔드포인트로 리디렉션하여 애플리케이션의 안정성을 개선할 수 있습니다.
- A/B 테스팅: Apigee는 애플리케이션 개발자가 기존 애플리케이션을 중단하지 않고도 배포된 여러 버전의 모델 간에 원활하게 전환할 수 있는 안정적인 인터페이스를 제공합니다. 또한 AI 실무자가 세분화된 출시를 수행하여 비즈니스 중단을 최소화할 수 있습니다.
작동 방식을 살펴보겠습니다.
코드 샘플: Vertex AI 부하 분산(대상 엔드포인트)
이 Apigee 대상 엔드포인트 정의에서는 라운드 로빈 알고리즘으로 서로 다른 리전(예: 'us-east1' 및 'us-west1')에 있는 Vertex AI 엔드포인트 간에 요청을 라우팅합니다. 사용자가 사용 가능한 Vertex AI 엔드포인트에서 항상 응답을 수신하도록 Apigee가 상태 점검과 장애 조치를 처리합니다.
Apigee의 상태 점검 및 장애 조치 프로세스
Apigee가 어떻게 상태 점검 및 장애 조치 메커니즘을 통합하며 이것이 코드에는 어떻게 반영되는지 살펴보겠습니다.
- 상태 프로브: Apigee는 주기적으로 백엔드 Vertex AI 엔드포인트에 프로브(예: HTTP 또는 TCP)를 전송합니다. 이 프로브는 간단한 엔드포인트 검사이거나 보다 정교한 테스트일 수 있습니다.
- 장애 감지: Apigee는 다음과 같은 경우 Vertex AI 엔드포인트를 비정상으로 표시합니다.
- 지정된 제한 시간 내에 프로브에 응답하지 못하는 경우
- 일관되게 오류 응답(예: HTTP 500 오류)을 반환하는 경우
- 트래픽 제외: Vertex AI 엔드포인트가 비정상으로 간주되면 Apigee에서 이 엔드포인트로의 트래픽 라우팅을 자동으로 중지합니다.
- 장애 조치: Apigee가 사용자의 부하 분산 알고리즘에 따라 남아 있는 정상 Vertex AI 엔드포인트로 트래픽을 리디렉션합니다. 이로써 지속적인 서비스 가용성이 보장됩니다.
- 복구: Apigee는 실패한 엔드포인트를 계속 모니터링하다가 다시 정상화되면 엔드포인트를 순환에 자동으로 복귀시킵니다.
대상 엔드포인트 구성 내에 HealthMonitor 섹션을 포함할 수 있습니다.
코드 샘플: 상태 모니터링
Apigee는 고급 상태 점검을 지원합니다.
- 커스텀 프로브: 대상 엔드포인트에 대한 모델 코드와 예상되는 응답 코드 내에서 상태 점검 요청을 정의합니다.
- SuccessThreshold: 엔드포인트가 정상으로 간주되려면 연속으로 성공해야 하는 프로브 수를 구성합니다.
- UnhealthyThreshold: 엔드포인트를 비정상으로 표시하도록 트리거하는 연속 실패 수를 구성합니다.
Apigee의 상태 점검은 부하 분산 메커니즘과 원활하게 연동됩니다. Apigee UI에서 실시간 상태를 확인하거나 상태 점검 데이터를 외부 모니터링 도구와 통합할 수 있습니다.
제한사항
Apigee의 상태 점검으로 Vertex AI 모델의 장애를 즉시 감지하지 못할 수도 있다는 점을 알아야 합니다. 보다 세분화된 상태 평가를 위해서는 Vertex AI 모델 자체에 대한 강력한 모니터링이 이루어져야 합니다.
3. Apigee 캐싱 및 Vertex AI 예측
느린 속도의 경험은 사용자 불만과 매출 감소로 이어질 수 있습니다. 이 경우 Apigee 캐싱과 Vertex AI를 기반으로 한 미리 가져오기와 예측 검색이 도움이 됩니다. 사용자 쿼리를 예측하고 결과를 캐싱하면 쿼리의 응답성을 대폭 향상시킬 수 있습니다.
미리 가져오기 및 예측 검색 워크플로
- 초기 사용자 입력: 사용자가 전자상거래 검색창에 검색어를 입력하기 시작하면 프런트엔드 JavaScript에서 백그라운드 요청을 적절하게 트리거하여 잠재적인 검색 결과를 가져옵니다.
- Apigee 캐시의 이점: Apigee는 먼저 고성능 캐시에서 바로 미리 가져온 결과의 제공을 시도하여 거의 즉각적으로 응답을 제공합니다.
- 캐시 채우기: Apigee는 Vertex AI가 예측한 결과를 지능적으로 저장하여 향후 요청을 최적화합니다.
- 원활한 프런트엔드 업데이트: 프런트엔드가 (캐시 또는 Vertex AI에서) 결과를 비동기적으로 수신하여 원활하게 사용자에게 추천하거나 미리보기를 표시합니다.
코드 샘플: Apigee의 캐싱 정책
위 코드 스니펫에는 다음과 같은 항목이 포함됩니다.
- CacheLookup(PreFlow): Apigee가 캐시에 부분 검색어(request.queryparam.q)와 연관된 결과가 있는지 확인합니다.
- CachePopulate(PostFlow): Apigee가 추후 조회를 위해 Vertex AI 예측을 캐시에 저장합니다.
Vertex AI를 사용한 Apigee 캐싱의 이점
- 빠른 추천: 사전 캐싱된 결과로 추천 검색어나 제품 미리보기를 거의 즉각적으로 제공합니다.
- 백엔드 부하 감소: 캐싱은 Vertex AI 엔드포인트의 부담을 줄여 반복적인 예측 요청을 효율적으로 처리합니다.
확장성: Apigee의 분산 캐시 아키텍처는 검색 트래픽의 급증을 원활하게 처리합니다.
4. 개발자 포털을 사용한 Vertex AI 엔드포인트 셀프서비스
Apigee 개발자 포털로 인해 Vertex AI 엔드포인트의 관리 및 사용이 획기적으로 달라졌습니다. 이 개발자 포털은 프로세스를 간소화하고 공동작업을 촉진하며 조직 내 혁신의 원동력이 됩니다.
셀프서비스 방식이 아닌 경우 문제점
- 병목 현상: 셀프서비스 방식이 아닌 경우 개발자가 중앙 팀이나 수동 프로세스를 통해 Vertex AI 엔드포인트에 액세스해야 합니다. 이는 느린 온보딩 속도, 지연, 불만을 야기할 수 있습니다.
- 거버넌스 과제: 표준화된 중앙 집중식 방법을 사용하지 않으면 강력한 Vertex AI 모델의 액세스를 제어하고 사용을 관리하기가 어려워집니다.
- 가시성 부족: 기존 Vertex AI 기능에 대해 개발자가 자세히 알고 있지 못한 경우 혁신과 강력한 머신러닝 모델의 잠재적 재사용이 어려울 수 있습니다.
Apigee 개발자 포털의 지원 방식
- Model Garden으로 사용되는 마켓플레이스: 포털이 잘 정리된 Vertex AI 기반 API 카탈로그의 역할을 합니다. 개발자가 프로젝트와 관련된 모델을 쉽게 발견할 수 있습니다.
- 문서 및 안내: 포털에서 명확한 문서, API 사양, 코드 예시는 물론 가능한 경우 테스트를 위한 대화형 샌드박스도 제공합니다. 덕분에 개발자의 이해 및 온보딩 속도가 빨라집니다.
- 간소화된 온보딩: 개발자가 포털을 통해 스스로 등록하고 API 액세스를 요청하며 필요한 사용자 인증 정보(API 키 또는 OAuth 토큰)를 자동으로 받을 수 있습니다.
- 사용량 모니터링 및 제어: 개발자가 포털에서 API 사용 패턴 및 할당량을 파악할 수 있습니다. Vertex AI 리소스를 공정하고 책임감 있게 사용하도록 관리자가 중앙에서 제어를 관리할 수 있습니다.
- 피드백 루프: 포털이 API 개발자(Vertex AI 모델을 API로 게시하는 개발자)와 API 소비자(애플리케이션을 빌드하는 개발자) 간의 소통을 용이하게 하여 공동작업 개선 주기를 촉진할 수 있습니다.
요약 - 성공의 조합
최고의 방어는 레이어를 여러 겹 쌓는 것입니다. 레이어를 이렇게 생각해 보세요.
- GCP 부하 분산기: 강력한 트래픽 책임자
- Cloud Armor: 웹 기반 공격에 맞서는 최전선의 보호자
- Apigee: API와 Vertex AI 모델 게이트웨이를 지키는 현명한 수호자
API 관리 레이어로 Apigee를 사용하고 머신러닝 인텔리전스를 처리하는 Vertex AI를 사용하면 규모와 성능은 물론 맞춤형 경험을 선사하는 플랫폼을 빌드하여 고객 만족도와 충성도를 높일 수 있습니다.
여정 시작하기
여러분이 보유한 환경에서 Apigee와 Vertex AI가 지닌 잠재력을 최대한 활용할 준비가 되셨나요? Google Cloud 문서를 살펴보고 회사의 비즈니스 니즈에 가장 적합한 Apigee 기능을 실험해 보세요.