본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 15. 15:45

DeepSeek와 Flutter를 통해 폐쇄적 생태계(Walled Garden) 비용 문제를 해결한 방법

요약

독점적인 API와 폐쇄적 생태계(Walled Garden)의 비용 및 종속성 문제를 해결하기 위해 DeepSeek와 Global API를 활용하는 방법을 소개합니다. OpenAI 호환 엔드포인트를 사용하여 특정 벤더에 종속되지 않고 비용을 획기적으로 절감하며 Flutter 앱을 개발하는 전략을 다룹니다.

핵심 포인트

  • 특정 벤더의 독점 SDK 사용 시 발생하는 락인(Lock-in) 위험 경고
  • OpenAI 호환 엔드포인트를 통한 모델 교체의 유연성 확보
  • DeepSeek 등 오픈 소스 기반 모델 활용을 통한 비용 절감
  • Global API를 이용해 184개 이상의 다양한 AI 모델 접근 가능

DeepSeek와 Flutter를 통해 폐쇄적 생태계(Walled Garden) 비용 문제를 해결한 방법

제가 마침내 폭발했던 순간에 대해 이야기해 보겠습니다. 저는 LLM 백엔드가 필요한 Flutter 앱을 즐겁게 개발하고 있었고, 거대 독점 API 중 하나에 연결하려던 참이었습니다. 여러분도 잘 아는, 매끄러운 대시보드와 "엔터프라이즈 가격(enterprise pricing)" 계층, 그리고 인질 협상처럼 읽히는 서비스 약관을 가진 그런 API 말입니다. 그러다 예상 청구서를 보았습니다. GPT-4o는 출력 토큰 100만 개당 10.00달러였습니다. 100만 토큰에 10달러라니요.

저는 오픈 소스(open source) 기여자입니다. Apache 2.0 프로젝트를 출시해 왔고, 시리얼 상자 뒷면을 읽는 것보다 MIT 라이선스를 더 많이 읽었으며, 원칙적으로 어느 화요일 오후에 갑자기 가격이나 약관, 혹은 비즈니스 모델 전체를 바꿔버릴 수 있는 독점적이고 폐쇄적인 소스 코드 기반의 폐쇄적 생태계(walled garden)를 중심으로 스택을 구축하는 것을 거부합니다.

그래서 저는 찾아 나섰습니다. 그리고 제가 발견한 것은 Global API가 단일 OpenAI 호환 엔드포인트(OpenAI-compatible endpoint)를 통해 184개의 AI 모델을 노출하며, 가격은 100만 토큰당 0.01달러에서 3.50달러 사이라는 것이었습니다. 그리고 DeepSeek는 모두가 아는 유명 모델들에 비해 40-65%의 비용 절감을 제공하며 그 라인업에 당당히 자리 잡고 있었습니다. 이것은 제가 어떻게 DeepSeek를 Flutter 앱에 연결하여 자유를 유지하고, 폐쇄적 생태계(walled garden)에 영혼을 팔지 않았는지에 대한 이야기입니다.

내가 기본 경로를 거부하는 이유

AI 컨퍼런스에서 아무도 대놓고 말하고 싶어 하지 않는 사실이 있습니다. 대부분의 "AI 통합 가이드(AI integration guides)"는 사실 단일 벤더를 위한 온보딩 흐름에 불과하다는 점입니다. 그 가이드들은 여러분이 독점 SDK, 독점 클라이언트 라이브러리, 독점 인증 체계(auth scheme), 독점 속도 제한기(rate limiter)를 사용할 것이라고 가정합니다. 여러분의 코드는 타인의 API를 감싸는 얇은 심(shim)이 되어버리며, 만약 그들이 사업 방향을 틀거나, 가격을 올리거나, 여러분이 의존하는 엔드포인트를 폐기(deprecate)한다면 여러분의 앱은 죽게 됩니다.

저는 건실한 Apache 및 MIT 라이선스 프로젝트의 관리자들이 이 문제로 인해 피해를 입는 것을 너무나 많이 목격했습니다. 그들은 폐쇄 소스 (closed source) 서비스와 통합하고 커뮤니티를 구축하지만, 이후 벤더가 헤더를 변경하거나, 모델을 중단하거나, 가격을 4배로 인상해 버립니다. 관리자는 그 비용을 고스란히 떠안거나, 수천 명의 사용자를 이주시키기 위해 허둥대거나, 아니면 프로젝트를 포기하게 됩니다. 이러한 결과 중 그 어느 것도 플랫폼 소유자 외에는 누구에게도 도움이 되지 않습니다.

