Amazon Bedrock AgentCore Browser를 통한 동적 콘텐츠 수집

디자인 및 마케팅 팀은 경쟁사 제품과 콘텐츠 트렌드를 추적하기 위해 수십 개의 웹사이트를 수동으로 확인하는 번거로움을 겪는다. 기존의 룰 기반 스크래퍼는 페이지 구조에 강하게 결합되어 있어, 사이트 재설계나 JavaScript 렌더링 프론트엔드로의 마이그레이션이 발생하면 수집 파이프라인이 즉시 중단되는 한계가 있다. Amazon Bedrock AgentCore Browser는 이러한 문제를 해결하기 위해 JavaScript-heavy 페이지를 안정적으로 렌더링하는 완전 관리형 브라우저 서비스를 제공한다.

AWS Lambda 함수는 Amazon Bedrock AgentCore를 통해 원격 브라우저 세션을 열고 CDP(Chrome DevTools Protocol)를 통해 연결한다. 제어 라이브러리인 Playwright는 WebSocket 연결을 통해 AgentCore가 호스팅하는 브라우저를 조작하며, 이는 Lambda 내부에서 헤드리스 브라우저를 직접 실행할 때 발생하는 메모리 부족 문제를 원천적으로 제거한다. 원격 브라우저는 동적 요소가 완전히 로드될 때까지 대기한 후 전체 페이지를 렌더링하고, 스크린샷 생성 및 이미지 다운로드를 수행하여 데이터의 완전성을 확보한다.

수집된 결과물은 Amazon S3에 구조화된 형식으로 저장된다. 시스템은 URL, 제목, 타임스탬프, 에셋 참조 정보를 포함하는 `metadata.json` 파일과 다운로드한 이미지 파일들을 세트로 구성하여 저장한다. 이러한 정형화된 저장 방식은 후속 처리 파이프라인이 일관된 경로로 데이터에 접근하게 하며, 대규모 수집 환경에서도 효율적인 파일 관리를 가능하게 한다.

EventBridge와 SQS 기반의 이벤트 구동 파이프라인

Amazon EventBridge는 15분 간격으로 AWS Lambda 함수를 트리거하여 설정된 RSS 피드에서 새로운 기사를 확인한다. Lambda 함수는 수집된 기사의 URL을 해시 ID로 변환하여 Amazon S3에 저장된 기존 ID와 대조함으로써 중복 수집을 방지한다. 이 단계에서 중복을 먼저 제거함으로써 저장 공간 낭비를 막고 후속 AI 처리 단계에서 발생하는 불필요한 토큰 비용을 차단한다.

Amazon S3에 `metadata.json` 파일이 업로드되면 S3 이벤트가 즉시 Amazon SQS 큐로 메시지를 발행한다. SQS는 콘텐츠 수집 단계와 AI 분석 처리 단계를 물리적으로 분리하는 완충 지대 역할을 수행하여, 각 구성 요소가 서로의 처리 속도에 영향을 받지 않고 독립적으로 확장하게 한다. 수십 개의 RSS 피드를 동시에 모니터링하는 상황에서도 수집 함수는 병렬로 작동하며, 실제 분석 작업은 큐에 적재된 순서에 따라 안정적으로 진행된다.

시스템은 처리 중 발생하는 예외 상황에 대응하기 위해 Dead-letter queue를 구성한다. 지정된 횟수만큼 재시도에 실패한 메시지는 전용 큐로 자동 이동하며, 관리자는 이를 통해 실패 원인을 분석하고 수동으로 재처리할 수 있다. 모든 처리 컴포넌트는 Amazon VPC 내에 배치되어 외부 접근을 차단하고 내부 통신 경로를 최적화함으로써 인프라 보안을 강화한다.

Readability 기반 전처리와 Bedrock AI 인사이트 추출

분석 Lambda 함수는 Amazon SQS에서 메시지를 수신한 후 Amazon S3에서 HTML을 가져와 토큰 소비 최적화를 위한 전처리를 수행한다. 시스템은 파일 크기 1MB를 기준으로 처리 경로를 분리한다. 1MB를 초과하는 대용량 HTML 파일은 `html-to-text` 라이브러리를 통해 단순 텍스트로 변환하여 모델의 토큰 한계 초과를 방지한다. 1MB 미만의 파일은 Mozilla의 `Readability` 라이브러리를 사용하여 광고나 메뉴 등 잡음을 제거하고 본문 내용과 핵심 이미지만을 정밀하게 추출한다.

