WhyLog์ AI, Server, Web ๊ฐ ์ฐ๊ฒฐ ๊ตฌ์กฐ์ ์๋น์ค ํ๋ฆ์ ๊ธฐ๋กํฉ๋๋ค.
Web (React, axios + WebSocket)
โ REST (JWT Bearer) โ WebSocket (์ค์๊ฐ ํ์ signaling)
โผ โผ
Server (Spring Boot) โโRESTโโโถ ai (FastAPI)
โ โ โ
โ โ โโ Gemini (ํ
์คํธ ์์ฑยท์๋ฒ ๋ฉ)
โ โ โโ Deepgram (์์ฑ ์ ์ฌ)
โ โ โโ ChromaDB (์ปค๋ฐยท์ ์ฉ์ฌํญ ์๋ฒ ๋ฉ)
โ โโโRESTโโโถ LiveKit (์ค์๊ฐ ์ค๋์ค/๋น๋์ค SFU + ๋
น์ egress)
โโโRESTโโโถ GitHub (์ปค๋ฐ ์ด๋ ฅ ์กฐํ, kohsuke GitHub API)
โโโS3
Web๊ณผ LiveKit์ ์์ธ์ ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋๋ค(RTC). ๊ทธ ์ธ ๋ชจ๋ ํต์ ์ Server๋ฅผ ๊ฑฐ์น๋ค โ aiยทGitHubยทS3ยทLiveKit ํ ํฐ ๋ฐ๊ธ์ Web์ด ์ง์ ํธ์ถํ์ง ์๋๋ค.
| ํํธ | ์ฑ ์ | ์ฑ ์์ด ์๋ ๊ฒ |
|---|---|---|
| Web | ํ๋ฉด, ๋ธ๋ผ์ฐ์ Web Speech API๋ก ์ค์๊ฐ ์๋ง ์์ฑ, LiveKit RTC ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ, Server REST/WebSocket ํธ์ถ | ์๋ฌธ ํ์ ๋ถ์, ์ปค๋ฐ ๋งค์นญ ์ ์ ๊ณ์ฐ, ํ์ผ ์ ์ฅ โ ์ ๋ถ Serverยทai๊ฐ ํ๋ค |
| Server | ๋๋ฉ์ธ ์ํ(Team/Meeting/Decision/Application/Commit)์ ์ ๋ณธ ์ ์ฅ, ์ธ๋ถ ์์คํ (aiยทLiveKitยทGitHubยทS3) ์ค์ผ์คํธ๋ ์ด์ , ์ธ์ฆ | ์ ์ฌยท์์ฝยท์๋ฒ ๋ฉยท๋งค์นญ ์ ์ ๊ณ์ฐ ์์ฒด๋ ํ์ง ์๋๋ค โ ์ ๋ถ ai์ ์์ํ๊ณ ๊ฒฐ๊ณผ๋ง ์ ์ฅ |
| ai | ์์ฑ ์ ์ฌ(Deepgram), ํ์ ๋ถ์ยท์ ์ฉ์ฌํญ ์ถ์ถ(Gemini), ์ปค๋ฐ ์์ฝยท์๋ฒ ๋ฉ(Gemini), ์๋ฒ ๋ฉ ์ ์ฌ๋ ๊ธฐ๋ฐ ๋งค์นญ ์ ์ ๊ณ์ฐ(ChromaDB) | ๋๋ฉ์ธ ๋ฐ์ดํฐ์ ์ ๋ณธ์ ๊ฐ์ง ์๋๋ค โ ๋งค ์์ฒญ๋ง๋ค ํ์ํ ์ปจํ ์คํธ๋ฅผ Server๊ฐ ์ค์ด ๋ณด๋ธ๋ค. ์ธ์ฆ/์ธ๊ฐ๋ ํ์ง ์๋๋ค |
- Server๊ฐ ๋ก๊ทธ์ธ ์ JWT access/refresh ํ ํฐ์ ๋ฐ๊ธํ๋ค.
- Web์ access ํ ํฐ์ ๋ฉ๋ชจ๋ฆฌ์๋ง ๋ณด๊ดํ๊ณ , ๋งค ์์ฒญ์
Authorization: Bearer๋ก ์ฃผ์ ํ๋ค. 401์ ๋ฐ์ผ๋ฉด refresh๋ก ์ฌ๋ฐ๊ธ์ ์๋ํ๋ค. - ai๋ ๋ณ๋ ์ธ์ฆ์ด ์๋ค โ Server๋ง ํธ์ถํ๋ค๋ ์ ์ ๋ก ์ ๋ขฐ ๊ฒฝ๊ณ ์์ ๋๋ค.
ํ์ ์ค ์ค๋์ค/๋น๋์ค์ "์ค์๊ฐ ํ ์คํธ"๋ ์๋ก ๋ค๋ฅธ ๋ ๊ฒฝ๋ก๋ก ํ๋ฅธ๋ค.
- ์ค๋์ค/๋น๋์ค: Web์ Server๊ฐ ๋ฐ๊ธํ ํ ํฐ์ผ๋ก LiveKit์ ์ง์ ์ฐ๊ฒฐํด RTC๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. LiveKit์ด room ์ ์ฒด ์ค๋์ค๋ฅผ ๋ น์(egress)ํด S3์ ์ ์ฅํ๊ณ , ์ด ์๋ณธ ์ค๋์ค๊ฐ ํ์ ์ข ๋ฃ ํ "ํ๋ฆ 2"์ ๊ณต์ ์ ์ฌ ์ ๋ ฅ์ด ๋๋ค.
- ์ค์๊ฐ ํ ์คํธ: Web์ด ๋ธ๋ผ์ฐ์ Web Speech API๋ก ๋ฐํ๋ฅผ ์ฆ์์์ ์ ์ฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ Server๊ฐ ์ฌ๋ ๋ณ๋์ WebSocket์ผ๋ก ๋ณด๋ธ๋ค. Server๋ ์ด๋ฅผ ์ฐธ๊ฐ์์๊ฒ ๋ธ๋ก๋์บ์คํธํ๋ ๋์์ ํ์๋ณ๋ก ๋ฒํผ๋งํด๋๋ค โ ํ๋ฉด ์๋ง์ฉ์ด์, ํ์ ์ข ๋ฃ ํ ๊ณต์ ๋ถ์์ ์ฐธ๊ณ ์ปจํ ์คํธ๋ก ํจ๊ป ์ ๋ฌ๋๋ค.
- ํ์ ์ข ๋ฃ(์ฐธ์ฌ์๊ฐ ์ง์ ์ข ๋ฃํ๊ฑฐ๋, ์ค์๊ฐ ์ฐธ์ฌ์๊ฐ ์ ๋ถ ๋น ์ ธ์ ์๋ ์ข ๋ฃ)๋ ํญ์ ๊ฐ์ ์ฒ๋ฆฌ๋ก ์๋ ดํ๋ค: ๋ น์ ์ค์ง โ ๋ฐฉ ์ ๋ฆฌ โ "ํ๋ฆ 2" ๋น๋๊ธฐ ์์.
- Server๊ฐ ๋ น์๋ ์ค๋์ค์ ์ค์๊ฐ ํ ์คํธ ๋ฒํผ๋ฅผ ai์ ๋๊ฒจ ์ ์ฌ+๋ถ์ ์คํ(run)์ ๋น๋๊ธฐ๋ก ์์์ํจ๋ค.
- ai๊ฐ Deepgram์ผ๋ก ์ค๋์ค๋ฅผ ์ ์ฌํ๊ณ , Gemini๋ก ๋ ผ์ ์ฃผ์ ยท๊ฒฐ์ ๊ทผ๊ฑฐยท์ ์ฉ์ฌํญยทํ์๋ผ์ธ์ ์ถ์ถํ๋ค. ์งํ ๋จ๊ณ๋ ์ ์ฌ์ค โ ์ ์ฌ์๋ฃ โ ์์ฝ์๋ฃ โ ์ ์ฉ์ฌํญ์ถ์ถ์๋ฃ๋ก ๋๋๋ฉฐ, Server๋ ์๋ฃ๋ ๋๊น์ง ์ํ๋ฅผ ์กฐํ(ํด๋ง)ํ๋ค.
- Server๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋๋ฉ์ธ ์ํฐํฐ๋ก ์ ์ฅํ๋ค: ๋ฐํ ๋ชฉ๋ก, ํ์ ์์ฝ, ๊ฒฐ์ (Decision, ํ์๋น 1๊ฐ), ์ ์ฉ์ฌํญ๊ณผ ๊ทธ ๊ทผ๊ฑฐยทํ์๋ผ์ธ. ์ ์ฉ์ฌํญ ๊ณ์ด์ ๋งค๋ฒ ์ ๋ถ ์ญ์ ํ ์ฌ์์ฑํ๋ค โ ์ฌ๋ถ์์ append๊ฐ ์๋๋ผ ์ค๋ ์ท ๊ต์ฒด๋ค.
- ์ ์ฅ์ด ๋๋๋ฉด Server๊ฐ ๊ทธ ์ ์ฉ์ฌํญ๋ค์ ๋ค์ ai์ ๋ณด๋ด ์๋ฒ ๋ฉ์ ๋ง๋ค๊ฒ ํ๊ณ (ChromaDB ์ ์ฅ), ์ด์ด์ ์ปค๋ฐ ์๋ ๋งค์นญ์ ์์ฒญํ๋ค. ์ด ๋ ๋จ๊ณ๋ ์คํจํด๋ ์ ์ฒด ํ๋ฆ์ ๋๋๋ฆฌ์ง ์๋ best-effort๋ค โ ๋ถ์ ๊ฒฐ๊ณผ ์ ์ฅ ์์ฒด๋ ์ด๋ฏธ ๋๋ฌ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋งค์นญ ์ ์ ๊ณ์ฐ ๋ก์ง์ ai์ ์๊ณ (
docs/domain.md์ฐธ์กฐ), Server๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ขฐ๋ ์๊ณ๊ฐ์ผ๋ก ํ ๋ฒ ๋ ๊ฑธ๋ฌ ์ ์ฅํ ๋ฟ ์ ์ ์์ฒด๋ฅผ ๊ณ์ฐํ์ง ์๋๋ค.
GitHub๋ webhook์ด ์๋๋ผ Server๊ฐ ์ฌ์ฉ์ ์์ฒญ ์ ๋์ด์ค๋(pull) ๋ฐฉ์์ด๋ค.
- ์ฌ์ฉ์๊ฐ GitHub ํ ํฐ์ ๋ฑ๋กํ๋ฉด Server๊ฐ ์ ํจ์ฑ์ ๊ฒ์ฆํด ์ํธํ ์ ์ฅํ๋ค. ํ ํฐ์ด 401์ ๋ฐํํ๋ฉด(๋ง๋ฃ) Server๊ฐ ์ฆ์ ํ๊ธฐํ๋ค.
- ๋ ํฌ์งํ ๋ฆฌ ๋๊ธฐํ ์ Server๊ฐ GitHub REST API๋ก ๋ง์ง๋ง ๋๊ธฐํ ์ดํ์ ์ปค๋ฐ๋ง ๊ฐ์ ธ์จ๋ค. ์ด๋ฏธ ์ ์ฅ๋ ํด์๋ ๊ฑด๋๋ฐ๊ณ , ๋จธ์ง ์ปค๋ฐ(๋ถ๋ชจ 2๊ฐ ์ด์)์ ์ ์ฅํ์ง ์๋๋ค.
- ์๋ก ์ ์ฅ๋ ์ปค๋ฐ(๊ณผ ์ด์ ์ ์๋ฒ ๋ฉ์ด ์ ๋๋ ์ปค๋ฐ)๋ง๋ค Server๊ฐ ๋ณ๊ฒฝ ํ์ผ ๋ชฉ๋ก๊ณผ ํจ๊ป ai์ ๋ถ์์ ์์ฒญํ๋ค. ai๊ฐ Gemini๋ก ์์ฝยท์๋ฒ ๋ฉ์ ๋ง๋ค์ด ChromaDB์ ์ ์ฅํ๋ค.
- ์ด ํ์ดํ๋ผ์ธ์ด ๋๋์ผ(์๋ฒ ๋ฉ ์๋ฃ) "ํ๋ฆ 2"์ ์ปค๋ฐ ์๋ ๋งค์นญ์ด ๊ทธ ๋ ํฌ์งํ ๋ฆฌ์ ์ปค๋ฐ์ ํ๋ณด๋ก ์ฐพ์ ์ ์๋ค โ ๋ ํฌ ๋๊ธฐํ๊ฐ ํ์ ๋ถ์๋ณด๋ค ๋จผ์ ๋์ด ์์ด์ผ ๋งค์นญ์ด ์๋ฏธ๊ฐ ์๋ค.
AI ์ถ์ฒ ๋งค์นญ๊ณผ ๋ณ๊ฐ๋ก, Web์์ ์ฌ์ฉ์๊ฐ ์ ์ฉ์ฌํญ์ ์ปค๋ฐ์ ์ง์ ํ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ํด์ ํ ์ ์๋ค. ์ด ํ์ ์ฐ๊ฒฐ์ ์ฌ๋ถ์์ผ๋ก๋ ์ง์์ง์ง ์์ผ๋ฉฐ, ์ดํ ์ถ์ฒ ๋งค์นญ ๊ณ์ฐ ์ ๊ทธ ์ปค๋ฐ์ ํ๋ณด์์ ์ ์ธํ๋ค. ๋ ๊ด๊ณ์ ์ฐจ์ด๋ docs/domain.md์ "์ถ์ฒ ๋งค์นญ vs ํ์ ์ฐ๊ฒฐ" ์ฐธ์กฐ.
- ai๋ฅผ ์ง์ ํธ์ถํ๋ ๊ณณ์ Server ์์ ํ ๊ฒฝ๊ณ ๋ฟ์ด๋ค. ๋๋ฉ์ธ ์๋น์ค๊ฐ ai SDK๋ HTTP ํธ์ถ์ ์ง์ ๋ค๊ณ ์์ง ์๊ณ , ์ ์ฉ ํด๋ผ์ด์ธํธ๋ฅผ ์ฃผ์ ๋ฐ์ ์ด๋ค. LiveKitยทS3ยทGitHub ์ฐ๋๋ ๊ฐ์ ์์น์ผ๋ก ๋ณ๋ ๊ฒฝ๊ณ์ ๋ชจ์ฌ ์๋ค.
- ai๋ ๋๋ฉ์ธ ๋ฐ์ดํฐ์ ์ ๋ณธ์ ๊ฐ์ง ์๋๋ค. ChromaDB ์๋ฒ ๋ฉ์ ๋งค์นญ ๊ณ์ฐ์ฉ ํ์ ๋ฐ์ดํฐ์ผ ๋ฟ, ๊ฒฐ์ ยท์ ์ฉ์ฌํญยท์ปค๋ฐ ์ฐ๊ฒฐ์ ์ ๋ณธ์ ํญ์ Server DB๋ค.
- ai ์ชฝ์์ ํ๋กฌํํธยท๋งค์นญ ๊ฐ์ค์นยทChromaDB ์คํค๋ง๋ฅผ ๋ฐ๊พธ๋ฉด Server๊ฐ ํ์ฑํ๋ ์๋ต ํํ๋ ํจ๊ป ๊นจ์ง ์ ์์ด ๋ด๋น์ ํ์ธ์ด ํ์ํ๋ค.
- ์ธ๋ถ ํธ์ถ(S3, ai, LiveKit, GitHub)์ Server์ ํธ๋์ญ์ ์์์ ํ์ง ์๋๋ค. ์ปค๋ฐ ์ดํ ์คํ์ด ํ์ํ๋ฉด afterCommit ์์ ์ผ๋ก ๋ฏธ๋ฃฌ๋ค.