← tech atlas2026.10.25 · 첫 번째 검토
REVIEW 001 / AI SERVICE DESIGN

화면에 보이는 답과
에이전트가 이어갈 상태는 다릅니다.

AI 서비스 설계 중심 · 핀테크 적용 질문 · Java/Spring 부록
원문 게시 2026.09.25 · 최근 6개월 조건 통과 · 사용자 검토용 초안

오늘은 결과를 보며 기준을 맞추는 단계입니다. 자동 실행과 외부 블로그 공개 게시는 하지 않았습니다. 아래 애니메이션은 개념 시연이며 MP4 쇼츠는 아닙니다.

짧은 시각화 · 한 문장에 가려진 실행 흐름

가상의 주문 조회 예시입니다. 이벤트가 차례로 기록되는 모습을 보여줍니다.

① 도구 호출call_id: lookup-a
② 조회 결과call_id: lookup-a
③ 사용자 설명display_text
주문 조회를 요청합니다. 이 호출을 식별할 ID를 기록합니다.
1 / 3

AI 에이전트의 대화, 문장만 저장해도 괜찮을까요?

AI에게 주문을 확인해 달라고 부탁했는데, 답변이 나오기 직전에 연결이 끊겼다고 해볼까요? 다시 접속하면 AI는 어디서부터 일을 이어가야 할까요?

우리는 앞서 어떤 말을 했는지 기억하면 된다고 생각하기 쉽습니다. 그런데 AI가 중간에 도구를 써서 무언가를 처리했다면, 대화 내용만으로는 부족할 수도 있습니다. 오늘은 이 차이를 주문 조회 이야기로 살펴보겠습니다.

말을 기억하는 것과 일을 기억하는 것

Spring 팀의 최근 글을 보면, 텍스트와 도구 호출·결과를 순서가 있는 여러 조각으로 표현하는 방식을 소개하고 있습니다. AI의 대화를 문장뿐 아니라 작업의 흐름으로 다뤄보려는 시도로 읽힙니다. 뒤의 표현은 발표를 읽고 제가 붙인 해석입니다. 참고한 Spring 팀의 글 — 2026.09.25 ↗

이름이나 버전을 외울 필요는 없습니다. “무슨 말을 했는가”와 “어디까지 일을 했는가”를 구별해 보자는 관점만 가져가면 됩니다.

주문을 조회하는 에이전트를 떠올려 봅시다

이제부터는 위 발표를 이해하기 위해 제가 구성한 가상 예시입니다. Spring 팀이 실제로 운영하는 주문 시스템을 소개하는 것은 아닙니다.

고객이 “제 주문이 어디까지 왔나요?”라고 묻는다고 해보겠습니다. 에이전트는 다음과 같이 움직일 수 있습니다.

고객의 질문
  → 주문 조회 도구 호출 A
  → 호출 A의 결과 수신
  → 고객에게 결과 설명

채팅창에서는 마지막 설명이 가장 중요하겠지요. 하지만 개발자가 문제를 찾으려면 어떤 조회 결과를 근거로 답했는지도 알아야 합니다. 다른 대화에서 이 작업을 이어가려면, 사용 중인 모델·공급자가 요구하는 입력 형식도 맞춰야 하고요.

그런데 이 과정을 전부 “주문을 조회했습니다. 배송 중입니다.”라는 문장으로만 남기면 어떨까요? 읽기는 편하지만, 어느 요청에서 나온 결과인지 이 문장만으로 확인하기는 어렵습니다.

그래서 여기서 한 가지를 구분해 두면 좋습니다. 사용자에게 보여주는 요약과 실행을 확인하기 위한 기록은 역할이 다릅니다.

기록을 설계할 때는 세 가지를 물어보세요

첫째, 이 결과는 어떤 호출의 답일까요?

두 주문을 동시에 조회했는데 결과가 반대 순서로 돌아올 수도 있습니다. 이때 단순히 먼저 도착한 결과를 첫 번째 주문의 답으로 취급하면 곤란하겠지요.

내부 기록에 호출을 식별하는 ID를 두고, 결과에도 같은 ID를 연결해 보는 겁니다. 그러면 도착 순서와 별개로 어떤 호출의 결과인지 확인할 근거가 생깁니다.

둘째, 어디까지 끝난 작업일까요?

조회는 성공했는데 고객에게 설명을 만드는 도중 연결이 끊겼다고 해보겠습니다. 다시 시작할 때 조회부터 할지, 이미 받은 결과로 설명만 만들지 판단해야겠지요.

문자열을 이어 붙이는 것과 작업의 시작·완료를 기록하는 것은 다릅니다. 장애 후 재개가 필요한 서비스라면 어느 단계까지 끝났는지도 함께 설계해 보세요.

셋째, 화면용 기록과 실행용 기록을 꼭 같게 만들어야 할까요?

화면에는 간결한 설명이 좋습니다. 반면 실행을 점검하려면 식별자나 상태 같은 정보가 필요할 수 있습니다. 저장할 정보와 다음 모델 요청에 보낼 정보도 반드시 같을 필요는 없습니다.