정제된 텍스트는 Amazon Bedrock으로 전달되어 실제 인사이트 추출 단계로 진입한다. Bedrock은 입력된 콘텐츠를 분석해 핵심 내용을 요약하고, 반복적으로 등장하는 테마와 엔티티(인물, 조직, 장소 등)를 식별하며, 실행 가능한 인사이트를 도출한다. 전처리를 통해 HTML 태그를 미리 제거했기에 AI 모델은 실제 의미가 담긴 텍스트에만 집중하여 요약 정확도를 높이고 토큰 비용을 절감한다.

제3자 웹 콘텐츠를 모델에 입력할 때 발생할 수 있는 보안 리스크를 관리하기 위해 Amazon Bedrock Guardrails를 도입한다. 가드레일은 추출 프롬프트를 수정하지 않고도 부적절한 콘텐츠를 필터링하거나 특정 정책을 강제할 수 있는 보안 계층을 제공한다. 이를 통해 운영자는 모델의 지시문을 매번 수정하는 부담 없이 입력 데이터에 대한 통제권을 유지하며 안전한 AI 출력을 보장한다.

OpenSearch Serverless의 하이브리드 시맨틱 검색 구현

Amazon OpenSearch Serverless는 원본 콘텐츠, AI가 추출한 메타데이터, 그리고 Bedrock이 생성한 벡터 임베딩을 하나의 인덱스에 동시에 저장한다. 인덱스는 정확한 단어 일치를 찾는 키워드 검색을 위한 역색인 구조와 의미적 유사성을 찾는 벡터 검색을 위한 벡터 인덱스를 모두 포함한다. 이러한 구조는 사용자가 단순 키워드와 복잡한 의미 쿼리를 동시에 사용할 수 있는 하이브리드 검색 환경을 구현한다.

시맨틱 검색은 Amazon Bedrock을 통해 생성된 벡터 임베딩의 좌표 거리를 계산하여 작동한다. 사용자가 "emerging design trends"와 같은 쿼리를 입력하면, 시스템은 해당 문구의 의미적 좌표와 가장 가까운 벡터들을 탐색하여 결과를 반환한다. 이는 원본 문서에 해당 단어가 정확히 포함되지 않았더라도 맥락상 유사한 콘텐츠를 찾아냄으로써, 검색어와 실제 문서의 표현 차이로 인해 발생하는 검색 누락 문제를 해결한다.

하이브리드 검색 구성은 수집된 수십 개의 웹사이트에서 추출한 방대한 인사이트를 효율적으로 관리하게 한다. AI가 분석한 메타데이터와 벡터값이 결합되어 데이터의 검색 가능성을 극대화하며, 개발자는 인덱스 설정을 통해 키워드 일치도와 의미적 유사성 사이의 가중치를 조절할 수 있다. 최종적으로 사용자는 복잡한 쿼리 없이도 자신의 의도에 부합하는 최적의 인사이트를 빠르게 찾아낸다.

MCP 서버를 통한 인터페이스 확장 및 시스템 통합

최종 사용자는 Amazon Cognito를 통해 인증을 거친 후 Amazon ECS with AWS Fargate에서 호스팅되는 React 기반 프론트엔드에 접속한다. 프론트엔드는 수집된 인사이트를 팀 단위로 검색하고 탐색할 수 있는 인터페이스를 제공하며, Fargate는 트래픽 변화에 따라 컨테이너 자원을 유연하게 할당해 서비스 안정성을 유지한다. 모든 API 호출과 시스템 이벤트는 Amazon CloudWatch를 통해 실시간으로 기록되어 인프라 가시성을 확보한다.

프로그램 방식의 데이터 활용을 위해 Amazon ECS with Fargate 환경에 MCP(Model Context Protocol) 서버를 구축하고 Amazon CloudFront를 통해 API 접근 경로를 외부에 노출한다. MCP는 AI 어시스턴트가 통일된 인터페이스를 통해 외부 데이터 소스에 연결하고 도구를 호출하는 방식을 정의한 오픈 표준이다. 이 표준을 적용하면 조직 내의 서로 다른 AI 에이전트들이 별도의 개별 API 개발 없이도 인사이트 데이터베이스에 직접 접근해 데이터를 쿼리할 수 있다.

전체 시스템의 보안은 AWS IAM의 최소 권한 원칙을 통해 관리되며, 각 서비스는 수행해야 할 최소한의 권한만을 부여받는다. 본 솔루션의 전체 구현 코드는 GitHub 저장소에 공개되어 있어 인프라 구성과 MCP 서버 설정을 그대로 복제해 사용할 수 있다. 동적 웹 콘텐츠 수집부터 벡터 검색까지 이어지는 이벤트 기반 AI 파이프라인을 구축할 때는 MCP와 같은 표준 프로토콜을 도입해 데이터 저장소와 AI 에이전트 간의 결합도를 낮추고 인터페이스를 단일화하는 것이 시스템 확장성의 핵심 기준이 된다.