์ฝ˜ํ…์ธ ๋กœ ์ด๋™

๊ตฌ์„ฑ

config.yaml์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์—†์œผ๋ฉด ํ”„๋ก์‹œ๋Š” ์•„๋ž˜์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

OS๊ฒฝ๋กœ
macOS~/Library/Application Support/sotatek-proxy/config.yaml
Linux~/.config/sotatek-proxy/config.yaml ($XDG_CONFIG_HOME ์ค€์ˆ˜)
Windows%ProgramData%\SotatekProxy\config.yaml
# ๋กœ์ปฌ ๋ฆฌ์Šค๋„ˆ ํฌํŠธ. ๋ฃจํ”„๋ฐฑ ๋ฐ”์ธ๋”ฉ์€ ํ•˜๋“œ์ฝ”๋”ฉ๋จ โ€” `host`๋Š” ์„ค์ • ๋ถˆ๊ฐ€.
port: 3817
# ์—…์ŠคํŠธ๋ฆผ Bifrost ๊ฒŒ์ดํŠธ์›จ์ด. ๊ฒฝ๋กœ๋Š” 1:1๋กœ ์ „๋‹ฌ๋จ (์ œ๊ฑฐ ์—†์Œ).
upstream_url: 'https://bifrost.sotatek.works'
# {pid โ†’ git-remote} ์บ์‹œ์˜ TTL(์ดˆ). 0์ด๋ฉด ๋น„ํ™œ์„ฑํ™”.
cache_ttl_seconds: 60
# ๋กœ๊น… โ€” lumberjack์„ ํ†ตํ•œ ๋กœํ…Œ์ด์…˜, stdout์œผ๋กœ ๋™์‹œ ์ถœ๋ ฅ.
log:
# file: <OS๋ณ„ ๊ธฐ๋ณธ๊ฐ’ โ€” ๋น„์›Œ๋‘์„ธ์š”>
max_size_mb: 50 # ํ˜„์žฌ ํŒŒ์ผ์ด ์ด ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋กœํ…Œ์ด์…˜
max_backups: 5 # N๊ฐœ์˜ ๋กœํ…Œ์ด์…˜๋œ (.gz) ํŒŒ์ผ ์œ ์ง€
max_age_days: 30 # ์ด๋ณด๋‹ค ์˜ค๋ž˜๋œ ๋กœํ…Œ์ด์…˜ ํŒŒ์ผ ์‚ญ์ œ
json: false # JSON ๋กœ๊ทธ ์ถœ๋ ฅ์„ ์œ„ํ•ด true๋กœ ์„ค์ • (Loki/ELK ์ˆ˜์ง‘)
# ์„ ํƒ์  ํ”„๋กœํŒŒ์ผ๋ง ์—”๋“œํฌ์ธํŠธ. ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋จ. ์‹œ์ž‘ ์‹œ ๋ฃจํ”„๋ฐฑ ์ „์šฉ ๊ฐ•์ œ ์ ์šฉ.
pprof:
enable: false
addr: '127.0.0.1:8316'
# ์ƒ์„ธ ๋กœ๊น… (gin ๋””๋ฒ„๊ทธ ๋ชจ๋“œ + logrus ๋””๋ฒ„๊ทธ ๋ ˆ๋ฒจ).
debug: false
ํ•„๋“œํƒ€์ž…๊ธฐ๋ณธ๊ฐ’๋น„๊ณ 
portint38171โ€“65535. ๋ฃจํ”„๋ฐฑ ๋ฐ”์ธ๋”ฉ ํ•˜๋“œ์ฝ”๋”ฉ.
upstream_urlstringhttps://bifrost.sotatek.workshttp:// ๋˜๋Š” https://๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. http://๋Š” ์‹œ์ž‘ ์‹œ ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค (API ํ‚ค๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํ‰๋ฌธ์œผ๋กœ ์ „์†ก๋จ).
cache_ttl_secondsint600์ด๋ฉด ์บ์‹œ ๋น„ํ™œ์„ฑํ™”.
log.filestringOS ๊ธฐ๋ณธ๊ฐ’๋นˆ ๋ฌธ์ž์—ด์€ ๊ธฐ๋ณธ๊ฐ’ ์œ ์ง€.
log.max_size_mbint50๋กœํ…Œ์ด์…˜ ํฌ๊ธฐ ์ž„๊ณ„๊ฐ’.
log.max_backupsint5์œ ์ง€ํ•  ๋กœํ…Œ์ด์…˜๋œ .gz ํŒŒ์ผ ์ˆ˜.
log.max_age_daysint30์ด๋ณด๋‹ค ์˜ค๋ž˜๋œ ๋กœํ…Œ์ด์…˜ ํŒŒ์ผ ์‚ญ์ œ.
log.jsonboolfalse๋กœ๊ทธ ์ˆ˜์ง‘์„ ์œ„ํ•œ JSON ๋ผ์ธ ํ˜•์‹.
pprof.enableboolfalse/debug/pprof/* ํ™œ์„ฑํ™”.
pprof.addrstring127.0.0.1:8316๋ฃจํ”„๋ฐฑ์œผ๋กœ ํ™•์ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (์‹œ์ž‘ ์‹œ ๊ฒ€์ฆ).
debugboolfalse์ƒ์„ธ ๋กœ๊ทธ + Gin ๋””๋ฒ„๊ทธ ๋ชจ๋“œ.

๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ ํ›„ ๋ฐ๋ชฌ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์ด YAML์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ํ•„๋“œ์˜ˆ์‹œ
SOTATEK_PROXY_PORTport3818
SOTATEK_PROXY_UPSTREAMupstream_urlhttps://bifrost-staging.sotatek.works
SOTATEK_PROXY_DEBUGdebugtrue
SOTATEK_PROXY_LOG_JSONlog.jsontrue

config.yaml์„ ํŽธ์ง‘ํ•˜๊ณ  ์ €์žฅํ•˜๋ฉด ์•ฝ 500ms ์ด๋‚ด์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค (fsnotify ๋””๋ฐ”์šด์Šค). ๋‹ค์Œ ํ•ญ๋ชฉ์€ ์žฌ์‹œ์ž‘ ์—†์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค:

  • debug
  • cache_ttl_seconds
  • log.max_size_mb, log.max_backups, log.max_age_days
  • log.json

์ธ๋ฐ”์šด๋“œ ์š”์ฒญ ๋ณธ๋ฌธ์€ ๋กœ์ปฌ ํด๋ผ์ด์–ธํŠธ์˜ ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•ด 100 MiB๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. SSE / ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ œํ•œ์€ ํ˜„์žฌ ์ปดํŒŒ์ผ ํƒ€์ž„ ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค.