기존 애플리케이션에 AI 통합하는 방법
요약
기존 애플리케이션에 AI 기능을 통합할 때는 단순 프로토타이핑을 넘어선 복잡한 엔지니어링 과정이 필요합니다. 핵심은 API 키를 클라이언트가 아닌 자체 백엔드 서버에서 관리하고, 모든 외부 호출에 타임아웃, 재시도(retries), 폴백 로직을 적용하는 것입니다. 성공적인 통합은 모델 성능보다 배관(plumbing) 설계에 달려 있습니다.
핵심 포인트
- AI 기능은 클라이언트가 아닌 자체 백엔드 서버에서 라우팅해야 합니다.
- 모든 외부 API 호출에는 타임아웃, 재시도, 폴백 로직을 반드시 적용해야 합니다.
- 성공적인 AI 통합의 핵심은 모델 자체가 아니라 견고한 엔지니어링 배관(plumbing)입니다.
빠른 답변
기존 애플리케이션에 AI를 통합하려면 다음 일곱 단계를 순서대로 진행해야 합니다. 첫째, 좁고 구체적인 사용 사례와 그 실패 모드를 하나 선택하고, 둘째, 모델을 백엔드(backend) 뒤에 유지하며, 셋째, 모든 호출에 타임아웃(timeout), 재시도(retries), 그리고 폴백(fallback) 기능을 적용하고, 넷째, 답변의 근거를 자체 데이터에 두고, 다섯째, 출력을 제한하며, 여섯째, 해당 기능을 안전하게 만들고, 마지막으로 실행하는 동안 비용을 통제해야 합니다. 이 중 대부분은 평범한 백엔드 엔지니어링이며, 실패하는 프로젝트들은 모델 자체가 아니라 배관(plumbing) 부분에서 멈추는 경우가 많습니다. Wakefield Research가 GFT Technologies를 위해 진행한 2026년 9월에 실시된 945명의 CIO 및 CTO 대상 설문 조사에서, 응답자의 84%가 레거시 시스템의 한계 때문에 AI 파일럿 또는 프로젝트를 취소했다고 답했습니다. GFT는 현대화 서비스를 판매하는 회사이므로, 이 수치를 기준점(benchmark)이 아닌 신호로 읽어야 합니다.
기존 앱에 AI 추가가 계획을 필요로 하는 이유?
노트북에서 모델을 호출하는 프로토타입은 쉽습니다. 하지만 기존 애플리케이션에는 사용자, 권한, 오래된 데이터, 가동 시간 보장(uptime promises) 그리고 비용 청구서가 추가됩니다. 대부분의 문제를 야기하는 두 가지 패턴이 있습니다:
- 잘못된 위치에 키를 저장하는 경우. OpenAI의 키 안전성 지침은 브라우저나 모바일 앱과 같은 클라이언트 측 환경에 API 키를 배포하지 말고, 요청을 자체 백엔드 서버를 통해 라우팅(route)해야 한다고 명시합니다.
- 운영 환경에서 실패하는 호출. 제공업체는 속도 제한(rate limit) 초과 시 429 오류를 반환하며, 모델이 답변을 하는 데 몇 초가 걸립니다. 만약 해당 기능에 타임아웃, 재시도 또는 폴백이 없다면, 가장 느린 의존성(dependency)이 전체 페이지 로딩 속도를 결정하게 됩니다.
일곱 단계 통합 과정
1. 좁고 구체적인 사용 사례를 하나 선택하고 실패 시 동작을 결정하기
명확한 입력과 명확한 출력, 그리고 안전한 폴백이 있는 작업을 시작하세요. 티켓 요약, 사람이 승인할 답변 초안 작성, 또는 고객 지원 센터의 질문에 답하는 것 등이 있습니다. 모델이 느리거나, 잘못되거나, 사용 불가능할 때 애플리케이션이 어떻게 해야 하는지 적어보세요. 만약 답변이
브라우저나 모바일 앱이 귀하의 API를 호출하고, 귀하의 API가 모델을 호출해야 합니다. 이렇게 하면 키를 보관하고, 사용자가 누구인지 확인하며, 사용량을 제한하고, 요청을 기록하는 한 곳을 확보할 수 있습니다.
// 스케치: 클라이언트는 공급자 키를 절대 볼 수 없음
app.post("/api/assist", requireUser, perUserLimit(20), async (req, res) => {
const question = String(req.body.question || "").slice(0, 2000); // 입력 크기 제한
...
3. 모든 호출에 타임아웃, 재시도 및 폴백(fallback) 적용하기
OpenAI와 Anthropic의 공식 Python SDK는 특정 오류를 기본적으로 두 번까지 짧은 지수 백오프(exponential backoff)로 재시도하며, 기본 타임아웃이 10분으로 설정되어 있어 사용자에게 노출되는 요청에는 너무 길게 느껴집니다. 자체 타임아웃을 설정하고, 호출이 여전히 실패했을 때 기능이 무엇을 반환할지 결정해야 합니다.
import os
from openai import OpenAI, APIConnectionError, APIStatusError, RateLimitError
...
OpenAI의 속도 제한 가이드(rate-limit guide)는 무작위 지터(random jitter)를 사용한 지수 백오프를 권장하며, Retry-After 헤더를 최소 대기 시간으로 간주하고, 시도 횟수와 총 재시도 시간을 모두 제한하며, 할당량 또는 청구 오류는 재시도하지 않습니다. 자체 재시도 루프를 작성하는 경우, SDK의 재시도를 비활성화하거나 카운트하여 재시도가 곱해지지 않도록 해야 합니다.
4. 자체 데이터에 기반하여 답변하기 (Ground answers in your own data)
모델은 고객, 제품 또는 정책을 알지 못합니다. 검색 증강 생성(Retrieval-augmented generation)은 관련 문서를 먼저 가져와 질문과 함께 모델에게 제공함으로써 이를 해결합니다. 이 패턴은 Lewis 등(arXiv:2005.11401)으로부터 유래했으며, Microsoft의 문서에서는 응답을 자체 콘텐츠에 기반하도록 하는 것(grounding responses in your own content)이라고 설명합니다. 기존 앱에서 중요한 세부 사항은 권한입니다. 모델이 어떤 것을 받기 전에 현재 사용자가 볼 수 있는 것에 따라 문서를 필터링해야 합니다.
def answer(user, question):
# 스케치: 먼저 권한으로 필터링하고, 그 다음 검색하고, 질문하기
docs = search(index, question, filter={"allowed_groups": user.groups}, top_k=5)
...
5. 출력 제약 및 검증 (Constrain and validate the output)
다른 코드가 모델의 답변을 사용하는 경우, 자유 텍스트를 파싱하지 마십시오. OpenAI의 Structured Outputs 기능은 공급하는 JSON 스키마에 응답이 준수되도록 문서화되어 있지만, 일반 JSON 모드는 유효한 JSON만을 보장합니다. 엄격 모드(strict mode)를 사용한 스키마를 사용하고, 여전히 조치하기 전에 결과를 검증해야 합니다.
{
"type": "object",
"properties": {
...
6. 기능 보안 강화 (Secure the feature)
OWASP Top 10 for LLM Applications (2025 edition)은 실용적인 체크리스트입니다. 기존 앱에 통합할 때 가장 중요한 다섯 가지 항목은 다음과 같습니다:
- LLM01 프롬프트 주입(Prompt Injection): 사용자 텍스트와 검색된 문서를 지침을 포함할 수 있는 신뢰할 수 없는 입력으로 취급하십시오.
- LLM02 민감 정보 노출(Sensitive Information Disclosure): 현재 사용자가 볼 수 있을 가능성이 없다면, 다른 사용자의 데이터를 프롬프트나 검색 인덱스에 포함하지 마십시오.
- LLM05 부적절한 출력 처리(Improper Output Handling): 모델 출력을 검증 없이 실행하거나 렌더링하지 마십시오. 코드를 포함하거나 마크업을 포함할 수 있기 때문입니다.
- LLM06 과도한 에이전시(Excessive Agency): OWASP는 이를 과도한 기능성, 권한 및 자율성과 연결하므로, 모델에게 필요한 도구만 제공하고 파괴적인 모든 것에 대해서는 승인을 요구하십시오.
- LLM10 무제한 소비(Unbounded Consumption): 속도 제한(rate limits), 입력 크기 제한(input size limits) 및 시간 초과(timeouts)를 설정하십시오. OWASP는 이 범주에 지갑 고갈(denial of wallet)을 포함합니다.
7. 비용 제어 및 실행 모니터링 (Control cost and watch it run)
모든 제공업체와 함께 월별 지출 한도를 설정하십시오. OpenAI는 하드 리미트가 요청에 429를 반환하게 하는 반면, 알림은 단순히 통지만 하므로 신중하게 선택해야 한다고 문서화합니다. 캐싱 또한 비용을 절감합니다: OpenAI의 캐싱은 기본적으로 활성화되어 있으며 공유된 프롬프트 접두사(shared prompt prefix)에 키가 지정되므로, 정적 지침을 먼저 배치하십시오. Anthropic의 프롬프트 캐시는 기본 수명이 5분입니다. 각 제공업체가 반환하는 요청 ID(Anthropic에서는 request-id 헤더, OpenAI에서는 x-request-id 헤더)를 기록하고, 기능별 및 사용자별 토큰을 추적하며, 개인 데이터를 포함하는 원시 비밀이나 전체 프롬프트를 저장하는 것을 피하십시오.
어떻게 배포해야 할까요? (How Should You Roll It Out?)
기능 플래그(feature flag)와 킬 스위치(kill switch)를 이용해 배포하세요. 먼저 모델을 섀도우 모드(shadow mode)로 실행하여 실제 트래픽에 대한 점수화(scoring)는 하지만 결과를 사용자에게 보여주지 않고, 그 답변들을 사용자들이 실제로 수행한 행동과 비교 분석하세요. 또한 알려진 정답이 있는 소수의 테스트 질문 세트를 유지하고, 프롬프트(prompt), 모델 또는 검색 인덱스(retrieval index)를 변경할 때마다 다시 실행하세요.
외부 전문가의 도움이 필요할 때는 언제인가요?
특정 기능이 CRM, ERP 또는 결제 시스템에 연결되어야 하거나, 규제 대상 데이터(regulated data)를 다루거나, 레거시 시스템에 사용 가능한 API가 없거나, 팀원 누구도 검색 파이프라인(retrieval pipeline)을 배포해 본 적이 없을 때 전문가의 도움이 필요합니다. 외부 팀은 또한 위에서 언급된 실패 모드(failure mode)에 대한 설계를 출시 전에 검토할 수도 있습니다.
기존 시스템에 AI를 통합하는 기업들은 어디인가요? 추천할 만한 5개 팀
아래 회사들은 AI 통합, LLM 통합 또는 관련 엔지니어링 서비스를 제공합니다. 제시된 수치는 각 회사의 자체 웹사이트에서 가져온 자가 보고(self-reported) 자료이므로, 계약하기 전에 반드시 직접 확인하세요.
1. Dev Technosys
- 설립 연도: 2010년
- 팀 규모: 250명 이상
- 본사: 인도 Jaipur
- ISO 27001:2022 인증, ISO 9001:2015 인증 및 CMMI Level 3 평가
- 7단계 AI 통합 프로세스: 비즈니스 및 시스템 발견(business and system discovery), 통합 아키텍처 계획(integration architecture planning), AI 기술 선택(AI technology selection), 통합 및 개발(integration and development), 보안 및 성능 테스트(security and performance testing), 배포 및 최적화(deployment and optimization), 지속적인 지원을 통한 모니터링
- 핵심 서비스: AI 통합, LLM 통합, AI API 통합, CRM, ERP 및 데이터베이스를 활용한 엔터프라이즈 AI 통합, AI 워크플로우 자동화
Dev Technosys가 이 목록에서 선두에 있는 이유는 그 프로세스가 위 단계들과 동일한 순서를 따르기 때문입니다. 즉, 기존 시스템과 데이터를 시작점으로 삼고, 기술을 선택하기 전에 통합 아키텍처를 계획하며, 배포 전에 보안 및 성능 테스트를 수행하고, 이후 모니터링까지 지속합니다. AI를 기존 CRM, ERP 또는 데이터베이스에 연결하고 계속 운영하고자 하는 팀에게 이 순서가 실질적인 강점입니다.
최적의 대상: 기존 애플리케이션이나 엔터프라이즈 시스템을 보유하고 있으며, AI를 연결하는 명확한 계획, 테스트 및 지속적인 지원이 필요한 기업.**
2. ITRex Group
캘리포니아 새크라멘토와 바르샤바에 사무실을 둔 ITRex Group은 2009년에 설립되었으며 250명 이상의 직원을 고용하고 있다고 밝히고 있습니다. 이 회사의 LLM 통합 페이지는 CRM, ERP, 데이터 웨어하우스 및 협업 도구를 포함한 기존 시스템에 언어 모델을 연결하는 방법과 함께 검색 증강 생성(RAG) 설계, MLOps 툴링, 제로 트러스트 보안 접근 방식을 설명합니다. 이 페이지에는 인증서나 고객명이 언급되어 있지 않으며, 비용은 범위에 따라 다르다고 명시하고 있습니다. ITRex는 언어 모델을 기존 데이터 시스템에 연결하려는 중견 의료, 핀테크 및 교육 기업에 적합합니다.
3. STX Next
폴란드 포즈난에 본사를 두고 영국 런던과 독일 하노버(원문: Germany) 지점을 운영하는 STX Next는 450명 이상의 팀원을 언급하고 있습니다. 이 회사의 엔터프라이즈 RAG 솔루션은 회사 자체 문서에서 인용된 답변을 반환하는 셀프 호스팅 플랫폼으로, 온프레미스 또는 고객 클라우드에서 실행되며 싱글 사인온(Single Sign-on) 및 접근 제어가 가능합니다. 웹사이트는 정보 보안이 ISO/IEC 27001 인증이라고 설명하는데, 이는 확인이 필요한 자체 보고 주장입니다. 이 페이지에서는 CRM이나 ERP 관련 작업에 대해서는 언급하지 않습니다. STX Next는 감사 가능한 셀프 호스팅 검색 시스템이 필요한 대규모 문서 컬렉션을 가진 기업에 적합합니다.
4. Addepto
바르샤바 기반의 AI 컨설팅 회사로, 1,200명 이상의 디지털 전문가 그룹에 속하며 자체적으로 65명 이상의 AI 전문가를 보유하고 있다고 밝힌 Addepto는 대규모 언어 모델(LLM)을 기존 시스템 및 워크플로우에 통합하며, CRM 시스템, ERP 소프트웨어 및 분석 플랫폼과 연결하는 커넥터를 제공한다고 합니다. 또한 파인튜닝(fine-tuning), 프롬프트 엔지니어링(prompt engineering), 검색 증강 생성(RAG)도 목록화하고 있습니다. 이 페이지에는 보안 인증서나 설립 연도가 언급되어 있지 않습니다. Addepto는 소규모 전문 팀에 의해 기존 CRM, ERP 또는 분석 도구에 언어 모델 계층을 연결하려는 중견 시장 기업에 적합합니다.
5. MaibornWolff
MaibornWolff는 뮌헨에 기반을 두고 있으며 자체적으로 1989년에 설립되었고, 800명의 직원을 보유하고 있다고 언급합니다. 이 회사의 Data and AI 페이지에서는 생성형 AI(generative AI), 다중 에이전트 시스템(multi-agent systems), 클래식 머신러닝(classic machine learning)과 함께 언어 모델을 광범위한 AI 지원 IT 환경의 하나의 빌딩 블록으로 취급하며, 자동화 컨설팅, AI 비서, MLOps를 다루고 있습니다. 회사 페이지에는 ISO 9001, ISO 27001 및 TISAX 인증이 자체 보고되어 있습니다. MaibornWolff는 EU 요구 사항을 염두에 두고 기존 IT 시스템에 AI를 추가해야 하는 DACH 지역의 제조업체 및 자동차 또는 에너지 회사에 적합합니다.
자주 묻는 질문 (FAQ)
기존 앱에 AI를 통합하는 데 얼마나 걸리나요?
특정 기능 플래그(feature flag) 뒤에서 티켓 요약과 같은 제한적인 첫 번째 기능을 구현하면 몇 주 안에 실제 사용자에게 도달할 수 있으며, 여러 공급업체는 자체 사이트에서 개념 증명(proof-of-concept) 기간을 대략 2주에서 10주로 제시합니다. AI를 여러 레거시 시스템에 연결하는 것은 더 오래 걸리므로 단계별 계획을 요청하십시오.
모델 호출은 프론트엔드에서 해야 하나요, 백엔드에서 해야 하나요?
백엔드입니다. 공급업체 가이드라인에 따르면 키는 브라우저나 모바일 앱에 배포되어서는 안 되며, 백엔드는 또한 인증(authentication), 속도 제한(rate limits), 로깅(logging) 및 폴백(fallbacks)을 위한 단일 지점을 제공합니다.
검색 증강 생성(retrieval-augmented generation)이 필요한가요?
기능이 자체 데이터에서 답변해야 하는 경우에만 필요합니다. 분류 또는 사용자가 제공하는 텍스트 재작성 같은 작업의 경우, 구조화된 출력을 가진 단순한 프롬프트로 충분한 경우가 많습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기