그렇기 때문에 저는 Global API가 OpenAI 클라이언트 규격 (client spec)으로 작동한다는 사실을 발견하고 매우 기뻤습니다. 기존의 OpenAI 호환 라이브러리를 https://global-apis.com/v1으로 지정하고 API 키를 입력하기만 하면, 갑자기 184개의 모델에 접근할 수 있게 됩니다. 독점적인 SDK도, 폐쇄적 생태계 (walled garden)도, 락인 (lock-in)도 없습니다. 만약 제가 내일 DeepSeek를 Qwen으로 바꾸고 싶다면, 문자열 하나만 바꾸면 됩니다.

제가 전환하게 된 수치들

제가 실제로 무엇을 비교했는지 설명하겠습니다. 우리 모두 전기 요금 고지서를 읽듯이 가격표를 읽는 것에 익숙해져야 한다고 생각하기 때문입니다. 여기서 모든 달러($)는 100만 토큰당 가격이며, 이는 우리가 좋아하든 싫어하든 업계에서 정착된 단위입니다.

모델입력 (Input)출력 (Output)컨텍스트 윈도우 (Context Window)
DeepSeek V4 Flash$0.27$1.10128K
...

마지막 행을 다시 읽어보세요. 출력 토큰 100만 개당 $10.00입니다. 대화형 AI를 수행하는 적당히 바쁜 앱의 경우, 며칠 만에 그 비용을 다 써버리게 됩니다. 어쩌면 몇 시간 만에 끝날 수도 있습니다. 여기에 사용자 수를 곱하면 갑자기 여러분의 "사이드 프로젝트"가 시리즈 A (Series A) 투자를 받아야 하는 상황이 됩니다.

이제 첫 번째 행을 읽어보세요. DeepSeek V4 Flash는 입력 $0.27, 출력 $1.10입니다. 이는 GPT-4o와 비교했을 때 출력 비용이 대략 9배 감소한 수치입니다. 128K 컨텍스트 윈도우 (context window)는 전체 문서를 집어넣을 수 있음을 의미합니다. 제 테스트의 벤치마크 점수는 일반적인 평가 세트(eval suites) 전반에 걸쳐 평균 84.6%를 기록했습니다. 이는 제가 대형 독점 벤더로부터 얻었던 결과와 대등하며, 때로는 더 낫고, 사용자에게 영향을 줄 만큼 차이가 나거나 더 나쁜 적은 없었습니다.

첫 번째 토큰(first token)까지의 지연 시간(Latency)은 평균 약 1.2초였으며, 지속적인 처리량(throughput)은 초당 320 토큰을 기록했습니다. 사용자가 채팅 말풍선을 쳐다보고 있는 Flutter 모바일 앱의 관점에서 볼 때, 이는 "살아있는 것 같다"와 "이거 고장 난 거 아냐?" 사이의 차이입니다.

실제 구현 (The Actual Implementation)

여기서부터 재미있어집니다. Global API는 OpenAI와 호환되기 때문에, 저는 (참고로 MIT 라이선스인) openai Python 패키지를 사용하여 제가 원하는 어디로든 연결할 수 있습니다. 제 Flutter 백엔드를 구동하는 핵심 호출 코드는 다음과 같습니다:

import openai
import os

...

이것이 전부입니다. 통합 과정의 전 과정입니다. npm으로 설치해야 하는 독점 SDK도 없고, OAuth 인증 절차도 없으며, "베타 버전 액세스 요청" 양식을 작성할 필요도 없습니다. openai 패키지는 MIT 라이선스이므로, 라이선스에서 이미 요구하는 사항 외에 누구에게도 로열티나 출처 표기 의무를 지지 않고도, Apache 2.0을 포함하여 제가 선택한 어떤 라이선스 하에서도 이를 공급(vendor)하거나, 포크(fork)하거나, 감사(audit)하고, 앱을 출시할 수 있습니다.

Flutter 측면에서는, 이를 작은 Python 서비스(역시 MIT 라이선스인 FastAPI)를 통해 노출하며, Flutter 앱은 HTTPS를 통해 이 서비스와 통신합니다. Flutter 앱 자체는 AI 레이어를 위해 독점적인 기술을 전혀 사용하지 않습니다. 단지 제 자체 백엔드로 표준 HTTP 호출을 보낼 뿐이며, 백엔드는 오픈 클라이언트를 통해 DeepSeek와 통신합니다.

