AI Briefing

하네스 엔지니어링으로 본 Deep Insight: 로컬 개발에서 프로덕션 운영까지의 설계 여정

·2026.04.22 23:35

핵심 내용

Deep Insight는 AgentCore Runtime과 Fargate 분리로 에이전트 실행과 코드 실행을 격리했다.

1 / 2

자세히 보기

Agentic AI를 프로덕션에 올리려면 추론 로직만이 아니라, 장시간 실행·도구 호출·세션 격리·보안·모니터링까지 포함한 하네스 엔지니어링이 필요하다. Deep Insight는 이를 통해 로컬 개발에서 안정적인 AWS 프로덕션 운영으로 넘어가는 설계 결정을 정리했다.

핵심 배경은 에이전트가 기존 소프트웨어보다 훨씬 비결정론적이고, 세션이 길며, 여러 사용자를 동시에 격리해야 한다는 점이다. 그래서 단순한 프롬프트 최적화만으로는 부족하고, 에이전트가 실행되는 환경 자체를 설계해야 한다는 문제가 전면에 떠올랐다.

Deep Insight의 첫 선택은 Amazon Bedrock AgentCore Runtime이었다. 이 실행 환경은 사용자 세션마다 microVM을 분리하고, 세션당 최대 8시간까지 장기 실행을 지원하며, I/O 대기 중심 워크로드에 맞는 Active CPU 기반 과금과 자동 스케일링을 제공한다. 여기에 VPC 모드와 AWS PrivateLink를 결합해 네트워크 경로까지 제한할 수 있어 민감 데이터를 다루는 분석 서비스에 적합했다.

가장 중요한 설계는 코드 생성과 코드 실행의 완전한 분리였다. 초기 self-hosted 방식에서는 subprocess.run()으로 바로 Python 코드를 실행했지만, 여러 요청이 동시에 들어오자 에이전트 추론과 코드 실행이 같은 런타임 자원을 다투며 병목이 발생했다. 그 결과, 코드는 생성만 AgentCore Runtime에서 맡고 실행은 별도 컴퓨트 계층으로 넘기는 구조가 필요해졌다.

실행 계층으로는 AWS Fargate가 선택됐다. 이유는 서버 관리 부담 없이 시간 제한 없이 실행할 수 있고, Dockerfile로 시스템 패키지와 Python 의존성을 build-time에 고정해 배포할 수 있기 때문이다. 특히 한국어 차트 라벨을 위한 fonts-nanum, 문서 변환 도구, matplotlib 폰트 캐시까지 이미지에 미리 넣어 두어, 매 세션 초기화 부담을 줄였다.

코드 실행은 다시 두 단계로 나뉜다.

  • 먼저 LLM이 만든 코드를 Base64로 인코딩해 HTTP와 shell escape 문제를 피하고, 컨테이너 내부에서 파일만 저장한다.
  • 그다음 저장된 파일을 subprocess로 실행하고, 필요하면 timeout으로 장시간 실행을 제어한다.

이 구조는 파일 쓰기 과정의 인코딩 문제와 실행 단계의 무한루프·오류를 서로 다른 경계에서 흡수한다. 에이전트는 여전히 하나의 write_and_execute_tool()을 호출하지만, 내부 하네스는 불확실한 LLM 코드를 안전하게 처리하도록 분리되어 있다.

AgentCore Runtime과 Fargate 사이에는 ALB가 들어가며, 여러 Fargate Task에 요청을 분산하고 Health Check로 준비 완료된 컨테이너만 받도록 한다. 또한 Sticky session을 사용해 같은 분석 세션의 후속 요청이 동일한 Task로 가도록 하여, 중간 산출물과 상태를 이어받는 흐름을 유지한다. 세션이 끝난 뒤에는 결과물들을 S3로 모아 저장하는 방향도 함께 제시된다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.