Hacklink panel

Hacklink Panel

Hacklink panel

Hacklink

Hacklink panel

Backlink paketleri

Hacklink Panel

Hacklink

Hacklink

Hacklink

Hacklink panel

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink panel

Eros Maç Tv

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink satın al

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Illuminati

Hacklink

Hacklink Panel

Hacklink

Hacklink Panel

Hacklink panel

Hacklink Panel

Hacklink

Masal oku

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink panel

Postegro

Masal Oku

Hacklink

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink

Hacklink

Hacklink

Hacklink

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink

Hacklink

Hacklink Panel

Hacklink

kavbet

Hacklink

Hacklink

Buy Hacklink

Hacklink

Hacklink

Hacklink

Hacklink satın al

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink panel

Hacklink

Masal Oku

Hacklink panel

Hacklink

Hacklink

หวยออนไลน์

Hacklink

Hacklink satın al

Hacklink Panel

ankara escort

casibom giriş

Hacklink satın al

Hacklink

pulibet güncel giriş

pulibet giriş

casibom

tophillbet

casibom giriş

adapazarı escort

antalya dedektör

jojobet

jojobet giriş

casibom

casibom

casibom

Lanet OLSUN

deneme bonusu

piabellacasino

jojobet giriş

casinofast

jojobet

betlike

interbahis giriş

meybet

betebet

casibom

casibom giriş

Grandpashabet

interbahis

ikimisli

perabet

vidobet

vidobet giriş

vidobet güncel

vidobet güncel giriş

taraftarium24

Tarabet Tv

interbahis

piabet

betnano

betnano giriş

limanbet

ultrabet

ultrabet giriş

meybet

betsmove

betsmove giriş

betvole

[태그:] tool-routing

  • LLM 에이전트 아키텍처: Memory, Planning, Tool Routing을 하나의 설계로 묶는 방법

    LLM 에이전트 아키텍처: Memory, Planning, Tool Routing을 하나의 설계로 묶는 방법

    LLM 에이전트 설계는 더 이상 “모델을 붙이면 끝”이 아니다. 하나의 에이전트가 안정적으로 작동하려면 기억, 계획, 도구 실행이 서로 끊기지 않는 흐름으로 연결되어야 한다. 이 글은 Memory, Planning, Tool Routing을 각각의 기능이 아니라 하나의 설계 축으로 묶는 방법을 정리한다. The core idea is simple: architecture is about interfaces and feedback, not just components. 구성요소를 잘 고르는 것보다, 그 구성요소가 어떤 신호를 주고받는지, 어떤 지점에서 실패가 복구되는지, 어떤 지표로 건강 상태를 측정하는지가 훨씬 중요하다.

    특히 최근의 에이전트는 다양한 작업을 동시에 수행한다. 고객 응대, 데이터 검색, 보고서 생성, 내부 승인 프로세스까지 하나의 흐름에 묶이는 경우가 많다. 이때 설계를 단순화하면 오히려 운영 비용이 폭발한다. A scalable agent is not the one that handles more tasks, but the one that fails gracefully and learns quickly. 아래의 내용은 시스템 관점에서 구조를 정리하고, 실무에서 적용 가능한 설계 원리로 연결한다.

    목차

    1. 아키텍처의 기본 축: Memory, Planning, Tool Routing을 하나로 보기
    2. Memory 설계: 저장 구조, 회수 전략, 신뢰성 레이어
    3. Planning 설계: 의사결정 그래프와 실행 제어
    4. Tool Routing 설계: 선택, 검증, 실행의 통합 파이프라인
    5. 운영 관점 통합: 관측성, 평가, 개선 루프

    1. 아키텍처의 기본 축: Memory, Planning, Tool Routing을 하나로 보기

    Memory, Planning, Tool Routing은 종종 서로 다른 문제로 취급된다. 그러나 실제 에이전트는 이 세 가지가 하나의 루프를 이룬다. 메모리는 과거를 저장하지만, 그 구조는 계획의 입력 형식을 규정한다. 계획은 실행의 우선순위를 정의하지만, 실행 결과는 다시 메모리의 질을 결정한다. Tool Routing은 실행의 기술적 경로이지만, 잘못된 라우팅은 계획의 타당성을 무너뜨린다. This is a closed loop, and every loop has a control theory dimension. 제어 루프에서 핵심은 입력과 출력의 안정성이다. 입력이 불안정하면 계획이 흔들리고, 출력이 불안정하면 메모리가 오염된다.

    따라서 설계의 출발점은 “각 모듈이 무엇을 하느냐”가 아니라 “각 모듈이 어떤 신호를 보내고 어떤 신호를 받느냐”에 있다. 예를 들어 Memory는 단순 저장소가 아니라 “의사결정에 필요한 신뢰 가능한 요약”을 제공해야 한다. Planning은 단순 스텝 나열이 아니라 “실행 리스크를 관리하는 정책”이 되어야 한다. Tool Routing은 단순 API 호출 경로가 아니라 “실행 실패를 흡수하고 재시도 전략을 설계하는 레이어”가 되어야 한다. In other words, you are designing contracts, not just functions. 이 관점이 없으면 시스템은 기능적으로는 돌아가도, 운영 환경에서 불안정해진다.

    한 가지 중요한 원칙은 “모듈 간 정보의 형태를 표준화하는 것”이다. Memory가 아무리 풍부해도 Planning이 소화하지 못하는 형태면 의미가 없다. Planning이 아무리 정교해도 Tool Routing이 해석할 수 없는 정책이라면 실행으로 연결되지 않는다. 그래서 아키텍처는 데이터 스키마, 우선순위 규칙, 실패 기준 같은 “공통 언어”를 만들어야 한다. This shared language is what makes a multi-agent system coherent. 결국 이 공통 언어가 운영의 속도를 높이고, 장애 복구 시간을 줄인다.

    2. Memory 설계: 저장 구조, 회수 전략, 신뢰성 레이어

    Memory는 흔히 벡터 DB나 로그 저장소로 단순화되지만, 실제로는 세 층의 구조가 필요하다. 첫째는 원천 기록층이다. 사용자 입력, 시스템 이벤트, 도구 결과 등 사실 기반 데이터가 저장된다. 둘째는 요약층이다. 원천 기록을 그대로 쓰면 맥락이 과잉이 되고, 요약이 없으면 Planning의 입력이 비효율적이 된다. 셋째는 정책층이다. 어떤 정보를 얼마나 오래 유지할지, 어떤 정보를 어떻게 폐기할지 결정하는 규칙이 필요하다. This is the data lifecycle in practice, not theory. 이 세 층이 분리되지 않으면, 메모리는 시간이 갈수록 노이즈가 축적되고 결국 신뢰성을 잃는다.

    회수 전략도 중요하다. 많은 시스템이 semantic search만으로 회수를 해결하려 하지만, 실제 에이전트는 시간순 맥락과 작업 흐름의 맥락을 동시에 필요로 한다. 따라서 retrieval은 “질의 기반”과 “세션 기반”이 결합되어야 한다. 예를 들어, 고객 요청에 대한 응답은 최신 세션 로그를 우선적으로 가져오고, 그다음 유사 사례를 참고하는 구조가 안정적이다. The order of retrieval matters more than the retrieval itself. 또한 회수 결과를 그대로 Planning에 주입하면 안 된다. 회수된 정보는 신뢰도 점수와 함께 제공되어야 하고, 불확실성이 높은 경우에는 Planning 단계에서 추가 검증을 유도해야 한다.

    신뢰성 레이어는 Memory 설계의 핵심이다. 정보가 저장되었다고 해서 그것이 정확하다는 보장은 없다. 특히 외부 도구에서 가져온 정보나, 모델이 생성한 요약은 오류를 포함할 수 있다. 이를 관리하려면 provenance, freshness, and validation status를 메타데이터로 남겨야 한다. 예를 들어 “이 정보는 2시간 전 크롤링됨, 원천 URL 검증됨” 같은 신호가 있어야 한다. Without metadata, memory becomes a rumor mill. 메모리를 신뢰할 수 없다면 Planning도 신뢰할 수 없다. 이 이유로 Memory 설계는 단순 저장이 아니라 검증과 관리의 체계를 포함해야 한다.

    3. Planning 설계: 의사결정 그래프와 실행 제어

    Planning은 에이전트의 뇌다. 하지만 “생각을 길게 한다”는 의미가 아니다. Planning은 실행을 위한 구조화된 의사결정이다. 이때 핵심은 단순한 단계 나열이 아니라 의사결정 그래프를 설계하는 것이다. 그래프는 분기 조건, 중단 조건, 그리고 복구 조건을 포함한다. 예를 들어 “외부 API가 실패하면 대체 경로로 전환한다”라는 규칙은 그래프의 복구 경로다. The agent must know not only what to do, but what to do when it cannot do it. 이 복구 경로가 없으면, 에이전트는 불필요한 재시도와 비용 낭비를 반복하게 된다.

    Planning의 또 다른 중요한 요소는 “리스크 관리”다. 도구 호출은 비용과 리스크를 발생시키며, 특히 고위험 도구는 실패 시 큰 손실을 만든다. 따라서 계획 단계에서 도구 호출의 위험도를 분류하고, 위험도가 높은 경우 추가 검증을 요구해야 한다. 예를 들어 금융 데이터 수정이나 고객 정보 삭제 같은 작업은 자동 실행이 아니라 승인을 요구하도록 설계한다. This is not a limitation; it is a safety feature. 에이전트가 언제 자동으로 움직이고, 언제 멈추는지를 명확히 하는 것이 운영 신뢰성을 만든다.

    또한 계획은 “정책 레이어”와 연결되어야 한다. 정책 레이어는 시스템 전체의 규칙, 예를 들어 예산 제한, 호출 횟수 제한, 프롬프트 길이 제한 같은 조건을 담는다. Planning은 이 정책을 고려하여 최적 경로를 선택해야 한다. 그렇지 않으면 특정 작업은 성공하더라도 시스템 전체가 비용 폭발로 이어진다. A good plan is one that respects global constraints. 계획이 단순히 작업을 성공시키는 것이 아니라, 시스템의 지속 가능성을 유지하는 방향으로 설계되어야 한다.

    4. Tool Routing 설계: 선택, 검증, 실행의 통합 파이프라인

    Tool Routing은 종종 “어떤 도구를 쓸 것인가”로만 이해된다. 하지만 실제로는 선택, 검증, 실행, 결과 처리의 전체 파이프라인이다. 도구 선택은 단순히 기능 매칭이 아니라, 비용, 지연, 신뢰도, 접근 권한을 고려해야 한다. 예를 들어 동일한 정보를 얻을 수 있는 두 도구가 있다면, 더 느리더라도 더 신뢰할 수 있는 도구를 우선하는 것이 장기적으로 안전하다. In routing, trust often beats speed. 이러한 선택 기준이 없으면 시스템은 단기 성능을 위해 장기 신뢰를 잃는다.

    검증 단계는 필수다. 도구 호출 결과는 항상 오류 가능성을 내포한다. 따라서 결과에 대한 sanity check가 필요하다. 예를 들어 수치 데이터는 범위를 검증하고, 텍스트 데이터는 출처를 확인하며, 작업 상태는 재확인한다. 검증 로직이 없으면, 에이전트는 잘못된 결과를 Memory에 기록하고 Planning을 오염시킨다. Verification is the gate between action and memory. 도구 결과를 검증하지 않는 시스템은 결국 잘못된 루프를 강화하게 된다.

    실행 파이프라인은 재시도 전략과 예외 처리를 포함해야 한다. 단순 재시도는 비용을 낭비할 뿐 아니라 장애를 악화시킬 수 있다. 따라서 재시도는 제한된 횟수로, 그리고 백오프 정책과 함께 이루어져야 한다. 또한 실패 시에는 대체 경로를 제공하거나 사용자에게 명확한 오류를 전달해야 한다. Failure is data, not just a problem. 실패를 기록하고, 다음 Planning에 반영하는 체계가 있어야 시스템은 학습한다. Tool Routing은 단순한 호출 경로가 아니라 운영 학습 루프의 핵심 입력이다.

    5. 운영 관점 통합: 관측성, 평가, 개선 루프

    아키텍처가 실제로 동작하려면 운영 관점이 통합되어야 한다. Memory, Planning, Tool Routing은 각각의 로그가 아니라 하나의 관측성 프레임으로 묶여야 한다. 예를 들어 특정 사용자 요청이 실패했을 때, 우리는 “어떤 메모리가 회수되었는지, 어떤 계획이 만들어졌는지, 어떤 도구가 호출되었는지”를 하나의 흐름으로 추적할 수 있어야 한다. This is the equivalent of tracing in distributed systems. 분절된 로그는 운영 속도를 늦추고, 근본 원인 분석을 어렵게 만든다.

    평가 루프도 중요하다. 에이전트의 성능을 평가하는 것은 단순한 정확도 측정이 아니라, 의사결정 품질과 운영 비용을 함께 측정하는 것이다. 예를 들어 “작업 성공률”과 “작업당 비용”을 동시에 추적해야 한다. 또 “실패했을 때 복구까지 걸린 시간”을 측정해야 한다. These metrics turn architecture into operational reality. 지표가 없으면 설계는 가설에 머무르고, 지표가 있으면 설계는 개선된다.

    마지막으로 개선 루프는 조직의 리듬으로 통합되어야 한다. 일주일 단위의 리뷰, 월간 성능 분석, 정책 업데이트 주기 같은 운영 리듬이 없다면, 아키텍처는 시간이 갈수록 붕괴된다. 에이전트 설계는 일회성 프로젝트가 아니라 운영 모델이다. The system must be designed to learn as much as it is designed to act. Memory, Planning, Tool Routing의 결합은 결국 “지속 가능한 학습과 실행”을 가능하게 한다. 이 관점이 있을 때, 에이전트는 단순한 자동화 도구가 아니라 조직의 안정적인 운영 자산이 된다.

    6. 적용 시나리오: 제품, 운영, 조직의 접점에서 설계가 작동하는 순간

    실무 적용에서 가장 흔한 오류는 설계를 특정 팀의 문제로만 보는 것이다. 예를 들어 제품팀은 “사용자 경험”을, 운영팀은 “안정성”을, 데이터팀은 “정확도”를 따로 최적화한다. 하지만 Memory, Planning, Tool Routing은 분리된 최적화를 견디지 못한다. The architecture is a shared contract across teams. 한 팀이 메모리 정책을 바꾸면 Planning의 입력이 달라지고, 그 변화는 Tool Routing의 오류율로 나타난다. 따라서 적용 시나리오는 기능 구현이 아니라 조직 간 인터페이스 정의로 시작해야 한다. 이를 위해서는 공통 지표와 공통 용어를 먼저 합의해야 한다.

    또 다른 시나리오는 “규모 확장”이다. 초기에는 단일 모델과 단일 도구로 운영하더라도, 사용자 트래픽이 늘면 멀티 모델, 멀티 도구 환경으로 이동한다. 이때 기존 설계를 그대로 확장하면 실패한다. 모델 라우팅, 비용 분산, 신뢰도 차이를 고려한 정책이 필요하다. A multi-model agent is a policy system, not just a routing table. 특히 고비용 모델과 저비용 모델의 혼합은 “언제 고성능을 쓰고 언제 충분히 좋은 결과를 선택할 것인가”를 명확히 정의해야 한다. 그렇지 않으면 비용은 증가하고, 사용자 만족도는 떨어진다.

    마지막으로 조직의 학습 구조가 시나리오의 핵심이다. 에이전트는 데이터가 축적될수록 좋아질 수 있지만, 그 전제는 실패와 성공이 구조적으로 기록되고 해석되는 것이다. 운영 로그가 단순한 이벤트 나열에 머무르면 학습이 되지 않는다. Instead, logs must be decision-aware. 어떤 계획이 어떤 결과를 만들었는지, 어떤 메모리 조회가 성공률을 높였는지, 어떤 도구가 반복적으로 실패했는지 분석 가능한 형태로 남겨야 한다. 이렇게 해야만 “개선이 가능한 설계”가 된다. 이 과정이 정착되면, 조직은 에이전트를 기술이 아니라 운영 체계로 다루게 된다.

    Tags: LLM아키텍처,에이전트메모리,플래닝,툴라우팅,컨텍스트관리,오케스트레이션,에이전트디자인,시스템설계,tool-routing,agent-memory

  • Stateful Memory와 Tool Routing을 통합한 심화 AI 에이전트 운영 설계

    Stateful Memory와 Tool Routing을 통합한 심화 AI 에이전트 운영 설계

    목차

    1. 왜 이제는 stateful memory가 설계의 중심이 되는가
    2. Tool routing을 ‘정책’으로 다루는 프레임
    3. Memory-Tool-Policy를 연결하는 데이터 플로우
    4. Evaluation을 운영 리듬으로 만드는 방법
    5. 실전 적용: 실패 모드와 복구 루프의 결합

    1. 왜 이제는 stateful memory가 설계의 중심이 되는가

    AI 에이전트 설계에서 memory는 더 이상 “좋으면 쓰는 옵션”이 아니다. 단일 세션에서만 동작하는 stateless 에이전트는 고정된 프롬프트 품질을 넘어서는 순간 곧바로 한계를 드러낸다. 실제 운영에서는 사용자의 맥락, 도구 호출의 결과, 그리고 정책 결정을 이어 붙여야만 장기적인 일관성을 얻을 수 있다. Stateful memory는 이 연결을 가능하게 하며, 단순한 저장이 아니라 “어떤 상태를 다음 행동의 기준으로 삼을 것인가”를 결정하는 체계다. In production, memory is not a cache; it is a contract about what the system is allowed to assume. 이 계약이 없다면 에이전트는 매 턴마다 같은 의사결정을 반복하거나, 반대로 위험한 추측을 과도하게 확신하는 모드로 빠진다. 그래서 심화 설계에서는 memory를 기능이 아니라 거버넌스의 일부로 보아야 한다.

    Stateful memory를 설계할 때 가장 흔한 실수는 “모든 것을 저장하려는 욕심”이다. 기억의 양이 많아질수록 정합성 검증 비용이 커지고, 모델이 참조할 컨텍스트는 과부하 상태가 된다. 따라서 메모리는 계층화가 필요하다. 예를 들어, 장기 기억은 정책·사용자 프로필·업무 목적처럼 변하지 않는 규칙을 담고, 단기 기억은 최근 대화의 논리 연결과 작업 상태만을 담는다. This layered design reduces context entropy and makes retrieval deterministic. 또한 memory의 생성과 소멸을 운영 리듬에 맞춰 정의해야 한다. 하루 단위 리셋, 주간 리뷰, 분기 단위 정책 업데이트처럼 “언제 무엇을 잊게 할 것인가”가 설계되어야만 안정적이다.

    2. Tool routing을 ‘정책’으로 다루는 프레임

    Tool routing을 단순히 모델이 알아서 선택하게 두면, 성능은 올라갈 수 있지만 안정성은 오히려 떨어진다. 심화 에이전트는 tool routing을 기능이 아니라 정책 레이어로 다룬다. 즉, 어느 상황에서 어떤 도구를 호출해야 하는지, 그 결과를 어떤 형태로 정리해야 하는지, 그리고 실패 시 어떤 대체 경로가 있는지를 룰로 정의한다. Policy-driven routing turns tool calls into auditable operations, not probabilistic guesses. 이런 정책은 비용, 신뢰성, 보안 요구사항을 동시에 반영해야 한다. 예를 들어 “고위험 요청은 항상 2단계 검증 도구를 거친다”는 정책은 단순한 기술 조합이 아니라 책임 구조의 표현이다.

    정책 기반 routing의 장점은 재현성이다. 같은 입력이 들어왔을 때 시스템이 동일한 의사결정을 반복할 수 있어야 운영이 가능해진다. 이는 법무·보안·운영팀의 합의를 모델에게 실어 나르는 방식이기도 하다. 따라서 routing 정책은 모델 내부가 아니라 외부 정책 레이어로 관리되어야 하며, 버전 관리와 변경 이력 추적이 필수다. Routing is governance in disguise. 또한 정책은 상황별로 가중치를 다르게 적용할 수 있어야 한다. 예를 들어 트래픽 피크 시에는 비용 절감 정책을 우선하고, 보안 사고 시에는 안전성 정책을 최우선으로 전환하는 식이다. 이 “우선순위 전환”을 자동화할 수 있어야 진짜 운영 설계다.

    3. Memory-Tool-Policy를 연결하는 데이터 플로우

    심화 설계의 핵심은 세 축을 연결하는 데이터 플로우다. Memory가 단지 저장소로 존재하고, Tool이 단지 기능 모듈로 존재하며, Policy가 단지 문서로만 남아 있다면 에이전트는 결국 분절된 시스템이 된다. 연결의 방식은 간단해 보이지만 구현은 까다롭다. 예를 들어, tool 호출 결과를 memory에 저장할 때 “어떤 스키마로 저장할 것인가”가 중요하다. 스키마가 없다면 retrieval이 추측이 되고, 추측이 많아질수록 시스템은 불안정해진다. Schema-first memory design makes tool outputs reusable and safe. 또한 policy는 memory에 저장된 상태를 평가해 tool routing을 결정해야 하므로, policy는 반드시 memory의 구조를 이해해야 한다.

    이 연결 구조를 안정화하려면 “관측 가능한 상태”를 만들어야 한다. 즉, 에이전트가 어떤 memory를 참조했는지, 어떤 policy가 활성화되었는지, 어떤 tool이 호출되었는지를 운영 로그로 남겨야 한다. 이를 통해 운영팀은 “왜 이런 결과가 나왔는가”를 설명할 수 있다. Explanation is a requirement, not a bonus. 또한 memory와 tool 사이에는 중간 검증 계층이 필요하다. 예를 들어, 외부 데이터를 가져온 tool 결과는 신뢰 구간과 타임스탬프를 포함해야 하며, memory는 그 신뢰 구간을 함께 저장해야 한다. 이렇게 해야 에이전트는 “오래된 사실”을 최신 사실처럼 다루는 실수를 줄일 수 있다.

    4. Evaluation을 운영 리듬으로 만드는 방법

    심화 에이전트 운영의 핵심은 평가를 일회성 QA가 아니라 지속적 리듬으로 만드는 것이다. 평가가 존재해야 memory, tool, policy의 결함이 드러난다. 가장 실용적인 방식은 evaluation을 “사건 중심”으로 설계하는 것이다. 특정 정책이 작동한 케이스, 특정 tool이 실패한 케이스, 특정 memory가 잘못된 판단을 유도한 케이스를 정기적으로 리뷰한다. Continuous evaluation is the only way to keep long-term reliability. 이렇게 평가를 운영 리듬에 묶으면, 매주 혹은 매월 정책 업데이트가 가능해지고, memory 스키마도 점진적으로 개선된다.

    또한 평가 지표는 단순 정확도보다 “의사결정 품질”에 초점을 맞춰야 한다. 예를 들어, tool 호출의 적절성, 실패 시 대체 경로 선택, 정책 위반 가능성 등을 점수화해야 한다. 이는 운영 리스크를 줄이는 지표다. Metrics should describe decisions, not just outputs. 평가 결과는 곧바로 policy 업데이트와 연결되어야 하며, 그 업데이트는 버전 관리되어야 한다. 이렇게 해야 운영팀은 “이 정책 변경이 어떤 개선을 가져왔는가”를 데이터로 설명할 수 있고, 반복되는 결함을 줄일 수 있다.

    5. 실전 적용: 실패 모드와 복구 루프의 결합

    실전 운영에서는 실패가 반드시 발생한다. 문제는 실패를 어떻게 다루느냐에 있다. 심화 에이전트 설계는 실패 모드를 미리 분류하고, 그에 맞는 복구 루프를 내장해야 한다. 예를 들어 memory가 손상되었을 때는 안전 모드로 전환하고, tool 호출 실패 시에는 제한된 기능 모드로 전환하는 식이다. Failure handling is not a patch; it is a primary design axis. 이 복구 루프는 policy에 내장되어야 하며, 자동화된 전환 기준이 필요하다. 그래야 운영자가 매번 수동으로 개입하지 않아도 안정성을 유지할 수 있다.

    또 하나 중요한 것은 복구 루프가 평가와 연결되어야 한다는 점이다. 복구가 잦아진다면 그것은 policy 설계나 memory 구조에 문제가 있다는 신호다. 따라서 복구 이벤트는 평가 데이터로 수집되어야 하며, 그 데이터는 다음 정책 개선의 근거가 된다. This creates a learning loop where failures become design fuel. 결국 심화 에이전트는 “기능이 많은 시스템”이 아니라 “실패를 견디며 학습하는 시스템”이어야 한다. 이 관점에서 보면, memory, tool, policy, evaluation은 서로 분리된 요소가 아니라 하나의 생명 주기를 공유하는 구조다.

    6. 운영 조직과의 합의: 기술 설계가 조직 설계가 되는 순간

    심화 에이전트 설계가 어려운 이유는 기술적 복잡성뿐 아니라 조직적 합의가 동시에 요구되기 때문이다. Memory와 policy는 결국 조직이 합의한 원칙을 시스템에 새기는 과정이다. 예컨대 “고객 데이터는 어떤 조건에서만 참조한다”는 규칙은 기술이 아니라 비즈니스 의사결정이다. This means architecture meetings are also governance meetings. 따라서 설계 단계에서부터 법무, 보안, 운영, 제품 팀이 동일한 언어로 합의할 수 있는 프레임이 필요하다. 이 합의가 없으면 정책은 모호해지고, 모호한 정책은 tool routing의 흔들림으로 이어진다. 결국 기술적 불안정성은 조직의 불명확함에서 비롯된다.

    조직 합의가 시스템에 반영되는 방식은 “정책 선언 → 실행 규칙 → 기록 구조”의 3단계로 정리할 수 있다. 첫째, 선언은 원칙을 말한다. 둘째, 실행 규칙은 그 원칙을 시스템 동작으로 바꾼다. 셋째, 기록 구조는 그 동작이 실제로 일어났음을 증명한다. Evidence-driven governance reduces friction because disputes become data questions. 예를 들어, 특정 tool이 고위험 데이터를 다루는 경우, 해당 호출이 언제 발생했고, 누가 승인했으며, 어떤 memory를 기반으로 했는지를 추적할 수 있어야 한다. 이 추적 가능성이 곧 운영의 신뢰다.

    7. 스케일링 시나리오: 비용·속도·신뢰의 삼각형

    에이전트가 확장될수록 비용과 속도와 신뢰 사이의 긴장이 커진다. Memory를 많이 유지하면 신뢰는 올라가지만 비용과 지연이 상승한다. Tool routing을 보수적으로 설정하면 안정성은 올라가지만 응답 속도가 느려진다. The triangle is real: you can optimize two, but the third will push back. 따라서 심화 설계는 “상황별 우선순위 전환”을 전제로 한다. 예를 들어 피크 타임에는 비용을 줄이는 대신 신뢰 수준을 일정 한도 내에서 유지하는 정책으로 전환하고, 고위험 요청이 집중되는 기간에는 비용과 속도를 희생하더라도 신뢰를 우선한다. 이 전환이 자동화되어야 운영이 지속 가능하다.

    또한 스케일링은 단순히 요청 수가 늘어나는 문제가 아니다. 요청의 구성과 복잡성이 바뀌기 때문에, memory와 tool 간의 연결 구조가 흔들릴 수 있다. 예를 들어, 간단한 정보 요청이 주류였던 시기에는 얕은 memory로 충분했지만, 복합적인 의사결정이 많아지면 memory의 정합성과 검증이 중요해진다. Scaling changes workload composition, not just volume. 따라서 운영팀은 요청의 패턴 변화를 관측하고, policy의 우선순위를 동적으로 조정해야 한다. 이 과정이 반복되면, 에이전트는 단순히 커지는 시스템이 아니라 ‘성숙하는 시스템’이 된다.

    8. 실전 설계 패턴: 교차 검증과 책임 분리

    실전에서 효과적인 패턴은 교차 검증이다. 하나의 tool 결과만으로 memory를 갱신하는 것은 위험하다. 대신 서로 다른 근거를 갖는 tool 결과를 비교해 “합의된 사실”만 memory에 반영하는 방식이 안정적이다. For critical facts, consensus beats speed. 이 교차 검증 패턴은 비용을 늘리지만, 잘못된 memory 업데이트로 인한 장기적 리스크를 줄인다. 또한 책임 분리 역시 중요하다. 예를 들어, policy 변경은 운영팀이 승인하고, memory 스키마 변경은 데이터팀이 승인하며, tool 선택 규칙 변경은 제품팀이 승인하는 식이다. 이런 분리는 초기에는 느려 보이지만, 장기적으로 신뢰와 책임을 분명히 해준다.

    교차 검증을 구현할 때는 단순히 “2개 이상의 tool을 호출”하는 것을 넘어서야 한다. 각 tool의 신뢰 구간, 업데이트 주기, 데이터 소스의 일관성을 고려해야 한다. 또한 검증 결과가 실패했을 때의 fallback을 미리 정의해야 한다. The worst case is silent disagreement. 따라서 검증 실패 시에는 memory 업데이트를 보류하고, 안전 모드로 전환하거나 사람 승인을 요구하는 절차가 필요하다. 이런 패턴은 심화 에이전트 설계에서 “결정 보류”를 중요한 전략으로 만든다. 즉, 빠른 답보다 안전한 보류가 더 나은 결과를 만들 수 있다.

    9. 운영 리듬 설계: 월간·주간·일간 루프의 역할

    심화 에이전트의 운영 리듬은 다층적이어야 한다. 일간 루프는 이상 징후 탐지와 단기 정책 조정을 담당한다. 주간 루프는 tool routing과 memory의 효율성을 평가한다. 월간 루프는 policy 구조 자체를 재검토한다. Multi-cadence governance prevents both drift and paralysis. 이 리듬이 없으면 정책은 오래된 상태로 방치되거나, 반대로 너무 자주 바뀌어 안정성을 잃는다. 따라서 설계 단계에서부터 “어떤 결정은 얼마나 자주 검토할 것인가”를 정의해야 한다. 운영 리듬은 시스템의 품질을 유지하는 숨은 인프라다.

    리듬을 설계할 때는 단순한 회의 주기를 넘어서야 한다. 각 루프는 명확한 산출물이 있어야 한다. 예를 들어 주간 루프에서는 “가장 많이 트리거된 fallback 규칙”과 “가장 높은 비용을 유발한 tool 호출 경로”를 리포트로 남긴다. 월간 루프에서는 “policy 변경 이력”과 “memory 스키마 개선 사항”을 요약한다. Data-driven cadence turns governance into a product. 이 리듬이 확립되면 에이전트는 점점 더 예측 가능하고, 조직은 더 높은 신뢰를 갖게 된다.

    10. 보안과 프라이버시: memory가 위험이 되는 순간

    Stateful memory는 강력하지만 동시에 위험하다. 잘못된 기억은 잘못된 결정을 만들고, 과도한 기억은 프라이버시 침해를 일으킨다. Security is not a feature you add later; it is a boundary you design upfront. 따라서 memory 설계에는 “저장 금지 영역”이 반드시 포함되어야 한다. 민감 정보, 인증 정보, 개인 건강 데이터처럼 법적·윤리적 리스크가 큰 항목은 memory에 남겨서는 안 된다. 또한 “비식별화”만으로는 충분하지 않은 경우가 많다. 왜냐하면 tool output과 memory가 결합될 때 재식별 가능성이 높아지기 때문이다.

    보안을 설계로 포함하려면 memory 접근 정책을 세분화해야 한다. 예를 들어, 특정 도구가 호출된 경우에만 특정 memory 세그먼트를 조회할 수 있도록 제한한다. 또한 memory 조회 결과에 접근 제어 로그를 남겨야 한다. Auditability is the price of trust. 이렇게 해야 문제가 발생했을 때 “누가 어떤 정보에 접근했는가”를 추적할 수 있다. 결국 보안은 단일 기능이 아니라 memory, tool, policy의 결합 구조 전체에 스며들어야 한다.

    11. 결론: 심화 설계는 ‘연결 구조’를 만드는 일이다

    심화 AI 에이전트 설계는 기능의 나열이 아니다. memory, tool, policy, evaluation을 어떻게 연결할 것인가를 설계하는 일이다. 이 연결이 약하면 시스템은 일시적으로는 잘 작동해도 장기적으로 불안정해진다. Architecture without governance is a short-lived prototype. 따라서 심화 설계의 목적은 “지속 가능한 의사결정 시스템”을 만드는 것이다. 이를 위해서는 기술적 최적화뿐 아니라 조직적 합의와 운영 리듬이 필요하다.

    정리하면, stateful memory는 설계의 중심이며, tool routing은 정책으로 다뤄져야 한다. 이 둘을 연결하는 데이터 플로우는 관측 가능해야 하고, evaluation은 리듬으로 자리잡아야 한다. Failure handling은 예외가 아니라 설계의 일부이며, 보안은 경계로서 포함되어야 한다. The result is not just a smarter agent, but a safer and more governable one. 이런 관점에서 심화 설계를 진행한다면, 에이전트는 단순히 “똑똑한 도구”가 아니라 “신뢰할 수 있는 운영 시스템”으로 자리잡게 될 것이다.

    12. 예시 워크플로: 티켓 처리 에이전트의 통합 설계

    마지막으로 구체적인 예시를 보자. 고객 지원 티켓을 처리하는 에이전트는 stateful memory가 없으면 같은 이슈를 반복해서 물어보게 된다. 따라서 장기 memory에는 고객의 계약 정보, 과거 주요 이슈, 선호 대응 방식이 저장되고, 단기 memory에는 현재 티켓의 진행 상태와 최근 대화가 저장된다. When the ticket changes status, the memory state changes too. Tool routing은 정책에 따라 분기된다. 예를 들어 “결제 관련 티켓은 항상 결제 시스템 조회 tool을 먼저 호출한다”는 규칙이 있고, “법적 분쟁 가능성이 있는 키워드가 포함되면 사람 승인 루프로 전환한다”는 규칙이 있다. 이렇게 하면 처리 속도와 안전성을 동시에 확보할 수 있다.

    평가는 주간 리듬으로 수행된다. 가장 많이 실패한 tool 호출 경로, 가장 많은 fallback 전환을 일으킨 memory 패턴, 그리고 가장 높은 비용을 발생시킨 티켓 유형이 리포트로 남는다. This report becomes the next policy update’s input. 또한 월간 리듬에서 policy를 재검토해 “어떤 티켓 유형은 자동 처리에서 제외할 것인가”를 결정한다. 이 전체 구조는 단지 고객 지원의 효율성을 올리는 것이 아니라, 고객 경험을 안정적으로 유지하는 장치가 된다. 결국 심화 설계는 일상적인 업무를 예측 가능한 흐름으로 바꾸는 과정이며, 그 과정에서 memory, tool, policy, evaluation의 연결 구조가 진짜 가치를 만든다.

    13. 마이크로 정책과 거시 정책의 분리

    정책은 규모에 따라 나뉜다. 마이크로 정책은 특정 tool 호출 조건이나 memory 업데이트 규칙처럼 세밀한 동작을 정의한다. 거시 정책은 조직이 지켜야 할 원칙, 예산 한도, 책임 구조를 정의한다. Separating micro and macro policies prevents confusion and makes audits easier. 이 둘이 섞이면 정책 업데이트가 복잡해지고, 작은 변경이 큰 리스크로 이어질 수 있다. 따라서 심화 설계에서는 마이크로 정책을 빠르게 수정할 수 있게 하고, 거시 정책은 안정적으로 유지하는 이중 구조가 필요하다. 이 분리가 설계되면 운영팀은 빠른 학습과 안정성을 동시에 얻는다.

    마지막으로 강조할 점은, 이런 설계가 단발성 문서가 아니라 “지속적으로 실행되는 운영 코드”로 남아야 한다는 사실이다. Living design beats static documentation. 이 관점이 있을 때 비로소 심화 에이전트는 조직의 신뢰 가능한 인프라가 된다.

    Tags: stateful-memory,tool-routing,agent-evaluation,policy-guardrails,context-window,orchestration,retrieval-augmented,reliability-loop,prompt-strategy,agent-ops

  • LLM 에이전트 아키텍처: 설계 원칙, 모듈 분해, 운영 안정성

    LLM 에이전트 아키텍처: 설계 원칙, 모듈 분해, 운영 안정성

    목차

    1. 왜 아키텍처가 중요한가

    2. 모델-오케스트레이터 분리

    3. Planner–Executor 패턴

    4. Tool routing과 capability map

    5. Memory stack 설계

    6. Context budget 운영

    7. State machine과 실패 회복

    8. Eval harness 구축

    9. 안전장치와 거버넌스

    10. 배포 토폴로지와 비용 최적화

    11. 로깅/관측성 전략

    12. 조직 운영 모델

    13. 스케일 아웃과 멀티 에이전트 협업

    14. 실전 운영 시나리오

    15. 레거시 시스템과의 통합

    16. 장기 로드맵과 기술 부채

    17. 비용-품질 트레이드오프 사례

    18. 인재와 프로세스 설계 마무리

    19. 왜 아키텍처가 중요한가 LLM 에이전트는 기능 구현보다 구조 설계가 성능과 안정성을 좌우한다. 단일 프롬프트로 모든 문제를 해결하려는 접근은 빠르지만, 실서비스에서는 유지보수 비용이 폭증한다. 특히 오작동의 원인이 모델인지, 도구 호출인지, 상태 전이인지 분리되지 않으면 반복 장애가 발생한다. 이런 상황에서는 응답 품질이 불안정해지고, 팀은 원인을 찾느라 시간을 소모한다.

    In production, architecture is not optional. It is the contract between product, engineering, and operations. A clear separation of responsibilities makes failures explainable and therefore fixable. It also keeps the system extensible when requirements change.

    또한 아키텍처는 장기 비용을 결정한다. 동일한 기능을 제공하더라도 구조가 단순할수록 운영 비용은 낮아진다. 반대로 기능이 늘어날수록 설계가 어설프면 기능 추가의 속도가 급격히 느려진다. 이는 결국 경쟁력 손실로 이어진다. 아키텍처는 결국 ‘속도 vs 안전’의 균형을 표현하는 체계다.

    1. 모델-오케스트레이터 분리 모델은 판단과 생성에 집중하고, 오케스트레이터는 라우팅과 제약을 담당해야 한다. 예를 들어, 모델이 직접 API를 호출하게 하기보다, 오케스트레이터가 호출 조건을 검증하고 제한을 둔다. 이 방식은 보안과 비용을 동시에 낮춘다.

    The LLM should be treated as a probabilistic engine. The orchestrator should be deterministic wherever possible. This split reduces ambiguity and limits accidental behavior. Deterministic guardrails help when audits or compliance reviews are required.

    분리 구조는 팀 협업에도 유리하다. 모델 프롬프트와 정책 로직을 분리하면, 운영팀은 정책을 안전하게 조정할 수 있고, 모델팀은 생성 품질을 개선하는 데 집중할 수 있다. 이 경계가 불분명하면 작은 변경이 전체 시스템에 영향을 미친다.

    오케스트레이터는 실행 전 검증, 비용 상한, 금지 도구 리스트 등 운영 규칙을 지속적으로 업데이트할 수 있어야 한다. 즉, 모델 성능과 별개로 운영 전략을 적용하는 제어면(Control Plane)이 필요하다.

    1. Planner–Executor 패턴 복잡한 작업은 계획 수립과 실행을 분리한다. Planner는 문제를 단계로 나누고, Executor는 각 단계를 수행한다. 이때 Planner는 지나치게 세부적인 단계까지 쪼개지 않도록 제한한다. 과도한 계획은 토큰만 소비하고 실행 품질을 떨어뜨린다.

    A good plan is a map, not a script. It should guide decisions while leaving enough room for local optimization. The executor should be able to adapt to tool failures or data gaps without re-planning the entire task.

    Planner–Executor 구조는 오류 분석을 쉽게 한다. 계획 단계의 오류인지, 실행 단계의 오류인지 구분할 수 있기 때문이다. 이 구조는 특히 복합 워크플로에서 효율적이며, 일정 수준 이상의 복잡성을 가진 작업에 적합하다.

    추가로, 계획의 단위는 비즈니스 맥락과 연동되어야 한다. 예컨대 고객 요청 처리라면 "조회-검증-응답"처럼 업무 흐름과 유사하게 모델링하면 이해와 유지보수가 쉬워진다.

    1. Tool routing과 capability map 도구 호출은 명시적으로 정의된 capability map을 통해 이뤄져야 한다. 예를 들어, 검색 도구, 요약 도구, 데이터 업데이트 도구의 접근 범위를 다르게 제한한다. 이 구조는 사고를 줄이고 감사 추적성을 높인다.

    Tool routing also helps cost control. When the system knows which tool solves a task with minimal tokens, it will pick the efficient path instead of overusing the model. This reduces latency and lowers token expenditure.

    도구의 기능을 문서로만 관리하면 실제 호출과 불일치가 생긴다. 따라서 capability map은 코드로 관리해야 한다. 그래야 호출된 도구와 기대된 도구가 일치하는지, 접근 권한이 제대로 적용되는지 자동으로 검사할 수 있다.

    또한 도구 라우팅 규칙은 지속적으로 업데이트되어야 한다. 업무 요구가 바뀌면 도구의 권한 범위도 변하기 때문이다. 권한이 과도하면 사고 위험이 커지고, 권한이 부족하면 사용자 경험이 떨어진다.

    1. Memory stack 설계 Memory는 단일 저장소가 아니라 계층 구조로 설계한다. 단기 메모리는 대화 맥락을 유지하고, 중기 메모리는 프로젝트 단위로 관리한다. 장기 메모리는 정책적으로 승인된 정보만 기록해야 한다. 민감 데이터는 저장하지 않는 것이 기본 원칙이다.

    A layered memory stack allows selective recall. It also supports privacy by design, because not all memory layers need the same retention policy. Some layers might be ephemeral while others are strictly curated.

    메모리 설계에서 중요한 것은 검색 범위를 제어하는 것이다. 모든 정보를 항상 불러오면 모델의 주의가 분산되고, 컨텍스트 예산을 과도하게 사용한다. 필요한 정보만 정확히 꺼내는 방식이 장기적으로 더 효율적이다.

    추가로, 메모리의 갱신 정책이 필요하다. 오래된 정보가 지속적으로 노출되면 잘못된 의사결정을 만들 수 있다. 따라서 만료 규칙과 품질 기준을 세워야 한다.

    1. Context budget 운영 Context budget은 비용과 성능의 교차점이다. 질문의 중요도에 따라 허용 토큰을 다르게 배분한다. 고정 예산은 안전하지만 품질을 손상시킬 수 있다. 따라서 동적 예산 정책이 필요하다.

    Dynamic budgeting should consider the task class, latency target, and user tier. Treat context like a scarce resource, not an infinite buffer. Efficient context means better throughput and predictable costs.

    컨텍스트 예산은 단순히 토큰 수를 줄이는 것이 아니다. 어떤 정보를 남기고 어떤 정보를 버릴지 결정하는 정책이다. 즉, 예산 정책은 곧 제품 전략이며 사용자 경험을 좌우한다.

    실무에서는 사용자 요청을 분류한 뒤, 카테고리별로 예산을 설계하는 방식이 효과적이다. 예를 들어 "고객 불만 처리"는 더 많은 맥락을 허용하고, "간단한 FAQ"는 짧은 맥락으로 충분하다.

    1. State machine과 실패 회복 실패는 구조적으로 발생한다. 따라서 실패를 전제로 한 state machine이 필요하다. 각 상태에서 가능한 전이와 재시도 규칙을 정의하고, 안전한 종료 상태를 설계한다. 이 방식은 반복 호출 폭주를 막는다.

    When failures happen, the system must degrade gracefully. A safe fallback is better than an endless loop. Clear state transitions make incident reviews faster and more precise.

    예를 들어 도구 호출 실패 시에는 재시도 횟수와 시간 간격을 제한해야 한다. 무조건 재시도를 허용하면 비용 폭주와 서비스 지연이 발생한다. 상태 전이는 비용과 안정성의 균형을 맞추는 핵심 요소다.

    또한 사용자에게 실패 상황을 어떻게 설명할지도 상태 머신의 일부다. 투명한 실패 메시지는 신뢰를 유지하고, 다음 행동을 안내한다.

    1. Eval harness 구축 품질을 수치로 관리하려면 평가 하네스가 필요하다. 사전 정의된 테스트 세트와 온라인 샘플을 혼합해 평가한다. 중요한 것은, 평가가 배포 이후에도 지속적으로 실행되어야 한다는 점이다.

    An evaluation harness is your early warning system. It catches regressions before users do. Continuous evaluation provides a feedback loop for both model updates and policy changes.

    평가 지표는 단순 정확도뿐 아니라 안정성, 지연 시간, 비용까지 포함해야 한다. 운영 환경에서 중요한 것은 균형이지 하나의 최적화가 아니다. 다차원 지표가 의사결정을 돕는다.

    평가 데이터는 지속적으로 업데이트되어야 한다. 사용자가 실제로 묻는 질문이 변하기 때문이다. 즉, 평가 하네스는 "살아있는 시스템"이어야 한다.

    1. 안전장치와 거버넌스 안전장치는 규칙 기반 필터와 인간 검토 프로세스를 포함한다. 민감 주제는 자동 거절 또는 human-in-the-loop 경로로 전환한다. 또한 audit log는 필수이며, 최소한 요청-응답-도구 호출-결정 경로가 기록되어야 한다.

    Governance is not bureaucracy; it is the guardrail that keeps the system reliable and legally safe. Strong governance prevents a single faulty decision from scaling into a public incident.

    거버넌스 모델은 조직 문화와도 연결된다. 기술적으로 가능한 기능이라도 사회적 책임과 법적 위험을 고려해야 한다. 이런 판단 기준이 명확해야 운영팀이 흔들리지 않는다.

    추가로, 거버넌스는 실험 속도를 보장하기 위한 안전망이기도 하다. 위험을 통제할 수 있으면 더 빠른 실험이 가능하다.

    1. 배포 토폴로지와 비용 최적화 모델을 단일 서비스로 배포하는 방식은 단순하지만 비용이 높다. 요청 유형별로 모델을 분리하는 멀티 티어 구조가 효과적이다. 예를 들어 요약, 분류, 생성에 서로 다른 모델을 사용한다.

    The topology should match workload patterns. Low-latency tasks may need smaller models, while complex reasoning should use larger ones selectively. This avoids wasting compute on trivial tasks.

    또한 캐싱 전략과 프리컴퓨팅을 결합하면 비용을 크게 낄 수 있다. 재사용 가능한 답변은 캐시에 저장하고, 변동이 적은 요약은 주기적으로 미리 생성하는 식이다.

    배포 토폴로지는 장애 전파를 막는 장치이기도 하다. 특정 모델이 문제를 일으키면 해당 레이어만 격리하고, 나머지 서비스는 유지할 수 있어야 한다.

    1. 로깅/관측성 전략 관측성은 운영의 핵심이다. 요청 단위 로그, 비용 메트릭, 오류율, 도구 호출 실패율을 일관된 스키마로 기록한다. 관측성이 부족하면 결국 운영은 감으로 하게 된다.

    Observability is how you make the invisible visible. Without it, you will not know why your agent behaves inconsistently. Metrics, traces, and logs should align to the same identifiers.

    로그 설계는 사후 분석뿐 아니라 실시간 경고에도 중요하다. 특정 도구 실패율이 급등하면 자동으로 알림을 보내고, 필요 시 기능을 일시적으로 제한할 수 있어야 한다.

    정량 데이터뿐 아니라 정성 피드백도 수집해야 한다. 사용자 불만과 실제 로그를 결합하면 개선 방향이 명확해진다.

    1. 조직 운영 모델 에이전트 운영은 ML 팀만의 일이 아니다. 제품, 데이터, 보안, 운영이 함께 참여해야 한다. 배포 권한과 실험 프로세스를 명확히 하고, 의사결정 책임을 분리한다.

    A cross-functional operating model prevents bottlenecks. It also turns AI systems into sustainable products rather than one-off demos. Shared ownership improves accountability.

    팀 간 역할이 명확하지 않으면 문제가 발생했을 때 책임 회피가 생긴다. 운영 모델은 기술 구조만큼 중요하며, 궁극적으로 사용자 경험에 영향을 준다.

    운영 위원회나 주간 리뷰 구조를 두는 것도 효과적이다. 이 구조는 이슈를 조기에 발견하고, 정책 변경을 합의적으로 결정하게 만든다.

    1. 스케일 아웃과 멀티 에이전트 협업 단일 에이전트가 모든 문제를 해결하는 구조는 확장성에 한계가 있다. 역할을 분리한 멀티 에이전트 구조는 확장성과 전문성을 동시에 확보한다. 예를 들어 분석 에이전트, 요약 에이전트, 실행 에이전트를 분리할 수 있다.

    Multi-agent systems require coordination protocols. Without a protocol, agents will duplicate work or conflict. A shared task ledger or central coordinator often solves this.

    멀티 에이전트 구조는 비용 절감에도 기여한다. 단순 작업은 작은 모델로, 복잡한 작업만 큰 모델로 분배하면 전체 비용이 줄어든다.

    다만 협업 구조는 책임 경계를 명확히 해야 한다. 어느 에이전트가 결정을 내렸는지 추적 가능해야 한다.

    1. 실전 운영 시나리오 실제 운영에서는 예외 상황이 빈번하다. 예를 들어 외부 API 제한, 데이터 품질 저하, 모델의 일시적 오류 등이 발생한다. 이때 중요한 것은 즉시 중단할지, 제한된 모드로 운영할지 정책을 미리 정해두는 것이다.

    Real-world operations are messy. A resilient architecture assumes partial failure and builds a recovery plan in advance. This includes fallback responses and safe exit states.

    운영 시나리오는 문서로만 두지 말고 정기적으로 시뮬레이션해야 한다. 그래야 실제 장애 상황에서 팀이 침착하게 대응할 수 있다.

    또한 장애 후 복구 시나리오를 사전에 준비해야 한다. 복구 절차가 명확하면 다운타임을 최소화할 수 있다.

    1. 레거시 시스템과의 통합 많은 조직은 이미 기존 시스템을 갖고 있다. 새로운 에이전트를 구축할 때는 레거시 시스템과의 통합이 필수다. 이를 무시하면 현장 적용이 지연되고, 운영 비용이 증가한다.

    Integration strategy should be incremental. Start with read-only connections, then expand to write operations once trust and reliability are proven.

    레거시와의 통합은 변환 계층을 통해 이뤄져야 한다. 데이터 포맷을 변환하고, 오류를 표준화해야 한다. 이는 운영 안정성을 높이는 중요한 요소다.

    1. 장기 로드맵과 기술 부채 에이전트 시스템은 빠르게 변화한다. 단기적으로는 기능 추가가 중요하지만, 장기적으로는 기술 부채 관리가 핵심이다. 아키텍처에서 임시 해결책이 누적되면 결국 혁신 속도가 느려진다.

    A sustainable roadmap balances experimentation with maintenance. Without debt management, every new feature will become harder to ship.

    로드맵은 모델 교체 가능성을 전제로 설계해야 한다. 특정 모델에 과도하게 종속되면 교체 비용이 급격히 증가한다. 따라서 추상화 계층을 마련하는 것이 중요하다.

    1. 비용-품질 트레이드오프 사례 운영 현장에서는 비용과 품질의 균형을 지속적으로 조정해야 한다. 예를 들어 고가 모델을 모든 요청에 사용하면 품질은 높지만 비용은 급증한다. 반대로 저가 모델만 사용하면 응답 품질이 떨어져 사용자 이탈이 늘어난다.

    A practical strategy is to tier requests. High-value or high-risk requests can be routed to a larger model, while routine tasks are handled by smaller ones. This preserves quality where it matters most and saves budget elsewhere.

    또 다른 사례는 context trimming이다. 긴 대화를 모두 유지하면 품질이 좋아질 수 있지만, 비용과 지연이 커진다. 핵심 요약만 남기고 나머지를 제거하는 정책은 비용을 크게 줄이면서도 품질을 일정 수준 유지한다.

    마지막으로, 사후 평가 데이터를 활용해 정책을 개선해야 한다. 예컨대 특정 유형의 질문에서 품질 저하가 발생하면 그 유형에만 예산을 늘리는 방식으로 미세 조정이 가능하다.

    1. 인재와 프로세스 설계 기술이 좋아도 운영할 사람이 없으면 지속 가능한 시스템이 아니다. 에이전트 운영은 ML, 소프트웨어, 보안, 데이터가 함께 협업하는 형태가 된다. 따라서 팀 내 역할 정의와 교육 체계가 명확해야 한다.

    Talent pipelines must be planned. Hiring alone is not enough; continuous training and clear runbooks are required. A well-trained team reduces incident response time and avoids repeated mistakes.

    프로세스 측면에서는 책임과 승인 절차를 간소화해야 한다. 과도하게 복잡한 승인 구조는 실험 속도를 저하시킨다. 반대로 아무런 통제가 없으면 위험이 커진다. 균형 잡힌 프로세스가 운영 효율을 만든다.

    또한 지식 공유 체계가 필요하다. 운영 매뉴얼, 사고 기록, 개선 이력 등이 지속적으로 업데이트되어야 한다. 이런 기록은 새 인력이 빠르게 적응하도록 돕고, 동일한 실수를 반복하지 않게 한다. 최종적으로 조직의 학습 문화가 에이전트 운영을 지속 가능하게 만드는 핵심 요소다.

    마무리 LLM 에이전트 아키텍처는 기술 요소뿐 아니라 운영 정책과 조직 구조까지 포함한다. 잘 설계된 구조는 품질을 안정적으로 유지하고, 비용을 예측 가능하게 만든다. 오늘의 설계가 내일의 운영을 결정한다는 사실을 잊지 말자. 에이전트 시대에는 기술과 조직이 하나의 시스템을 이루며, 둘 다 성숙해야만 장기적 경쟁력을 확보할 수 있다.

    Tags: agent-architecture,llm-backbone,planner-executor,tool-routing,memory-stack,context-budget,state-machine,eval-harness,safety-guards,deployment-topology

  • LLM 에이전트 아키텍처: 멀티에이전트 오케스트레이션과 상태 관리의 실전 설계

    들어가며: 아키텍처를 먼저 세우는 이유

    AI 에이전트를 ‘잘 돌리는’ 팀은 프롬프트보다 구조를 먼저 설계합니다. The architecture is the contract: it defines how agents think, how they act, and how failure is contained. 이 글은 LLM 에이전트 아키텍처를 제품 수준으로 끌어올리는 방법을 다룹니다. 단발성 데모가 아니라 운영 가능한 시스템을 목표로 합니다.

    목차

    1. 문제 정의와 목표
    2. Orchestration vs Runtime 역할 분리
    3. 상태(State)와 메모리 전략
    4. Tool routing and policy gates
    5. 멀티 에이전트 협업 프로토콜
    6. 에러와 회복 설계
    7. 관측성과 피드백 루프
    8. 비용/지연 최적화
    9. 데이터 품질과 신뢰성
    10. 배포와 운영 거버넌스
    11. 실전 설계 템플릿
    12. 마무리

    1) 문제 정의와 목표

    좋은 아키텍처는 ‘무엇을 버릴지’부터 정의합니다. A production agent must be predictable, measurable, and reversible. 즉, 결과가 이상할 때 되돌릴 수 있어야 하고, 언제든 관측 가능해야 합니다. 목표는 “성능 최대화”가 아니라 “일관된 신뢰”입니다. 또한 결과가 기대와 다를 때 누가, 무엇을, 어떻게 수정할지까지 설계해야 합니다.

    2) Orchestration vs Runtime 역할 분리

    Orchestration은 전체 흐름을 결정하고, Runtime은 개별 에이전트의 행동을 실행합니다. Split the brain and the hands. 오케스트레이션 레이어는 라우팅, 정책, 상태 전환을 관리하고, 런타임은 툴 호출/응답/재시도를 담당합니다. 이렇게 분리하면 테스트 가능성과 확장성이 급격히 좋아집니다. 또한 운영에서 문제가 생겼을 때, 원인을 오케스트레이션 vs 런타임으로 빠르게 분리해 디버깅할 수 있습니다.

    LLM agent architecture layers diagram

    3) 상태(State)와 메모리 전략

    상태는 “지금 무엇을 하고 있는가”를, 메모리는 “왜 그렇게 하는가”를 저장합니다. A state machine is the most boring—and therefore the safest—foundation. 상태는 Plan → Act → Observe → Recover 형태로 설계하고, 회복(Recover)은 실패 시점의 증거를 보존하는 단계로 둡니다. 메모리는 단기(working)와 장기(long-term)를 분리하고, 각 저장소의 TTL 정책을 명확히 합니다. 예를 들어 고객 데이터가 포함된 메모리는 자동 만료가 필요하고, 정책 준수 로그는 장기 보관이 필요합니다.

    Agent runtime state machine loop

    4) Tool routing과 Policy Gate

    도구 라우팅은 에이전트 신뢰성의 핵심입니다. A tool router should be deterministic under constraints. 예를 들어 결제, 삭제, 공개 배포 같은 high-risk action은 반드시 정책 게이트를 통과하도록 합니다. 정책 게이트는 규칙 기반 + 모델 기반을 혼합하고, 사람 승인(HITL) 조건을 명시합니다. 이때 승인 단계가 병목이 되지 않도록, 위험도 분류와 자동 승인 기준을 함께 설계합니다.

    5) 멀티 에이전트 협업 프로토콜

    다수의 에이전트가 협업할 때는 역할 계약이 필요합니다. Define roles like “Planner”, “Researcher”, “Executor”, and ensure each has a bounded scope. 협업 프로토콜은 요청-응답뿐 아니라 ‘합의’와 ‘검증’ 단계를 포함해야 합니다. 예: Planner가 초안을 만들면 Validator가 근거 검증을 수행하고, Executor가 실행합니다. 이 구조는 책임 분리를 명확히 하고, 품질 저하를 최소화합니다.

    6) 실패와 회복 설계

    에이전트 시스템의 실패는 복구 비용을 기준으로 분류해야 합니다. Error budget is a design input, not an afterthought. 회복 전략은 (1) 자동 재시도, (2) 대체 경로, (3) 사람 개입 순으로 설계합니다. 또한 실패 로그는 재학습 데이터로 연결되어야 합니다. 사고 대응 시 “원인 분석보다 서비스 복구가 우선”이라는 원칙을 명확히 문서화해야 합니다.

    7) 관측성과 피드백 루프

    Observability is the difference between a demo and a product. 로그/트레이스/메트릭을 분리하고, 각 지표의 소비 주체(운영팀, 제품팀, 모델팀)를 정의합니다. 예: 지연(latency)과 실패율은 운영팀, 모델 품질은 모델팀이 소유합니다. 운영자는 언제든 “why did the agent do this?”를 재현 가능해야 합니다. 이를 위해 이벤트 스키마와 상관관계 키(correlation ID)를 표준화합니다.

    8) 비용과 지연 최적화

    비용 최적화는 모델 선택보다 ‘호출 횟수’ 감소가 더 큰 효과를 냅니다. Cache the right artifacts: tool outputs, intermediate reasoning summaries, and validated facts. 또한 multi-hop reasoning이 필요한 경우, 단계별 요약을 저장하여 재사용합니다. 지연은 95p/99p 기준으로 SLA를 설계합니다. 특정 작업은 비동기로 전환해 체감 지연을 줄이고, 핵심 경로만 고성능 모델을 사용합니다.

    9) 데이터 품질과 신뢰성

    에이전트가 쓰는 데이터는 동일한 규칙으로 검증되어야 합니다. Bad data will always look like a smart model failing. 입력 데이터의 freshness, lineage, and policy compliance를 명시하고, 검증 실패 시 동작을 정의합니다. 신뢰도 스코어를 계산해 의사결정에 반영하는 것도 좋은 전략입니다. 특히 외부 API나 파트너 데이터는 실패 시 fallback 경로를 확보해야 합니다.

    10) 배포와 운영 거버넌스

    릴리스는 모델 버전, 정책 버전, 도구 버전의 조합입니다. Ship slowly, observe quickly. 새로운 버전은 제한된 트래픽과 제한된 도메인에서 먼저 검증합니다. 운영 거버넌스에는 롤백 기준과 운영 승인 프로세스를 포함합니다. 운영팀이 ‘언제든 수동으로 종료할 수 있는 스위치’를 보유해야 합니다.

    11) 실전 설계 템플릿

    아래는 실제 설계 시 고려해야 할 핵심 필드입니다. This is not a checklist; it is a design map.

    • 목표와 책임: agent objective, ownership, exit criteria
    • 상태 정의: state diagram, allowed transitions, recovery rules
    • 도구 라우팅: permitted tools, policy gates, audit logs
    • 데이터 계약: sources, freshness SLA, validation steps
    • 관측성: metrics, traces, dashboards, alert thresholds
    • 운영 정책: cost budget, latency SLO, human override

    12) 마무리

    LLM 에이전트 아키텍처는 “기능 구현”이 아니라 “운영 설계”입니다. The strongest systems are boring on purpose. 예측 가능성과 회복 가능성을 먼저 확보하면, 기능 확장은 그 다음에 자연스럽게 따라옵니다.

    13) 운영 지표와 KPI 설계

    운영 지표는 행동을 바꾸는 도구입니다. Metrics should be few, stable, and actionable. 예를 들어 ‘요청 대비 성공률’만으로는 부족하므로, 고위험 작업의 승인율, 실패 후 복구 시간, 도구 호출 비용을 분리해 봅니다. 지표의 정의와 계산식을 문서로 남기고, 지표가 왜곡될 때 대응 기준을 마련해야 합니다.

    14) 보안·프라이버시 아키텍처

    에이전트는 결국 데이터 접근 권한을 가진 주체입니다. Least privilege is non-negotiable. 민감 데이터는 최소 범위로 접근하며, 작업별 토큰을 분리합니다. 또한 PII 마스킹 정책을 런타임에 적용하고, 마스킹 실패 시 자동 차단하도록 설계합니다. 이때 감사 로그는 변경 불가 저장소에 보관하는 것이 안전합니다.

    15) 평가와 개선 루프

    평가 루프는 모델뿐 아니라 시스템 전체를 대상에 포함해야 합니다. Evaluate the system, not just the model. 정량 평가(성공률, 오류율)와 정성 평가(사용자 만족도, 운영팀 부담)를 함께 봅니다. 개선 작업은 작은 실험으로 쪼개고, 각 실험이 어떤 지표를 움직였는지 기록합니다.

    16) 조직과 운영 프로세스

    아키텍처는 조직 구조를 반영합니다. Architecture follows accountability. 에이전트 운영은 제품팀, 데이터팀, 인프라팀이 교차하는 영역이므로, 책임 소재를 문서로 명확히 해야 합니다. 운영에서 문제가 생겼을 때 “누가 승인했고, 누가 복구했는가”를 추적할 수 있어야 합니다.

    17) 시나리오 기반 설계 심화

    시나리오 설계는 현실적인 실패를 찾아내는 과정입니다. A scenario-driven design helps you find the cracks. 예를 들어, (1) 툴 호출이 실패했을 때, (2) 모델 응답이 규정 위반일 때, (3) 외부 데이터가 stale일 때의 동작을 문서화해야 합니다. 각 시나리오에 대해 실험 로그와 대응 시간을 기록하고, 월 단위로 개선합니다. 또한 humans-in-the-loop 역할을 분리해, 모델 팀은 품질 개선을, 운영 팀은 안정성 확보를 담당하게 합니다. This separation keeps responsibilities clear and prevents silent failures.

    18) 구현 단계와 마이그레이션 전략

    구현은 단계적으로 진행해야 합니다. Start with the smallest viable surface. 1단계는 단일 에이전트 + 제한된 도구, 2단계는 라우팅과 정책 분리, 3단계는 멀티 에이전트 협업과 고급 관측성입니다. 기존 시스템을 대체할 때는 병렬 운영 기간을 확보해 위험을 낮춥니다.

    부록: 운영에서 자주 만나는 함정

    운영 현장에서는 ‘작은 편의’가 큰 장애로 이어집니다. Convenience is the enemy of reliability. 예를 들어, 임시로 만든 프롬프트가 공식 경로에 유입되거나, 테스트용 API 키가 프로덕션에 남아 있는 경우가 있습니다. 또한 에이전트가 스스로 만든 요약을 다시 입력으로 쓰는 루프는 품질 저하를 유발할 수 있습니다. 이런 문제를 방지하려면 입력/출력의 provenance를 기록하고, 신뢰할 수 있는 출처만 재사용하도록 제한해야 합니다.

    부록: 팀 간 커뮤니케이션 가이드

    에이전트 시스템은 여러 팀의 합작품입니다. A clear comms protocol reduces downtime. 장애가 발생하면 운영팀이 즉시 상태를 선언하고, 모델팀은 원인 분석을 담당하며, 제품팀은 사용자 커뮤니케이션을 책임집니다. 모든 팀이 동일한 용어를 사용하도록 용어집을 관리하는 것도 중요합니다. 용어가 다르면 판단 기준이 달라지고 복구 시간이 늘어납니다.

    부록: 장기 운영을 위한 리듬

    장기 운영에서는 리듬이 필요합니다. Reliability is a habit. 주간 리뷰에서는 실패 사례를 공유하고, 월간 리뷰에서는 지표 트렌드를 검토합니다. 분기별로는 아키텍처 변경의 효과를 평가하고, 필요하면 정책 게이트와 라우팅 규칙을 개편합니다. 이렇게 리듬을 유지하면 작은 개선이 누적되어 큰 안정성이 됩니다.

    Tags: 에이전트아키텍처,multi-agent,orchestration,state-machine,tool-routing,context-memory,policy-guardrails,coordination-protocol,failure-recovery,agent-runtime

    부록: 운영 설계 심화 사례

    운영 설계는 결국 ‘사람이 이해할 수 있는 시스템’을 만드는 일입니다. A system that cannot be explained cannot be trusted. 예를 들어 고객 문의가 들어왔을 때, 운영자가 “어떤 에이전트가 어떤 도구를 어떤 순서로 호출했는지”를 3분 안에 설명할 수 있어야 합니다. 이를 위해 실행 로그를 시간순으로 재구성하고, 주요 결정 지점을 요약한 이벤트 타임라인을 제공합니다.

    부록: 정책 게이트의 실전 기준

    정책 게이트는 단일 규칙이 아니라 점수 기반으로 운영하는 것이 효과적입니다. Use a risk score, not a binary switch. 예를 들어 비용 영향, 데이터 민감도, 사용자 영향, 외부 호출 위험도를 각각 점수화한 뒤, 합산 점수에 따라 자동 승인/부분 승인/사람 승인으로 분기합니다. 이때 점수의 가중치는 분기별 리뷰에서 조정합니다.

    부록: 메모리 압축과 증거 보존

    메모리는 비용과 성능을 동시에 좌우합니다. Memory is both fuel and liability. 요약 모델을 활용해 대화 기록을 압축하되, 결정에 영향을 준 핵심 근거는 원문을 보존해야 합니다. 특히 규정 준수 이슈가 있는 도메인에서는 원문 보존이 필수이며, 압축은 별도의 계층으로 분리합니다.

    부록: 멀티 에이전트의 합의 구조

    합의 과정은 비용이 들지만, 운영 안정성에는 큰 이점이 있습니다. Consensus reduces variance. 예를 들어 두 개 이상의 에이전트가 동일 결론에 도달하지 못하면, 시스템은 보수적 결정을 선택하도록 설계할 수 있습니다. 합의 실패율 자체를 지표로 관리하면 품질 저하의 조기 신호가 됩니다.

    부록: 데이터 계약과 품질 게이트

    데이터 계약은 시스템의 기초 인프라입니다. Data contracts prevent silent drift. 입력 데이터의 스키마 변화나 빈도 변화는 즉시 탐지되어야 하고, 변화가 감지되면 에이전트는 안전 모드로 전환됩니다. 안전 모드에서는 제한된 기능만 허용하고, 위험한 도구 호출을 차단합니다.

    부록: 운영 대시보드 설계

    운영 대시보드는 단순한 지표 모음이 아니라 의사결정 도구입니다. Dashboards should tell a story. 주요 지표를 ‘고객 영향’, ‘시스템 안정성’, ‘비용 효율’로 묶어 보여주고, 각 지표가 어떤 정책을 트리거하는지 연결합니다. 이렇게 설계하면 운영팀이 혼란 없이 판단할 수 있습니다.

    부록: 실제 운영에서의 비용 규율

    비용은 종종 성능보다 먼저 한계에 도달합니다. Cost discipline is a feature. 에이전트가 수행하는 작업을 단위 비용으로 분해하고, 각 단위 비용에 상한을 둡니다. 예를 들어 “요약 1건당 평균 0.02달러 이하” 같은 목표를 설정하고, 초과 시에는 자동으로 경량 모델이나 캐시 경로로 전환합니다. 이러한 비용 규율은 장기 운영에서 안정성을 보장합니다.

    부록: 지연(latency)과 사용자 기대 관리

    지연은 기술적 문제이자 심리적 문제입니다. Latency is perception. 사용자에게 진행 상태를 보여주거나, 일부 결과를 먼저 스트리밍하면 체감 지연을 줄일 수 있습니다. 또한 긴 작업은 비동기 큐로 전환하고, 완료 시 알림을 제공하는 방식이 효과적입니다. 운영팀은 지연 분포를 지속적으로 관찰하고, 임계치가 넘어가는 순간 자동으로 경고가 발생하도록 설정합니다.

    부록: 안전 모드와 긴급 중단

    모든 시스템에는 “최소 안전 모드”가 필요합니다. Safe mode is your last line of defense. 안전 모드에서는 필수 기능만 수행하고, 위험도가 높은 도구 호출은 차단합니다. 긴급 중단 스위치는 운영팀이 독립적으로 제어할 수 있어야 하며, 실행 이력은 반드시 기록해야 합니다. 이 과정은 규정 준수와 신뢰 확보에 필수입니다.

    부록: 모델 드리프트 대응

    모델이 동일하더라도 입력 데이터가 바뀌면 결과는 달라집니다. Drift is inevitable. 이를 감지하기 위해 입력 특징의 분포를 모니터링하고, 비정상 변화가 발생하면 자동으로 알림을 보냅니다. 드리프트가 심해지면 모델 교체보다 먼저 정책 게이트를 강화해 리스크를 줄이는 것이 합리적입니다.

    부록: 최종 정리

    결국 에이전트 아키텍처의 목적은 신뢰 가능한 자동화입니다. Trustworthy automation beats flashy demos. 구조가 단단하면 기능 추가는 자연스럽게 따라옵니다. 운영 가능한 설계는 하루아침에 만들어지지 않지만, 한 번 자리 잡으면 지속적으로 개선할 수 있는 기반이 됩니다.

    부록: 운영 인수인계 문서화

    운영은 사람의 손을 타기 때문에 인수인계가 핵심입니다. Handover is part of reliability. 신규 담당자가 하루 안에 시스템을 이해할 수 있도록, 핵심 플로우, 위험 구간, 긴급 대응 절차를 문서화해야 합니다. 또한 인수인계 문서는 정적 문서가 아니라, 실제 사고 후 업데이트되는 ‘살아있는 문서’여야 합니다. 정기적으로 리허설을 진행하면 복구 시간이 줄어듭니다.

    부록: 실험과 운영의 균형

    실험은 혁신을, 운영은 안정성을 보장합니다. Balance innovation and stability. 새로운 기능은 실험 환경에서 충분히 검증한 뒤, 운영 환경에 제한적으로 적용합니다. 운영팀과 실험팀의 피드백 루프를 설계하면, 리스크를 낮추면서도 개선 속도를 유지할 수 있습니다.

    부록: 운영에서의 학습 루프

    운영 중 발생한 모든 사건은 학습 자산입니다. Every incident is a training example. 장애의 원인, 대응 시간, 사용자 영향, 그리고 복구 이후의 개선점을 기록하고, 이를 분기별 리뷰에 반영합니다. 이 학습 루프가 정착되면, 시스템은 시간이 지날수록 더 안정적이고 예측 가능해집니다. 결국 좋은 아키텍처는 ‘학습 가능한 시스템’을 만드는 과정입니다.

    부록: 운영 문화

    운영 문화는 기술보다 오래갑니다. Culture outlives architecture. 실패를 숨기지 않고 공유하는 팀은 더 빠르게 개선합니다. 작은 사고라도 기록하고, 재발 방지 조치를 명확히 남기면 시간이 지날수록 시스템은 견고해집니다. 좋은 운영 문화는 안정적인 에이전트 아키텍처의 마지막 퍼즐입니다.

    부록: 마지막 점검

    마지막 단계에서는 시스템의 복잡도를 줄이는 것이 목표입니다. Simplicity is a safety feature. 불필요한 라우팅 규칙과 중복 도구를 제거하면, 장애 대응이 훨씬 쉬워집니다. 단순함은 신뢰의 기반입니다.

    추가 메모: 운영 체계는 시간이 지날수록 더 단단해져야 합니다. Keep iterating and keep it safe.