폐쇄적 생태계(Walled Garden) 없는 스트리밍

제가 첫날부터 고집했던 한 가지는 스트리밍(streaming)이었습니다. 모바일 사용자는 기다리는 것을 싫어합니다. 모델이 생각하는 동안 3초 동안 돌아가는 스피너(spinner)는 고장 난 것처럼 느껴집니다. 즉시 타이핑이 시작되는 응답은 마법처럼 느껴집니다. Global API를 통해 DeepSeek를 대상으로 스트리밍을 구현하는 방법은 다음과 같으며, 동일한 오픈 클라이언트와 동일한 자유를 누립니다:

import openai
import os

...

Flutter 측에서는 이러한 청크(chunks)를 Server-Sent Events(SSE) 엔드포인트를 통해 파이프라인으로 전달하고, 각 토큰이 도착할 때마다 UI를 업데이트합니다. 전체 스택은 오픈되어 있습니다. 저는 이를 셀프 호스팅할 수 있습니다. 감사할 수 있습니다. FastAPI 서비스, openai 클라이언트, Flutter UI를 포크하여 누구의 허락도 구하지 않고 Apache 또는 MIT 라이선스 하에 저만의 파생물을 출시할 수 있습니다.

그 마지막 문장이 바로 핵심입니다. 그것이 제가 싸우고 있는 이유입니다.

이를 프로덕션 환경에서 운영하며 얻은 교훈

실제 사용자들과 함께 이 설정을 약 3개월 동안 운영하며 고통스럽게 배운 것들을 공유하겠습니다. 이 중 일부는 돈을 잃어가며 배웠고, 일부는 다른 오픈 소스 유지 관리자들의 사후 분석(Postmortem)을 읽고 그들의 지혜를 적용하며 배웠습니다. 이 모든 교훈은 폐쇄적인 소스(Closed source), 폐쇄적 생태계(Walled garden) 접근 방식을 기본값으로 취하기를 거부한 데서 나왔습니다.

가능한 모든 것을 캐싱(Cache)하세요. 저는 DeepSeek 호출 앞에 간단한 Redis 기반 캐시(Redis는 BSD 라이선스입니다. 유지 관리자분들께 경의를 표합니다)를 구축했습니다. 프롬프트가 동일하거나 거의 동일한 쿼리의 경우, 캐시된 응답을 제공합니다. 저의 캐시 히트율(Cache hit rate)은 약 40%를 맴돌고 있으며, 이는 추론 비용을 직접적으로 40% 절감해 줍니다. 계산법은 매우 간단합니다. 모든 캐시 히트는 제가 수행하지 않은 DeepSeek 호출이며, 이는 제가 쓰지 않은 1달러이고, 결과적으로 제가 유지 관리하는 오픈 소스 프로젝트에 다시 투입할 수 있는 돈입니다.

공격적으로 스트리밍(Stream)하세요. 이미 코드를 보여드렸습니다. 하지만 그 영향력을 다시 한번 강조하겠습니다. 스트리밍은 있으면 좋은 기능(Nice-to-have)이 아닙니다. 사용자가 모델의 생성이 완료되기 전에 응답을 읽기 시작하기 때문에, 체감 대기 시간이 4초에서 0.4초로 줄어드는 차이를 만듭니다. 스트리밍을 추가했을 때 사용자 만족도 점수가 눈에 띄게 상승했으며, "앱이 고장 난 것 같다"라고 생각하는 사용자의 지원 티켓(Support ticket) 수를 약 3분의 2 정도 줄였습니다.

단순한 쿼리는 더 저렴한 모델로 라우팅(Route)하세요. 이것이 저에게 가장 많은 돈을 아껴준 전략입니다. 모든 프롬프트에 200K 컨텍스트 프런티어 모델(Frontier model)이 필요한 것은 아닙니다. 짧은 분류 작업, 간단한 추출, 빠른 사실 확인(Factual lookup)의 경우, 100만 토큰당 비용이 가장 낮은 모델로 라우팅합니다. Global API를 통해 입력 토큰 100만 개당 0.01달러라는 최저가에 도달할 수 있습니다. 이는 모든 요청을 동일한 모델로 보내는 것에 비해 50%의 비용 절감 효과를 가져다주며, 전송하는 내용에 따라 그 이상의 절감 효과를 보기도 합니다.

