ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Redis just became your feature flag system. Yes, really! ๐Ÿš€
Dev.toDev.to
Infrastructure

๊ธฐ์กด Redis ์ธํ”„๋ผ ํ™œ์šฉ์„ ํ†ตํ•œ 0.1ms ๋ฏธ๋งŒ ์ง€์—ฐ์‹œ๊ฐ„์˜ Feature Flag ์‹œ์Šคํ…œ ๊ตฌ์ถ•

Redis just became your feature flag system. Yes, really! ๐Ÿš€

sgs2462026๋…„ 5์›” 18์ผ3๋ถ„intermediate

Context

๊ณ ๊ฐ€์˜ Feature Flag SaaS ๋„์ž…์— ๋”ฐ๋ฅธ ๋ถˆํ•„์š”ํ•œ ์ธํ”„๋ผ ๋น„์šฉ ๋ฐœ์ƒ๊ณผ ๋ฐ์ดํ„ฐ ์™ธ๋ถ€ ์œ ์ถœ ๋ฆฌ์Šคํฌ ์กด์žฌ. ๋‹จ์ˆœ On/Off ๋ฐ ํƒ€๊ฒŸํŒ… ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์œ„ํ•ด ๋ณ„๋„์˜ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜์˜ ๋น„ํšจ์œจ์„ฑ ํŒŒ์•….

Technical Solution

  • ๊ธฐ์กด Redis ์ธ์Šคํ„ด์Šค๋ฅผ Backend Store๋กœ ํ™œ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ์ธํ”„๋ผ ๊ตฌ์ถ• ๋น„์šฉ ์ œ๊ฑฐ
  • Warm-Cold-Stale 3๋‹จ๊ณ„ Cache ๊ณ„์ธต ์„ค๊ณ„๋ฅผ ํ†ตํ•œ Redis ์žฅ์•  ์‹œ ๊ฐ€์šฉ์„ฑ ๋ณด์žฅ
  • In-process Memory ๊ธฐ๋ฐ˜์˜ Warm Cache๋ฅผ ํ†ตํ•ด Sub-millisecond ์ˆ˜์ค€์˜ ํ‰๊ฐ€ ์†๋„ ๊ตฌํ˜„
  • Gradual Rollout ๋ฐ Cohort Targeting ๋กœ์ง์„ SDK ๋‚ด๋ถ€์— ๊ตฌํ˜„ํ•˜์—ฌ Redis ๋ถ€ํ•˜ ์ตœ์†Œํ™”
  • CLI ๋„๊ตฌ๋ฅผ ํ†ตํ•œ Flag ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๊ฐ์‚ฌ ์ถ”์ (Audit Trail) ์ž๋™ํ™” ์ฒด๊ณ„ ๊ตฌ์ถ•
  • ํ™˜๊ฒฝ๋ณ„(Prod, Staging, Dev) ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๋‹จ์ผ Redis ๋‚ด ๋‹ค์ค‘ ํ™˜๊ฒฝ ์šด์˜ ๊ฐ€๋Šฅ

1. ์‹ ๊ทœ SaaS ๋„์ž… ์ „ ๊ธฐ์กด ์ธํ”„๋ผ(Redis, Memcached ๋“ฑ)๋กœ ๊ธฐ๋Šฅ ๋Œ€์ฒด ๊ฐ€๋Šฅ์„ฑ ๊ฒ€ํ† 

2. ์™ธ๋ถ€ ์˜์กด์„ฑ ์‹œ์Šคํ…œ ์žฅ์•  ๋Œ€๋น„๋ฅผ ์œ„ํ•œ Stale Cache ๋“ฑ ๋‹ค์ค‘ Fallback ์ „๋žต ์ˆ˜๋ฆฝ

3. ์„ฑ๋Šฅ ์ž„๊ณ„์น˜๊ฐ€ ๋‚ฎ์€ ๊ธฐ๋Šฅ์€ SDK ๋ ˆ๋ฒจ์˜ In-process Caching ์ ์šฉ ๊ณ ๋ ค

์›๋ฌธ ์ฝ๊ธฐ