๐งช ์ฐ๋ฒ์ ์๋ก์ด ์คํํ๋ซํผ ์ฐ๋ฒ์๋ ๋ง๋ค์ด์ง์ง 7๋ ๋์ feature flagging๊ณผ A/B testing์ ์ง์ํ๋ Morpheus๋ผ๋ ์คํ ํ๋ซํผ์ด ์์์ต๋๋ค. ๋ง๋ ์ดํ๋ก ์ง๊ธ๊น์ง ์ฐ
๐งช ์ฐ๋ฒ์ ์๋ก์ด ์คํํ๋ซํผ ์ฐ๋ฒ์๋ ๋ง๋ค์ด์ง์ง 7๋ ๋์ feature flagging๊ณผ A/B testing์ ์ง์ํ๋ Morpheus๋ผ๋ ์คํ ํ๋ซํผ์ด ์์์ต๋๋ค. ๋ง๋ ์ดํ๋ก ์ง๊ธ๊น์ง ์ฐ๋ฒ๋ ํฌ๊ฒ ์ฑ์ฅ์ ํ๊ณ , 2020๋ ์ด์ ํ๋ซํผ์ ๋ค์ ์ดํด๋ณด๋ ๋ง์ ์คํ๋ค์ด ์คํ์ค์ ๋ฌธ์ ๋ค์ด ์๊ฒจ์ ๋ค์ ์งํ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค. Morpheus๊ฐ ๋ ์ด์ ์ฐ๋ฒ์ ๋ค์ํ ์ ์ฆ ์ผ์ด์ค๋ฅผ ์ปค๋ฒํ์ง ๋ชปํ๋ค๋ณด๋ ์ฐ๋ฒ๋ ์๋ก์ด ์คํํ๋ซํผ์ ์ฒ์๋ถํฐ ๋ง๋ค๊ธฐ๋ก ํ์ต๋๋ค. ์ฐ๋ฒ๊ฐ ์๋ก์ด ์คํํ๋ซํผ์ ์ด๋ค ๋ชฉํ๋ก ๋ง๋ค์๊ณ , ์ฝ์ด ๊ธฐ๋ฅ๋ค์ ๋ฌด์์ธ์ง ๊ฐ๋ตํ๊ฒ ์์ฝํ์ต๋๋ค. ๋ ์์ธํ ๋ด์ฉ์ ์๋ฌธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์. โญ๏ธ ์๋ก์ด ์คํํ๋ซํผ์ ๋ชฉํ ์๋ก์ด ์คํํ๋ซํผ์ ๋ค์ํ ์ข ๋ฅ์ ์คํ๋ค์ ๋์ ํ๋ฆฌํฐ๋ก ๋น ๋ฅด๊ฒ ์งํํ ์ ์๊ฒ ํ๋ ค๊ณ ํ์ต๋๋ค. - ๋์ ํ๋ฆฌํฐ ์ด๋ค ์คํ์ ์ค๊ณ๋ฅผ ํ๋, ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ขฐํ ์ ์๋๋ก ๋ง๋ค์ด์ผ ํ์ต๋๋ค. - ๋์ ์์ฐ์ฑ ๋น๋/๋ฆด๋ฆฌ์ฆ ์ฌ์ดํด๊ณผ ์คํ์ decouplingํด์ ๋ชจ๋ฐ์ผ์ ๋ณต์ก์ฑ์ ์ค์ฌ์ผ ํ์ต๋๋ค. ๊ทธ๋์ client์์ ์ฌ์ฉํ๋ ์คํํ๋ซํผ ๊ด๋ จ interface๋ฅผ ๋ ๊ฐ์ํ ํ์ต๋๋ค. ๋ชจ๋ฐ์ผ/๋ฐฑ์๋์ ํํธํ๋์ด์๋ configuration ํ๋ซํผ๋ค๋ ํตํฉํด์ผ ํ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ๊ธฐ์กด์๋ ์คํ์ ๋์์ ์ ์ ๋ก๋ง ํ ์ ์์๊ณ ์งํ๊ฐ ํ์คํ ๋์ด์์ง ์์์ ์กฐ์ง๋ค๋ง๋ค ๋ค๋ฅธ ์งํ๋ฅผ ๋ด์ ํผ๋์ ์ผ๊ธฐํ ์ ์๋ ์ํฉ์ด์์ต๋๋ค. ์ด๋ฐ ์ ๋ค์ ํด๊ฒฐํด์ ์์ฐ์ฑ์ ๋ํ์ผ ํ์ต๋๋ค. - ๋ค์์ฑ ์ฐ๋ฒ์ ๋ค์ํ ์ ์ฆ ์ผ์ด์ค๋ฅผ ์ปค๋ฒํ ์ ์์ด์ผ ํ์ต๋๋ค. ๋ฐฑ์๋, ๋ชจ๋ฐ์ผ, ์น ๋ฑ ๋ค์ํ ํ๋ซํผ์์ ์คํ์ด ๊ฐ๋ฅํด์ผ ํ๊ณ , holdout์ด๋ ๋ค๋ฅธ ์คํ์ ์์กด์ ์ธ ์คํ๋ฑ ๊ณ์ธต์ ์ธ ์คํ๋ ์ง์์ด ๋์ด์ผ ํ์ต๋๋ค. โ๏ธ ์ํคํ ์ฒ 1. ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ฉํด์ ์คํ๊ณผ decoupling์ ํ์ต๋๋ค. ํ๋ผ๋ฏธํฐ ๊ฐ๋ง overrideํ๋ฉด ์๋ก์ด ์คํ๋ ์ฝ๊ฒ ์งํํ ์ ์๊ธฐ์ ์ถ๊ฐ์ ์ธ ์ฝ๋ ๋ณ๊ฒฝ์ด ํ์ ์์ด์ก์ต๋๋ค. 2. Flipr๋ผ๋ backend configuration ์์คํ ์์ ์คํํ๋ซํผ ํ๋ผ๋ฏธํฐ๋ค์ ๋ฌ์, ์คํํ๋ซํผ ํ๋ผ๋ฏธํฐ๋ค์ด ๋ ์ฐ์ ์์๋ฅผ ๊ฐ์ผ๋ฉด์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ ์ ์๊ฒ ํ์ต๋๋ค. ๊ธฐ์กด backend ํ๋ซํผ ์์ ์คํํ๋ซํผ ํ๋ผ๋ฏธํฐ ๊ธฐ๋ฅ์ ๋๊ธฐ ๋๋ฌธ์ ์ ์ฒด ์์คํ ์ ํ๋๋ก ํตํฉํ ์ ์์์ต๋๋ค. 3. randomization์ด๋, treatment plan์ ๊ฐ์ ํด์ ์ฌ๋ฌ ์คํ๋ค์ด ํ๋์ ํ๋ผ๋ฏธํฐ๋ก ์งํ๋ ์ ์๋๋ก ํ์ต๋๋ค. 4. ํ๋ผ๋ฏธํฐ๋ง๋ค ์ ์ฝ์กฐ๊ฑด๋ค์ ๋ฌ์ ๋ ๋ณต์กํ ์คํ๋ค์ ๊ฐ๋ฅํ๊ฒ ํ์ต๋๋ค (ex. ํน์ ์คํ์ ์์กด์ ์ธ ์คํ, ์ฐ๋ฒ ์ ์ฌ ๋จ์์ holdout์ด๋ ์กฐ์ง ๋จ์์ holdout). 5. ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๋ generalizeํด์ randomization unit์ด ๋ฐ๋์ด๋ ์ถ๊ฐ์์ ์์ด ํ์ดํ๋ผ์ธ์ด ๋์๊ฐ ์ ์๊ฒ ํ์ต๋๋ค. 6. UI์์๋ DS๋ถ๋ค์ด ์ฌ์ฉํ๋ jupyter notebook์์ ๊ฐ์ Python ํจํค์ง๋ฅผ ์ฌ์ฉ ํ ์ ์๋๋ก ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์งํ ํต์ผํ๋ฅผ ํ์ต๋๋ค. 7. fallback ์๋๋ฆฌ์ค์ ๋ํด์๋ ์ ๋์ํ ์ ์๋๋ก ํ๊ณ ๊ทธ ์ธ์ SDK ์์ ์ฑ์ ์ฑ๊ฒผ์ต๋๋ค (ex. default value๋ฅผ ํญ์ ๊ฐ๊ณ ์์ด์ ๋คํธ์ํฌ fail์๋ ๋์ํ ์ ์๊ฒ ํ๊ธฐ, ์คํ ํ๋ผ๋ฏธํฐ ์ฌ์ฉ ์ ์ ์๋์ผ๋ก ๋ก๊น ํด์ ์๋ ๋ก๊น ์ผ๋ก ์ธํ ๋ฒ๊ทธ๋ค ์์ฐ, ๋ฑ) ์๋น์ค๊ฐ ์ฑ์ฅํ ์๋ก ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์๊ธฐ๋ ๊ฒ์ฒ๋ผ, ์คํํ๋ซํผ๋ ์๋น์ค๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ๊ทธ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์คํํ ์ ์๋๋ก ๊ณ์ ๊ณ ๋ํ๋์ด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.