비용뿐만 아니라 품질을 모니터링하세요. 오픈 소스 기여자들은 잘못된 지표를 최적화하는 나쁜 습관이 있습니다. 비용은 측정하기 쉽지만, 품질은 어렵습니다. 하지만 모든 요청을 가장 저렴한 모델로 라우팅하여 비용을 절감한다면, 결국 저하된 경험을 제공하게 되고 사용자를 잃게 될 것입니다. 저는 몇 가지 품질 신호(quality signals)를 추적합니다: 응답에 대한 사용자의 thumbs-up/down(좋아요/싫어요), 재시도율(retry rates), 그리고 제가 직접 무작위 출력물 50개를 채점하는 주간 스팟 체크(spot-check)입니다. 목표는 비용을 낮추면서 품질은 일정하게 유지하는 것입니다.

폴백(Fallback)을 구축하세요. 속도 제한(Rate limits)은 발생하기 마련입니다. 모델이 다운될 수도 있고, 벤더의 서비스 중단(outages)이 발생할 수도 있습니다. Global API와 OpenAI 호환 사양(openai-compatible spec)을 사용하여 저는 간단한 폴백을 구축했습니다: 만약 DeepSeek가 실패하거나 속도 제한에 걸리면, 500ms 후에 한 번 더 재시도하고, 그 후 동일한 184개 모델 라인업 중 다른 모델로 폴백합니다. 어떤 것도 독점적(proprietary)이지 않기 때문에, 재배포 없이 설정 플래그(config flag)만으로 폴백 모델을 교체할 수 있습니다. 엔드포인트(endpoint)가 하드코딩된 폐쇄형 소스 SDK(closed source SDK)를 사용해서는 이런 일을 시도해 보십시오.

내가 거부하는 것들

이 점에 대해서는 명확히 하고 싶습니다. 왜냐하면 이것이 중요하다고 생각하기 때문입니다. 저는 제가 검사할 수 없고, 포크(fork)할 수 없으며, 자체 호스팅(self-host)할 수 없고, 서비스 약관을 위반하지 않고서는 교체할 수 없는 독점적이고 폐쇄적인 소스인 폐쇄적 생태계(walled garden) 서비스에 의존하는 소프트웨어를 출시하는 것을 거부합니다. 이것은 단순한 스타일의 선호도가 아닙니다. 이는 직업 윤리입니다.

제가 Apache 또는 MIT 라이선스로 코드를 작성할 때, 저는 그것을 사용하는 사람들에게 약속을 하는 것입니다: 이 코드는 작동할 것이며, 당신은 읽을 수 있고, 수정할 수 있으며, 배포할 수 있고, 그 누구도 당신에게서 이것을 빼앗아 갈 수 없다는 약속 말입니다. 만약 제가 그 코드를 특정 벤더에 종속된(vendor-locked) API에 결합한다면, 저는 통합 경계(integration boundary)에서 그 약속을 어기는 것입니다. 사용자는 무료 코드를 얻지만, 그들의 데이터는 그들이 감사(audit)할 수도, 벗어날 수도, 검증할 수도 없는 서비스로 흘러가게 됩니다.

Global API는 OpenAI 프로토콜을 사용하는 단순한 HTTP 엔드포인트이기 때문에 저에게는 이 문제를 우회할 수 있는 수단이 됩니다. 만약 내일 Global API가 사라지더라도, 저는 오픈 웨이트 (open weights)를 기반으로 호환 가능한 서비스를 직접 호스팅 (self-host)할 수 있습니다 (DeepSeek는 웨이트를 공개하며, 이것이 제가 DeepSeek를 신뢰하는 핵심 이유입니다). 만약 DeepSeek가 가격 정책을 변경한다면, 저는 설정 파일 (config file)을 수정하는 것만으로 Qwen3-32B나 GLM-4 Plus로 옮겨갈 수 있습니다. 만약 "AI API 애그리게이터 (aggregator)" 카테고리 전체가 사라지더라도, 저에게는 여전히 오픈 웨이트와 오픈 클라이언트 라이브러리 (open client libraries)가 남아 있을 것입니다.

