Akan 애플리케이션은 앱 코드, 생성 산출물, 서버 라우트, 페이지를 연결하는 Bun 기반 런타임 위에서 실행됩니다. 앱 엔트리 포인트(main.ts)는 런타임을 시작하고, 그 뒤의 서버 구성은 Akan이 담당합니다.
Akan App이 실행되면 Akan Server가 앱이 제공할 기능들을 준비합니다. 실제 런타임은 크게 네 가지 작업을 제공합니다.
- Internal API (Queue, Timer, etc.): 브라우저 요청 없이 내부에서 실행되는 큐, 타이머 같은 작업입니다.
- API (HTTP, WebSocket): 데이터 요청과 실시간 업데이트를 처리하는 HTTP, 웹소켓 통신 경로입니다.
- SSR Pages (Web): 서버가 렌더링해서 브라우저로 보내는 웹 페이지입니다.
- CSR Page (Android, iOS): Android, iOS 같은 모바일 대상에서 사용하는 클라이언트 렌더링 페이지입니다.
하나의 Akan App은 하나 이상의 Akan Server 프로세스를 실행할 수 있습니다. AKAN_REPLICA는 역할별 서버 프로세스 개수를 제어하므로, 같은 앱 안에서 웹 트래픽과 백그라운드 작업을 나누어 확장할 수 있습니다. 브라우저 요청은 Akan App이 준비된 federation/all 서버로 로드밸런싱합니다.
- federation: 페이지, API 호출, 웹소켓 연결 같은 브라우저 요청을 처리합니다.
- batch: 큐, 타이머, 예약 작업 같은 백그라운드 작업을 실행합니다.
- all: 하나의 서버 프로세스에서 federation과 batch 역할을 함께 실행합니다. 로컬 개발에서 사용하는 단순한 기본 형태입니다.
단일 Akan App은 clustering 기능을 기본으로 지원합니다. 여러 server replica를 실행하고 Akan App이 트래픽을 분산할 수 있으므로, nginx, docker compose, pm2 같은 별도 로컬 load-balancing 도구를 직접 구성하지 않아도 됩니다.