iii 소개
백엔드 시스템은 첫 비즈니스 로직 한 줄을 쓰기도 전에 이미 여러 조각으로 나뉘어 있습니다. 큐, 크론, HTTP 엔드포인트, 상태 저장소, 관찰성(observability), 에이전트, 샌드박스가 각각 별도의 연동 방식을 요구하고, 새 도구를 하나 붙일 때마다 별도의 재시도 설정과 트레이스, 타임아웃을 다시 맞춰야 합니다. iii는 이렇게 흩어진 연동 작업을 하나의 살아 있는 시스템 표면(live system surface)으로 모으는 것을 목표로 하는 런타임입니다.
iii의 핵심 발상은 시스템이 할 수 있는 모든 일을 워커(Worker), 함수(Function), 트리거(Trigger)라는 세 가지 원시 요소(primitive)로 환원하는 것입니다. 서비스를 워커로 등록하면 그 워커가 제공하는 함수가 공용 카탈로그에 올라가고, 다른 모든 워커가 즉시 그 함수를 호출할 수 있습니다. 개발팀은 함수를 등록하고 트리거를 선언하며, 플랫폼팀은 관찰성이나 큐 같은 공용 워커를 발행합니다.

특히 주목할 부분은 에이전트가 개발자와 똑같은 인터페이스 를 쓴다는 점입니다. 어떤 작업에 시스템이 아직 갖추지 못한 기능이 필요하면, 에이전트는 워커를 추가하고 그 함수를 발견해 호출한 뒤 무슨 일이 일어났는지 트레이스로 되짚어 볼 수 있습니다. 개발자가 새 기능을 붙이는 방식과 에이전트가 시스템을 확장하는 방식이 분리되어 있지 않습니다. iii의 엔진은 Rust로 작성되었고, Node.js와 Python, Rust, Go용 SDK를 함께 제공합니다.
iii의 세 가지 원시 요소: 워커, 함수, 트리거
iii는 "워커 · 함수 · 트리거가 전체 사고 모델의 전부" 라고 설명합니다. 세 요소의 역할은 다음과 같습니다.
-
워커(Worker): iii 엔진에 등록되어 트리거와 함수를 등록하는 프로세스입니다. TypeScript로 작성한 API 서비스, Python 데이터 파이프라인, Rust 마이크로서비스가 모두 워커가 될 수 있고, 기존 기능에 몇 줄의 코드만 더하면 워커로 바뀝니다. 워커는 실행 중에 다른 워커를 만들 수도 있어서, 에이전트와 애플리케이션이 시스템이 돌아가는 도중에도 기능을 확장할 수 있습니다.
-
함수(Function):
content::classify,orders::validate처럼 안정적인 식별자를 가진 작업 단위입니다. 입력을 받아 일을 수행하고 필요하면 출력을 돌려주며, 항상 어떤 워커 안에 존재합니다. -
트리거(Trigger): 함수를 실행시키는 모든 계기를 가리킵니다. 함수 직접 호출, HTTP 엔드포인트, 크론 스케줄, 큐 구독, 상태 변경, 스트림 이벤트 등이 모두 트리거가 될 수 있습니다. 트리거는 선언적이어서, 워커가 "이 함수는 이런 일이 생기면 실행된다" 고 정의해 두면 라우팅과 직렬화, 전달은 iii가 처리합니다.
시스템이 할 수 있는 일을 이 세 가지에 대응시키는 것만으로, iii는 구성(compose)과 관찰(observe)을 같은 모델 위에서 다룹니다. 기능을 더하는 것은 iii worker add, 시스템을 구성하는 것은 함수를 호출하는 것, 관찰하는 것은 트레이스를 여는 것으로 정리됩니다.
iii가 바꾸는 연동 방식
기존 방식에서 새 관찰성 도구를 도입하면 수많은 연동 작업이 따라오고, 새 에이전트 하니스나 큐를 붙일 때마다 벤더 평가와 도입, 수 주에 걸친 통합 과정이 반복됩니다. iii는 이 과정을 워커 추가 명령으로 대체합니다.
iii worker add observability
iii worker add queue
워커가 추가되면 그 즉시 시스템 안에 들어와 트레이스가 잡히고 호출 가능한 상태가 됩니다. 새로 등록된 워커는 라이브 카탈로그에 합류하고, 다른 모든 워커에 통지되어 곧바로 호출될 수 있습니다. 현재 이용 가능한 워커 목록은 iii의 워커 카탈로그에서 확인할 수 있습니다.

iii로 에이전트가 시스템을 확장하는 방식
iii에서 에이전트는 별도의 특별한 통로를 쓰지 않습니다. 작업에 필요한 기능이 없으면 에이전트가 직접 워커를 추가하고, 그 워커가 노출하는 함수를 발견해 호출하며, 실행 결과를 트레이스로 확인합니다. 이는 개발자가 CLI로 워커를 붙이고 함수를 호출하는 것과 동일한 흐름입니다.
iii는 에이전트가 읽을 수 있는 참조 자료(agent skills)도 함께 제공합니다. 다음 명령으로 HTTP 엔드포인트, 큐, 크론, 상태, 스트림, 커스텀 트리거 등 iii의 각 원시 요소에 대한 참조 자료를 설치할 수 있습니다.
npx skills add iii-hq/iii/skills
워커와 함수, 트리거, 큐, 트레이스, 로그, 실시간 상태를 들여다보는 용도로는 iii 콘솔(console)이 따로 제공됩니다. 콘솔은 React와 Rust로 작성된 개발·운영용 도구입니다.
iii 설치와 빠른 시작
먼저 iii 명령은 설치 스크립트로 받습니다.
curl -fsSL https://install.iii.dev/iii/main/install.sh | sh
언어별 SDK는 각 패키지 매니저로 설치합니다.
# Node.js
npm install iii-sdk
# Python
pip install iii-sdk
# Rust: Cargo.toml 에 iii-sdk 추가
# Go
go get github.com/iii-hq/iii/sdk/packages/go/iii
프로젝트를 초기화하고 엔진을 띄우는 기본 흐름은 다음과 같습니다.
iii project init myapp # 프로젝트 스캐폴딩
cd myapp
iii # 엔진 시작
단계별 예제는 iii 공식 Quickstart 가이드에 정리되어 있습니다.
iii의 라이선스
iii는 디렉토리별로 서로 다른 라이선스를 적용합니다. 엔진 런타임(engine/)은 Elastic License 2.0(ELv2)을 따르고, SDK와 CLI, 콘솔, 문서, 웹사이트는 Apache License 2.0으로 공개되어 있습니다.
Apache 2.0 부분은 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다. 다만 엔진에 적용된 Elastic License 2.0은 소스 공개형 라이선스이지만, 소프트웨어를 제3자에게 호스팅형·관리형 서비스로 제공하는 것을 제한한다는 점을 유의해야 합니다. 직접 운영하거나 내부에서 사용하는 데에는 제약이 없습니다.
더 읽어보기
-
BoxLite: AI 에이전트를 위한, 안전하고 가벼운 샌드박스 런타임 (no daemon, no dependencies)
-
Microsoft Agent Framework: Microsoft가 새롭게 공개한 Multi-Agent Framework (feat. Python, C#/.NET)
iii 공식 홈페이지
iii 문서 사이트
iii 프로젝트 GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다!
텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. ![]()
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

