19. ๋ด๊ฐ ์ ๋ ์ฌ์ด ์๋ฒ๊ฐ ๋ป๋๋ค๋ฉด? ํ์ด์ฌ(FastAPI) ์๋ฌ ์ถ์ ๋ฐ ๋์ค์ฝ๋ ์๋ ์๋ฆผ ์์คํ ๊ธฐํ๊ธฐ
์๋ ํ์ธ์. ๋ฐฉ๊ตฌ์์ ๋ก์ ๋ ธํธ๋ถ์ ๋ฆฌ๋ ์ค(Ubuntu)๋ฅผ ๊น๊ณ , ํ์ด์ฌ FastAPI๋ก ํ ๋ ํ ๋ ์ ๋ง์ ์ปค๋ฎค๋ํฐ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค์ด๊ฐ๊ณ ์๋ ์ด๋ณด ์น๋ง์คํฐ์ ๋๋ค.
์ด๋๋ง ์ ๋ธ๋ก๊ทธ์ ๊ฐ๋ฐ๊ณผ ์ด์์ ๋ํ ๊ธฐ๋ก์ด 20๊ฐ๋ฅผ ํ์ฉ ๋๊ฒผ์ต๋๋ค. ์ฒ์์๋ ๊ฒ์์ ํฐ๋ฏธ๋ ์ฐฝ์ ์์ด ๋ช ๋ น์ด ํ ์ค ์น๋ ๊ฒ์กฐ์ฐจ ์์ด ๋๋ ๋จ๋ ธ๋๋ฐ, ์ด์ ๋ ์ ๋ฒ ๊ทธ๋ด์ธํ ๊ฒ์ํ๊ณผ ํ์ ์์คํ , ๊ทธ๋ฆฌ๊ณ SEO ์ต์ ํ๊น์ง ๊ฐ์ถ ์ด์ฟํ ์น์ฌ์ดํธ์ ํํ๋ฅผ ๋ ๊ฒ ๋์์ต๋๋ค. ๊ตฌ๊ธ ๊ฒ์์ ํตํด ๋ค์ด์ค๋ ๋ฐฉ๋ฌธ์๋ ์กฐ๊ธ์ฉ ๋์ด๋๋ฉด์, ์ ์ฌ์ดํธ๋ ์ด์ ์ ํผ์๋ง์ ์ผ๊ธฐ์ฅ์ ๋์ด ์ฌ๋๋ค๊ณผ ์ํตํ๋ ์ง์ง '์๋น์ค'๊ฐ ๋์ด๊ฐ๊ณ ์์ต๋๋ค.
ํ์ง๋ง ์๋น์ค์ ๋ฉ์น๊ฐ ์ปค์ง๊ณ ๋ฐฉ๋ฌธ์๊ฐ ๋์ด๋ ์๋ก, ์ด๋ณด ๊ด๋ฆฌ์์ธ ์ ์ ๋ง์ ํ๊ตฌ์์๋ ์ธ์ ํฐ์ง์ง ๋ชจ๋ฅด๋ ์ํํญํ ๊ฐ์ ๋ถ์๊ฐ์ด ์ปค์ง๊ธฐ ์์ํ์ต๋๋ค. ๋ฐ๋ก "๋ด๊ฐ ์๊ณ ์๊ฑฐ๋ ๋ฐ์์ ์ผํ๊ณ ์์ ๋, ๋ฐฉ๊ตฌ์ ๋ ธํธ๋ถ ์๋ฒ๊ฐ ๊ฐ์๊ธฐ ๋ป์ด๋ฒ๋ฆฌ๋ฉด ์ด๋กํ์ง?"๋ผ๋ ํ์ค์ ์ธ ๊ณตํฌ์ ๋๋ค.
๋ก์ ๋ ธํธ๋ถ ์๋ฒ์ ์๋ช , ๊ทธ๋ฆฌ๊ณ ๋ฌด์ง(็ก็ฅ)์ ๊ณตํฌ
ํ์ฌ ์ ์๋ฒ๋ 16GB ๋จ์ ์ฅ์ฐฉํ ๊ตฌํ ๋ ธํธ๋ถ ์์์ <code>tmux</code>๋ผ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ธ์ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ํตํด 24์๊ฐ ์ธ๋กญ๊ฒ ๋์๊ฐ๊ณ ์์ต๋๋ค. ํ์ด์ฌ ๋ฐฑ์๋ ์ฝ๋๊ฐ ์๋ฌด๋ฆฌ ์๋ฒฝํ๋๋ผ๋, ๋ฌผ๋ฆฌ์ ์ธ ๋ ธํธ๋ถ์ ๋ฐ์ด, ๊ฐ์์ค๋ฌ์ด ์ธํฐ๋ท ํ์ ์ ๋๊น, ํน์ ์ ๊ฐ ๋ฏธ์ฒ ์ก์๋ด์ง ๋ชปํ ์น๋ช ์ ์ธ ๋ฒ๊ทธ(์๋ฅผ ๋ค์ด ๋๊ตฐ๊ฐ ์ด์ํ ๋ฌธ์๋ฅผ ์ ๋ ฅํด DB ์ฐ๊ฒฐ์ด ๋์ด์ง๋ ํ์)๊ฐ ๋ฐ์ํ๋ฉด ์ฌ์ดํธ๋ ๊ทธ ์ฆ์ ๋ง๋น๋ฉ๋๋ค.
๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์ฌ์ดํธ๊ฐ ๋ฉ์ถ๊ฑฐ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋, ์ ๊ฐ ๊ทธ๊ฒ์ '์ฆ๊ฐ์ ์ผ๋ก' ์ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ํ์ฌ๋ก์๋ ์ ๊ฐ ์ค๋งํธํฐ์ผ๋ก ์์๋ก ์ ์ฌ์ดํธ์ ์ ์ํด ๋ณด๊ฑฐ๋, ํด๊ทผ ํ ๋ ธํธ๋ถ์ ์ด์ด ์ฐ๋ถํฌ ์๋ฒ์ SSH๋ก ์๊ฒฉ ์ ์ํ ๋ค ๊น๋ง ํฐ๋ฏธ๋ ์ฐฝ์ ๋ก๊ทธ(Log)๋ฅผ ์๋ฐฑ ์ค์ฉ ์๋ก ์ฌ๋ ค๋ณด๋ฉฐ "์, ๋ฎ์ ์๋ฌ๊ฐ ๋ฌ์๊ตฌ๋..." ํ๊ณ ๋ค๋ฆ๊ฒ ๊นจ๋ซ๋ ์๋ฐ์ ์์ต๋๋ค. ๋ง์ฝ ๊ตฌ๊ธ ๊ฒ์ ๋ก๋ด์ด ์ ์ฌ์ดํธ๋ฅผ ์์งํ๋ฌ ๋ฐฉ๋ฌธํ๋๋ฐ ํํ ๊ทธ๋ ์๋ฒ๊ฐ ์ฃฝ์ด์๋ค๋ฉด? ๊ทธ๋์ ๊ณต๋ค์ฌ ์์ ์ฌ๋ฆฐ SEO ์ ์์ ์ ๋์ผ์ค ํฉ๊ฒฉ์ ๊ฟ์ ์ฐ์ฐ์กฐ๊ฐ์ด ๋ ๊ฒ์ ๋๋ค.
์๋ ๋ชจ๋ํฐ๋ง์ ํ๊ณ๋ฅผ ๋๋ค: ์๋ฌ ์๋ฆผ ์๋ํ ๊ธฐํ
๋ ์ด์ ๋ถ์๊ฐ์ ๋จ๋ฉฐ ํ๋ฃจ์ ์์ญ ๋ฒ์ฉ ์๋ก๊ณ ์นจ์ ๋๋ฅด๋ '์๋ ๋ชจ๋ํฐ๋ง'์ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋์ ์ ๋ ์ฌ์ดํธ์ ์น๋ช ์ ์ธ ๋ฌธ์ (500 Internal Server Error ๋ฑ)๊ฐ ๋ฐ์ํ๋ฉด, ํ์ด์ฌ ์๋ฒ๊ฐ ์ฆ์ ์ ์ค๋งํธํฐ์ผ๋ก ๊ธด๊ธ ๊ตฌ์กฐ ์ ํธ๋ฅผ ๋ณด๋ด๋ '์ค์๊ฐ ์๋ฌ ์ถ์ ๋ฐ ์๋ ์๋ฆผ ์์คํ '์ ๊ตฌ์ถํ๊ธฐ๋ก ๊ธฐํํ์ต๋๋ค.
1๋จ๊ณ: ํ์ด์ฌ Logging ์์คํ ์ ์ธ๋ถํ ํ์ฌ๋ ์๋ฒ ์ฐฝ์ ๋ชจ๋ ์ ์ ๊ธฐ๋ก๊ณผ ์๋ฌ๊ฐ ๋ค์์ฌ์ ์ถ๋ ฅ๋๊ณ ์์ต๋๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ํ์ด์ฌ์ ๊ธฐ๋ณธ ๋ด์ฅ ๋ชจ๋์ธ <code>logging</code>์ ํ์ฉํ์ฌ ๋ก๊ทธ์ ๋ฑ๊ธ์ ๋๋ ๊ณํ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์ INFO ๋ฑ๊ธ์ผ๋ก ํ์ผ์ ์กฐ์ฉํ ์ ์ฅํ๊ณ , ํ์ด์ง ์ ์ ์คํจ(404)๋ ์๋ฒ ๋ด๋ถ ์๋ฌ(500) ๊ฐ์ ์น๋ช ์ ์ธ ๋ฌธ์ ๋ ERROR๋ CRITICAL ๋ฑ๊ธ์ผ๋ก ๋ถ๋ฅํ์ฌ ์๋ฒ๊ฐ ์ค์ค๋ก ์ฌํ์ ์ฌ๊ฐ์ฑ์ ์ธ์งํ๋๋ก ์ฝ๋๋ฅผ ๊ฐ์กฐํ ๊ฒ์ ๋๋ค.
2๋จ๊ณ: ๋์ค์ฝ๋(Discord) Webhook ์ฐ๋ ์๋ฌ๋ฅผ ๊ฐ์งํ๋ค๋ฉด ์ด์ ์ ์๊ฒ ์๋ ค์ผ๊ฒ ์ฃ . ๋ฌธ์ ๋ฉ์์ง๋ ์นด์นด์คํก ์๋ฆผ์ ๊ตฌํํ๋ ค๋ฉด ๋ณต์กํ API ์ฌ์ฌ์ ๋น์ฉ์ด ๋ฐ์ํ์ง๋ง, ์ ์ธ๊ณ ๊ฒ์ด๋จธ์ ๊ฐ๋ฐ์๋ค์ด ์ฌ๋ํ๋ ๋ฉ์ ์ '๋์ค์ฝ๋(Discord)'๋ฅผ ํ์ฉํ๋ฉด ์ด ๋ชจ๋ ๊ฒ์ด ๋ฌด๋ฃ์ ๋๋ค. ์ ๊ฐ์ธ ๋์ค์ฝ๋ ์๋ฒ์ '๋น๋ฐ ๊ด์ ์' ์ฑ๋์ ํ๋ ๋ง๋ค๊ณ Webhook(์นํ ) URL์ ๋ฐ๊ธ๋ฐ์ ์์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ FastAPI์ 'Exception Handler(์์ธ ์ฒ๋ฆฌ๊ธฐ)' ๊ธฐ๋ฅ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ, ์๋ฒ์์ ERROR ๋ฑ๊ธ์ ๋ฌธ์ ๊ฐ ํฐ์ง๋ฉด ๊ทธ ์ฆ์ ํ์ด์ฌ์ด ๋์ค์ฝ๋ ์นํ ์ฃผ์๋ก ์๋ฌ์ ์์ธ, ๋ฐ์ ์๊ฐ, ๋ฌธ์ ๊ฐ ๋ URL์ ์ ๋ฆฌํ์ฌ ์ค๋งํธํฐ ํธ์ ์๋ฆผ์ผ๋ก ์ ์กํ๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
3๋จ๊ณ: Slack์ด ์๋ Discord๋ฅผ ์ ํํ ์ด์ ๋ณดํต ๊ธฐ์ ์์๋ ์ฌ๋(Slack)์ ๋ง์ด ์ฐ์ง๋ง, 1์ธ ๊ฐ๋ฐ์์๊ฒ๋ ๋์ค์ฝ๋๊ฐ ์๋์ ์ผ๋ก ์ ๋ฆฌํฉ๋๋ค. ๋ชจ๋ฐ์ผ ์ฑ์ ๋ฐ์ ์๋๊ฐ ํจ์ฌ ๋น ๋ฅด๊ณ , ๋ฐค์ ์๊ณ ์์ ๋ ํน์ ์ฑ๋์ ์๋ฆผ๋ง ์๋ํ๊ฒ ์ธ๋ฆฌ๋๋ก ์ค์ (๋ฐฉํด๊ธ์ง ๋ชจ๋ ์์ธ ์ฒ๋ฆฌ)ํ๋ ๊ฒ์ด ๋งค์ฐ ์ง๊ด์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐฉ๊ตฌ์ ์๋ฒ ๊ด๋ฆฌ์์๊ฒ๋ ์๋ฒฝ์ ์๋ฒ๊ฐ ์ฃฝ์์ ๋ ์ ๋ฅผ ๊นจ์์ค ํ์คํ ์๋ ์๊ณ๊ฐ ํ์ํ๋๊น์.
๋งบ์๋ง: ์ง์ ํ '์์คํ ๊ด๋ฆฌ์'๋ก ๊ฑฐ๋ญ๋๋ ๊ธธ
์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋ ์๋ฒฝํ ์๋ฒ๋ ์ธ์์ ์กด์ฌํ์ง ์์ต๋๋ค. ๊ตฌ๊ธ์ด๋ ๋ค์ด๋ฒ ๊ฐ์ ๋๊ธฐ์ ์๋ฒ๋ ์ข ์ข ๋ฉ์ถ๊ณค ํ๋๊น์. ์ค์ํ ๊ฒ์ ์๋ฌ๋ฅผ ์์ ์ ๋ด๋ ๊ฒ์ด ์๋๋ผ, "์๋ฌ๊ฐ ๋ฌ์ ๋ ์ผ๋ง๋ ๋นจ๋ฆฌ ์์์ฑ๊ณ ๋ณต๊ตฌํ ์ ์๋๊ฐ"ํ๋ ์ด์์ ๋ฌ๋ฏธ์ผ ๊ฒ์ ๋๋ค.
์ด์ ํฐ๋ฏธ๋ ์ฐฝ๋ง ๋ฉํ๋ ๋ฐ๋ผ๋ณด๋ ์ด๋ณด๋ฅผ ๋ฒ์ด๋, ๋์ค์ฝ๋ ์๋ฆผ์ ํตํด ์ค๋งํธํ๊ฒ ์๋ฒ์ ์๋ช ์งํ๋ฅผ ์ฒดํฌํ๋ ์ง์ ํ ์์คํ ๊ด๋ฆฌ์(SysAdmin)๋ก ๋ ๋ฒจ ์ ํ ์ฐจ๋ก์ ๋๋ค. ๋น์ฅ ๋ด์ผ๋ถํฐ ํ์ด์ฌ ์๋ฒ ์ฝ๋๋ฅผ ์ด์ด <code>try-except</code> ๊ตฌ๋ฌธ๊ณผ ๋์ค์ฝ๋ ์นํ ์ ์ฐ๊ฒฐํ๋ ์ฝ์ง(?)์ ์์ํด ๋ณด๊ฒ ์ต๋๋ค. ์ ์ค๋งํธํฐ์ ์ฒซ ๋ฒ์งธ ์๋ฌ ์๋ฆผ์ด ์ฑ๊ณต์ ์ผ๋ก ์ธ๋ฆฌ๋(๋ฌผ๋ก ์ง์ง ์๋ฌ๊ฐ ์๋๋ผ ํ ์คํธ์ฉ์ด๊ธธ ๋ฐ๋๋๋ค!) ๊ทธ๋ ์ ๊ตฌ์ถ๊ธฐ๋ฅผ ๋ค์ ํฌ์คํ ์์ ๊ธฐ๋ํด ์ฃผ์ธ์.
๐ฌ ๋๊ธ 0๊ฐ