아래는 이 차이를 생각해 보기 위한 내부 이벤트 예시입니다. 실제 SDK나 공급자 API의 요청 형식은 아닙니다.

{
  "conversation_id": "demo-conversation",
  "events": [
    {"seq": 1, "kind": "tool_call", "call_id": "lookup-a", "tool": "lookup_order"},
    {"seq": 2, "kind": "tool_result", "call_id": "lookup-a", "status": "success"},
    {"seq": 3, "kind": "display_text", "text": "주문 상태를 확인했습니다."}
  ]
}

이 정도만으로 대화 복원 기능이 완성되는 것은 아닙니다. 입력과 결과의 본문, 공급자별 상태, 보관 방식 등은 별도로 정해야 합니다. 지금은 “문장 외에 무엇을 기록해야 할까?”를 생각하는 출발점으로 봐주세요.

환불 에이전트라면 무엇을 더 생각해야 할까요?

이번에는 가상의 핀테크 적용 예시로 조금 확장해 보겠습니다.

조회와 달리 환불은 실제 업무 상태를 바꿉니다. 대화를 복원했다는 이유만으로 환불 실행까지 다시 해서는 안 되겠지요. AI의 대화 기록과 업무 시스템의 처리 결과를 연결하되, 이미 처리한 요청인지 확인하는 경계가 따로 필요합니다.

여기서 대화 이력을 잘 보존하는 것과 같은 업무를 두 번 실행하지 않는 것은 다른 문제라는 점을 기억해 두면 좋겠습니다. 앞에서 살펴본 대화 기록만으로 이 문제까지 해결되는 것은 아니겠지요. 실제 서비스를 만든다면 따로 고민해야 할 부분입니다.

우리 서비스에서도 작은 실험을 해볼 수 있습니다

거창하게 시스템을 바꾸기 전에, 저장된 대화 한 건을 꺼내 다음 질문을 해보세요.

이 질문에 답해 보면 지금 저장하는 것이 단순한 채팅 기록인지, 실행을 점검하고 이어갈 수 있는 기록인지 조금 더 분명해질 겁니다.

부록: 직접 만들어보고 싶다면

Java/Spring 같은 프레임워크를 쓰더라도 처음에는 작은 실험이면 충분합니다. 도구 호출 두 건과 결과를 기록하고, 프로그램을 껐다 켠 뒤에도 어느 결과가 어느 호출의 것인지 찾아보세요.

그다음에는 결과 하나를 두 번 넣어보거나 순서를 바꿔보는 겁니다. 무엇이 헷갈리는지 관찰하면, 왜 문장 외의 기록이 필요한지도 더 쉽게 이해할 수 있습니다.


출처와 읽는 범위

원문 전체를 번역한 글이 아니라, 확인한 변화에 설명을 덧붙인 검토용 초안입니다.

첫 실행 검토 기록 — 2026-10-25

상태: 사용자 검토 대기. 자동 실행·블로그 공개 게시·영상 업로드는 하지 않음.

산출물: 블로그 Markdown 초안 1개와 짧은 애니메이션 설명. MP4 영상은 이번에 만들지 않음.

적용한 기준 v0.1

오늘의 선택

Spring AI 2.1.0-M1 ↗ · 2026-09-25 · 채택 · AI 대화 이력·도구 실행 기록이라는 서비스 설계 문제로 풀 수 있음. 시험판 도입 소개가 아니라 설계 해설로 재구성

우아한형제들 자동승인 개선 ↗ · 2026-09-23 · 후속 후보 · 상태 조정·처리 지연·부하 관리에 강점. 오늘은 사용자가 우선한 AI 서비스 설계 주제를 먼저 선택

Spring AI 2.0 GA ↗ · 2026-06-12 · 이번 회차 제외 · 기간 조건은 통과하지만 첫 결과에서 다른 릴리스 소개를 겹쳐 만들 이유가 부족함. 검색 단계 검토이며 본문 심층 검토는 하지 않음

GeekNews 현재 목록 ↗ · 연결 원문별 상이 · 탐색만 · 후보 발견에 활용. 연결 원문과 게시일을 검증하지 않은 토픽은 콘텐츠 근거로 사용하지 않음

이번 실행은 목록 전체 21곳의 전수조사가 아니다. Spring·우아한형제들 원문과 긱뉴스 목록을 중심으로 기준을 조정하기 위한 첫 샘플을 만들었다. 게시일 검증 완료한 채택 글은 1개다.

검토할 부분

피드백은 이 채팅에 남긴다. 사이트에 별도의 서버 피드백 저장 기능은 없다.

추가로 확정한 제작 방식

검토 후 이 채팅에 “이 주제는 좋다 / 더 실무적으로 / 짧게 / 쇼츠가 낫다”처럼 피드백을 남겨 주세요. 자동 실행은 결과 확인 후 별도로 설정합니다.