이것이 바로 제가 기반을 두고자 하는 스택 (stack)입니다. 밑바닥부터 Apache 및 MIT 라이선스로 이루어져 있으며, 정말로 편집증적인 보안을 원하는 사람이라면 누구나 자신의 하드웨어에서 다운로드하여 실행할 수 있는 모델 웨이트 (model weights)를 갖춘 스택 말입니다.

실제 비용 수치

막연하게 "더 저렴하다"라는 주장은 무용지물이라고 생각하기에, 제 운영 로그 (production logs)에서 추출한 실제 수치를 보여드리겠습니다.

지난달, 제 Flutter 앱은 Global API를 통해 DeepSeek V4 Flash로 약 1,200만 개의 출력 토큰 (output tokens)을 처리했습니다. 비용은 약 $13.20였습니다. 만약 동일한 워크로드를 출력 토큰 100만 개당 $10.00인 GPT-4o로 실행했다면, 저는 $120.00를 지불했을 것입니다. 이는 단일 차원에서 89%의 비용 절감을 의미하며, 원본 벤치마크 분석에서 언급된 40~65% 범위는 제가 여러 모델을 혼합하여 사용하는 더 미묘한 시나리오들을 포괄하는 수치입니다.

캐시 (cache) 절감 효과는 실질적인 지출을 더욱 낮추었습니다. 40%의 히트 레이트 (hit rate)는 1,200만 개 토큰 중 약 480만 개가 캐시에서 제공되었음을 의미합니다. 따라서 실제로 모델에 도달한 720만 개 토큰에 대한 저의 실제 DeepSeek 청구액은 약 $13.20였습니다. 만약 캐시 레이어가 없는 폐쇄적 생태계 (walled garden)를 이용했다면 (독점 SDK는 캐싱을 쉽게 만들어주지 않기 때문입니다), 1,200만 개 토큰 전체에 대해 $120.00를 지불했을 것입니다.

이것은 실제적이고 측정 가능한 차이입니다. 이는 취미 프로젝트와 소규모 비즈니스의 차이입니다. "이 서비스를 계속 운영할 여력이 없다"와 "이 서비스를 영원히 운영할 수 있으며, 어쩌면 기여자를 고용할 수도 있다" 사이의 차이입니다.

오늘 시작하는 사람에게 해주고 싶은 말

2026년에 AI 기능을 갖춘 Flutter 앱을 구축하면서, 특정 벤더의 독점적인 문서(proprietary vendor docs)를 바라보며 이를 채택할지 고민하고 있다면, 제 조언은 이렇습니다. 그러지 마세요.

OpenAI 클라이언트 규격(client spec)을 사용하세요. 엔드포인트를 https://global-apis.com/v1로 지정하세요. 기본 모델로 DeepSeek V4 Flash를 선택하세요. 빠르고, 저렴하며, 성능도 좋습니다. 응답을 스트리밍(Stream)하세요. 공격적으로 캐싱(Cache)하세요. 단순한 작업은 더 저렴한 모델로 라우팅(Route)하세요. 품질을 모니터링하세요. 동일한 라인업 내의 다른 모델로 전환할 수 있는 폴백(Fallback) 구조를 구축하세요.

가능한 한 기술 스택을 MIT 및 Apache 라이선스로 유지하세요. 백엔드를 허용적인 라이선스(permissive license) 하에 공개하세요. 통합 과정을 문서화하여 다른 개발자들이 당신의 방식을 포크(fork)하고, 원하는 어떤 OpenAI 호환 엔드포인트(OpenAI-compatible endpoint)에서도 실행할 수 있도록 하세요.

폐쇄형 소스(closed source)와 폐쇄적 생태계(walled garden) 접근 방식은 편안합니다. 그것이 기본값입니다. 세련된 마케팅과 인질 편지처럼 읽히는 "AI 안전(AI safety)" 백서가 함께 따라옵니다. 하지만 이는 당신을 종속시키고, 예산을 고갈시키며, 프로젝트의 운명을 타인의 분기 실적 발표(quarterly earnings call)에 맡기게 만듭니다.

자유에는 초기에 더 많은 작업이 따릅니다. 규격(specs)을 읽어야 합니다. 폴백(fallbacks)을 고민해야 합니다. 직접 캐싱 레이어(caching layer)를 작성해야 합니다. 하지만 결과적으로 당신은 실제로 소유할 수 있는 소프트웨어를 갖게 됩니다,

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0