[์ธ์ ] 3. ์์ ์ง์ฅ์ ๋น ์ง๋ค: ์๋ฒฝ์ฃผ์์ ํจ์ ๊ณผ FastAPI ํต์ฌ ํ์ฝ๋ ๊ฒฐ์ฐ
๋ค์ด๊ฐ๋ฉฐ: ์์ผ๋ก ๋์๊ฐ์ง ๋ชปํ๋ ๋ณ, '์์ ์ง์ฅ'
์ง๋๋ฒ ํฌ์คํ ์์ ํ์ด์ฌ <code>Pillow</code> ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ๋ฌด๊ฑฐ์ด ์ด๋ฏธ์ง ํ์ผ๋ค์ ๊ฐ๋ฒผ์ด <code>WebP</code> ํฌ๋งท์ผ๋ก ์์ถํ๋ ๋ฐ ์ฑ๊ณตํ์ต๋๋ค. ๋ฐฉ๊ตฌ์ ๋ ธํธ๋ถ ์๋ฒ์ 500GB ํ๋๋์คํฌ ์ฉ๋ ๋ฌธ์ ๋ฅผ ์๋ฒฝํ๊ฒ ํด๊ฒฐํ๊ณ ๋๋, ์ด์ ์ ๋ง ํ๊ฐ๋ถํ ๋ง์์ผ๋ก ๋ค์ ๊ธฐ๋ฅ(๊ฒ์๊ธ ๊ฒ์ ๊ธฐ๋ฅ์ด๋ ํด์ํ๊ทธ) ๊ฐ๋ฐ๋ก ๋์ด๊ฐ ์ ์์ ์ค ์์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ ์๋ํฐ(VS Code) ํ๋ฉด์ ๋ฉฐ์น ์งธ ์ ์๋ฆฌ์ ๋จธ๋ฌผ๋ฌ ์์ต๋๋ค. ์ด๋ฅธ๋ฐ ๋ชจ๋ ์ด๋ณด ๊ฐ๋ฐ์๋ค์ด ํ ๋ฒ์ฏค ๊ฒช๋๋ค๋ ๋์ฐํ ๋ถ์น๋ณ, **'์์ ์ง์ฅ(Refactoring Hell)'**์ ๋น ์ ธ๋ฒ๋ฆฐ ๊ฒ์ ๋๋ค.
"์ฝ๋๊ฐ ๋๋ฌด ์ง์ ๋ถํ ๊ฒ ๊ฐ์๋ฐ?", "์ด ํจ์๋ฅผ ์ ํจ์๋ ํฉ์น๋ฉด ๋ ์์์ง ์์๊น?", "๋ณ์ ์ด๋ฆ์ด ์ง๊ด์ ์ด์ง ์์๋ฐ ์น ๋ค ๋ฐ๊ฟ๋ณผ๊น?"
๊ธฐ๋ฅ์ ์ด๋ฏธ ์๋ฒฝํ๊ฒ ์๋ํ๊ณ ์๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ , ์ ๋์๋ ๋์์์ด ๊ณ ์น๊ณ ๋ค๋ฌ์ด์ผ ํ ๋ถ๋ถ๋ค๋ง ๋ณด์์ต๋๋ค. ๋์๋ ์์ ํ๋ฅผ ๋ค๊ณ ์ฝ๋๋ฅผ ์ด๋ฆฌ์ ๋ฆฌ ์ฎ๊ธฐ๋ค ๋ณด๋ ์ ์ ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ง์ฒ์ด ์ ๋ก(0)์ ์๋ ดํ๊ณ ์์์ต๋๋ค. ์๋ฒฝ์ฃผ์๊ฐ ๋ถ๋ฅธ ๋์ฐธ์ฌ์์ฃ .
1. ๋ฉ์ถฐ ์์ ๋ค๋ฅผ ๋์๋ณด๋ค: ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์ด๋ธ ๊ธฐ์ ๋ค
์ด ์์ ์ง์ฅ์์ ๋น ์ ธ๋์ค๊ธฐ ์ํด์๋, ์ญ์ค์ ์ด๊ฒ๋ ์ ์ ํค๋ณด๋์์ ์์ ๋ผ๊ณ ์ ๊ฐ ์ง๊ธ๊น์ง ๋ง๋ค์ด์จ ๊ฒฐ๊ณผ๋ฌผ๋ค์ ๊ฐ๊ด์ ์ผ๋ก ๋๋์๋ณผ ํ์๊ฐ ์์์ต๋๋ค.
๋ก์คํธ์ํฌ ๊ณจ๋ 40๋ง ์์ผ๋ก ์์๋ ์ด ๋ฌด๋ชจํ ํ๋ก์ ํธ๋ ์ด๋์ ๊ฑฐ๋ํ ํํ๋ฅผ ๊ฐ์ถ๊ณ ์์์ต๋๋ค.
<ul><li>๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ์ํ Render ํด๋ผ์ฐ๋ ๋ฐฑ์ ์ฐ๋
</li><li>์ ์ ๊ธฐ๊ธฐ์ ๋ง์ถฐ ๋ณํ๋ ๋ฐ์ํ ์น์ง ์ธ๋ค์ผ ๊ฒ์ํ * ํธ๋ํฝ ๊ณผ๋ถํ๋ฅผ ๋ง๋ ํ์ด์ง๋ค์ด์ (Pagination)
</li><li>30์ผ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ ๋ญํน(๋ช ์์ ์ ๋น) ์๊ณ ๋ฆฌ์ฆ
</li><li>OpenCV๋ฅผ ํ์ฉํ ๋์์ ์ฒซ ํ๋ ์ ์ธ๋ค์ผ ์๋ ์ถ์ถ
</li><li>์ ์ฑ ๋๋ฐฐ๋ฅผ ๋ง๋ SlowAPI ๊ธฐ๋ฐ ๋๊ธ ์๋ ์ ํ(Rate Limit)
</li><li>๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ต๊ทผ์ ์ ์ฉํ Pillow ํ์ฉ WebP ์ด๋ฏธ์ง 90% ์์ถ๊น์ง.
</li></ul>๋ถ๊ณผ ํ๋ ๋ฌ ์ ๋ง ํด๋ ๋ฆฌ๋ ์ค ํฐ๋ฏธ๋์ ๊น๋ง ํ๋ฉด์ ๋ณด๋ฉฐ ์์๋์ ํ๋ฆฌ๋ ์ ๊ฐ, ๋ฐฑ์๋์ ํ๋ก ํธ์๋, ๊ทธ๋ฆฌ๊ณ ์๋ฒ ์ธํ๋ผ๋ฅผ ์์ฐ๋ฅด๋ ์ด ์๋ง์ ๊ธฐ๋ฅ๋ค์ ์ง์ ์์ผ๋ก ๊ตฌํํด ๋ธ ๊ฒ์ ๋๋ค. ์ฝ๋๊ฐ ์กฐ๊ธ ๋ชป์๊ฒผ์ผ๋ฉด ์ด๋ป์ต๋๊น? ์ด ์๋ง์ ํฑ๋๋ฐํด๋ค์ด ๋ง๋ฌผ๋ ค ํ๋์ ์น์ฌ์ดํธ(<code>inspeep.com</code>)๋ก ๋์๊ฐ๊ณ ์๋ค๋ ์ฌ์ค ์์ฒด๊ฐ ์ด๋ฏธ ๊ธฐ์ ์ธ ๊ฒ์์.
2. ํฉ์ด์ง ์ฝ๋๋ค์ ํ๋๋ก: ๋ฐฑ์๋ ํต์ฌ ๋ก์ง ํ์ฝ๋ ์ ๋ฆฌ
์์ ์ง์ฅ์ ๊ตด๋ ๋ฅผ ๋์ด๋ด๊ธฐ ์ํ ๋ง์ง๋ง ์์์ผ๋ก, ๊ทธ๋์ ๋์ง๋์ง ๊ธฐ์ ๋ถ์๋ ๋ฐฑ์๋ ๊ฒ์๊ธ ์
๋ก๋ ์ฝ๋๋ฅผ ๋จ์ ํ๊ฒ ํ๋๋ก ํตํฉํ์ฌ ์ ๋ฆฌํ์ต๋๋ค.
๋ง์น๋ฉฐ: ์๋ฒฝํจ๋ณด๋ค๋ '์์ฑ'์ ํฅํด
์์ ์ฝ๋๋ฅผ ํ๋๋ก ๋ฌถ์ด๋ด๊ณ ํ ์คํธ๋ฅผ ํต๊ณผํ ์๊ฐ, ๋น๋ก์ ๊ฐ๋ฐ์ฒ๋ผ ์ ๋ฅผ ์ง๋๋ฅด๋ ์์ ์ง์ฅ์์ ๋น ์ ธ๋์ฌ ์ ์์์ต๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ๊ฒฉ์ธ ์ค์ **"Done is better than perfect(์๋ฒฝํ ๊ฒ๋ณด๋ค ์ผ๋จ ์์ฑํ๋ ๊ฒ์ด ๋ซ๋ค)"**๋ผ๋ ๋ง์ด ์์ต๋๋ค. ํ์ ์ ๋ฐ์ด๋ ์๋์ด ๊ฐ๋ฐ์๋ค๋ ๊ณผ๊ฑฐ์ ์๊ธฐ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ถ๋๋ฌ์ ์ด๋ถ์ ์ฐฌ๋ค๊ณ ํ์ฃ . ์ฝ๋๋ ์ธ์ ๋ ๊ฐ์ ์ ์ฌ์ง๊ฐ ์๋ ๋ฒ์ ๋๋ค. ๊ณผ๊ฑฐ์ ์ฝ๋์ ์ฝ๋งค์ฌ ๋ฉ์ถฐ์๊ธฐ๋ณด๋ค๋, ์ฝ๊ฐ์ ์์ฌ์์ ์๊ณ ์๋ผ๋ ์ ์ ๋ค์๊ฒ ์๋ก์ด ๊ฒฝํ์ ์ ๊ณตํ ๋ค์ ํ์ด์ง๋ก ๋์ด๊ฐ์ผ ํ ๋์ ๋๋ค.
๊ธด ์ธ๋๋ฅผ ๋ง์ณค์ผ๋, ๋ค์ 17ํธ์์๋ ์ ๋ง๋ก ๋ฏธ๋ค๋์๋ ์์ ์ฌ์ ! ์๋ง์ ๊ฒ์๋ฌผ ์์์ ๋ด๊ฐ ์ํ๋ ๊ธ๋ง ๊ท์ ๊ฐ์ด ์ฐพ์๋ด๋ '๊ฒ์ํ ๊ฒ์ ๊ธฐ๋ฅ(Search)' ๊ฐ๋ฐ๊ธฐ๋ก ํ์ฐจ๊ฒ ๋์์ค๊ฒ ์ต๋๋ค. ๊ธฐ๋ํด ์ฃผ์ธ์!
๐ฌ ๋๊ธ 0๊ฐ