[์ธ์ ] 2. ๋ฐฉ๊ตฌ์ 500GB ์๋ฒ์ ์๊ธฐ: ํ์ด์ฌ Pillow์ WebP๋ก ์ด๋ฏธ์ง ์ฉ๋ ๋ค์ด์ดํธ ์ฑ๊ณต๊ธฐ
๋ค์ด๊ฐ๋ฉฐ: ๋ด ๋ ธํธ๋ถ ํ๋๋์คํฌ๊ฐ ๋น๋ช ์ ์ง๋ฅด๊ธฐ ์์ํ๋ค
๊ตฌ๊ธ ์์น ์ฝ์์ ์ฌ์ดํธ๋งต์ ๋ฌด์ฌํ ์ ์ถํ๊ณ , ๊ฒ์ ๋ก๋ด์ด ์ ์ปค๋ฎค๋ํฐ(<code>inspeep.com</code>)๋ฅผ ๊ธ์ด๊ฐ๊ธฐ๋ฅผ ๋๊ธํ๊ฒ ๊ธฐ๋ค๋ฆฌ๋ ์ฐธ์ด์์ต๋๋ค. ์ฌ์ดํธ๊ฐ ๊ฝค ๊ทธ๋ด์ธํด์ง ๊ฒ์ ๋ณด๊ณ ์ง์ธ๋ค์ด ์ค๋งํธํฐ์ผ๋ก ์ฐ์ ๋ฐ๋ ค๊ฒฌ ์ฌ์ง์ด๋ ํ๊ฒฝ ์ฌ์ง๋ค์ ํ๋๋์ฉ ํ ์คํธ ์ผ์ ์ฌ๋ ค์ฃผ๊ธฐ ์์ํ์ฃ .
์น์งํ ์ธ๋ค์ผ ๊ฒ์ํ์ ์ฌ์ง๋ค์ด ์๋ก๋ฌ๋กํ๊ฒ ์ฑ์์ง๋ ๋ชจ์ต์ ๋ณด๋ฉฐ ํ๋ญํ๊ฒ ๋ฏธ์๋ฅผ ์ง๊ณ ์๋ ๊ทธ๋, ๋ฆฌ๋ ์ค ํฐ๋ฏธ๋ ์ฐฝ์์ ๋ฌด์ฌ์ฝ ์๋ฒ์ ๋จ์ ์ฉ๋์ ํ์ธํด ๋ณด์๋ค๊ฐ ์ ๋ ๋ฑ๊ณจ์ด ์๋ํด์ง๋ ๊ฒ์ ๋๊ผ์ต๋๋ค.
"์ ๊น, ๋จ์ ์ฉ๋์ด ์ ์ด๋ ๊ฒ ๋นจ๋ฆฌ ์ค์ด๋ค์ง?"
1. 500GB์ ์ฐฉ๊ฐ: ํฑ์์ด ๋ถ์กฑํ ๋ฐฉ๊ตฌ์ ์๋ฒ์ ๋ฌผ๋ฆฌ์ ํ๊ณ

<๊ฐ๋ฐ์ฉ ๋ฉ์ธ์ปดํจํฐ, ๋๋ํ ์ฉ๋์ผ๋ก ๊ตฌ๋งคํ๋๋ฐ ์ด๋์ ์ ๋ฐ์ด ์ฐผ๋ค.>
์ ๊ฐ ํ ์๋ฒ๋ก ๊ตฌ์ถํ ๊ตฌํ ๋ ธํธ๋ถ์ ํ๋๋์คํฌ ์ด์ฉ๋์ 500GB์ ๋๋ค. ์ฒ์ ๋ฆฌ๋ ์ค๋ฅผ ๊น ๋๋ง ํด๋ "๊ฐ์ธ ํ๋ก์ ํธ์ธ๋ฐ 500๊ธฐ๊ฐ๋ฉด ํ์ ์ฐ์ง!"๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ํ์ง๋ง ์ด๊ฒ์ ์๋ฒฝํ ์ค์ฐ์ด์์ต๋๋ค.
์์ฆ ์ค๋งํธํฐ ์นด๋ฉ๋ผ์ ํ์ง์ด ์๋ ์ข์์ง๋ค ๋ณด๋, ์์ดํฐ์ด๋ ๊ฐค๋ญ์๋ก ๋์ถฉ ์ฐ์ ์ฌ์ง ํ ์ฅ์ ์๋ณธ ์ฉ๋์ด ๊ฐ๋ณ๊ฒ 5MB์์ 10MB๋ฅผ ํ์ฉ ๋์ด๊ฐ๋๋ค. ๋ง์ฝ ์ ์ปค๋ฎค๋ํฐ๊ฐ ์กฐ๊ธ ํ์ฑํ๋์ด์ ํ๋ฃจ์ ์ ์ ๋ค์ด 100์ฅ์ ์ฌ์ง์ ์ฌ๋ฆฐ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ํ๋ฃจ์ 1GB, ํ ๋ฌ์ด๋ฉด 30GB์ ์ฉ๋์ด ์ฆ๋ฐํฉ๋๋ค.
์ฌ๊ธฐ์ ๋์ด ์๋์ฃ . ์ฐ๋ถํฌ ์ด์์ฒด์ ์์ฒด ์ฉ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฉ๋, ๋ก๊ทธ ํ์ผ ๋ฑ์ ์ ์ธํ๊ณ ๋๋ฉด, ๋น ๋ฅด๋ฉด ๋ฐ๋ ์์ ์ ๋ฐฉ๊ตฌ์ ๋ ธํธ๋ถ์ 'Disk Full(์ฉ๋ ์ด๊ณผ)' ์๋ฌ๋ฅผ ๋ฟ์ผ๋ฉฐ ์ฅ๋ ฌํ๊ฒ ํญํ๋ ๊ฒ์ด ๋ปํ์ต๋๋ค. ### 2. ๋์ผ๋ก ํด๊ฒฐํ ๊ฒ์ธ๊ฐ, ๊ธฐ์ ๋ก ๊ทน๋ณตํ ๊ฒ์ธ๊ฐ?
๊ฐ์ฅ ์ง๊ด์ ์ด๊ณ ์ฌ์ด ํด๊ฒฐ์ฑ ์ ์ธ์ฅ ํ๋๋์คํฌ(4TB, 8TB ๋ฑ)๋ฅผ ํ๋ ์ฌ์ ๋ ธํธ๋ถ์ ๊ฝ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๊ฒฐ์ ์ฐฝ์ ๋์๋๊ณ ๊ฐ๋งํ ์๊ฐํด ๋ณด๋, ์ด๊ฑด ์ ๊ฐ ์ฒ์ ์น์ฌ์ดํธ ๊ฐ๋ฐ์ ์์ํ๋ **'๋ก์คํธ์ํฌ ๊ณจ๋ 40๋ง ์์ ์ด์ฌ'**์ ์ ๋ฉด์ผ๋ก ์๋ฐฐ๋๋ ํ๋์ด์์ต๋๋ค. ๋์ผ๋ก ๋ฌผ๋ฆฌ์ ํ๊ณ๋ฅผ ๋ฎ์ด๋ฒ๋ฆฌ๋ ๊ฑด ๋๊ตฌ๋ ํ ์ ์๋ ์ผ์ด๋๊น์.
"์ง์ง ๊ฐ๋ฐ์๋ผ๋ฉด ๋์ด ์๋๋ผ ์ํํธ์จ์ด์ ์ธ ์ต์ ํ๋ก ์ด ์๊ธฐ๋ฅผ ๋ํํด์ผ ํ์ง ์์๊น?"
์ ๋ ํ๋๋์คํฌ ๊ฒฐ์ ์ฐฝ์ ์กฐ์ฉํ ๋ซ๊ณ , ์ด๋ป๊ฒ ํ๋ฉด ์ด ๋ฌด์๋ฌด์ํ ์ฌ์ง ํ์ผ๋ค์ ๋ฉ์น๋ฅผ ์ค์ผ ์ ์์์ง ํด๋ต์ ์ฐพ์ ๊ตฌ๊ธ๋ง์ ๋ฐ๋ค๋ก ๋ฐ์ด๋ค์์ต๋๋ค.
3. ๊ตฌ์ ํฌ์ ๋ฑ์ฅ: ํ์ด์ฌ Pillow ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ WebP ํฌ๋งท
๊ฑฐ๋ IT ๊ธฐ์ ๋ค์ด ์ด๋ฏธ์ง ์ฉ๋์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ์กฐ์ฌํ๋ค๊ฐ ๋ ๊ฐ์ง ์์ฒญ๋ ๋ฌด๊ธฐ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ ํ์ด์ฌ์ ๊ฐ๋ ฅํ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ **<code>Pillow</code>**์ ๋๋ค. ๋ฐฑ์๋์์ ์ด๋ฏธ์ง๋ฅผ ์๋ฅด๊ณ , ์ค์ด๊ณ , ํ์ง์ ์กฐ์ ํ ์ ์๋ ๋ง๋ฒ ๊ฐ์ ๋๊ตฌ์ฃ . ๋ ๋ฒ์งธ๋ ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ ์ฐจ์ธ๋ ์ด๋ฏธ์ง ํฌ๋งท, **<code>WebP</code>**์ ๋๋ค. ๊ธฐ์กด์ ์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ JPG๋ PNG ํ์ผ๊ณผ ํ์ง์ ๊ฑฐ์ ๋๊ฐ์ผ๋ฉด์๋, ์ฉ๋์ ์ ๋ฐ ์ดํ๋ก ํ๊ธฐ์ ์ผ๋ก ์ค์ฌ์ฃผ๋ ์น ์ ์ฉ ์์ถ ํฌ๋งท์ ๋๋ค. ์์ฆ ์ฐ๋ฆฌ๊ฐ ์๋ ๋๋ถ๋ถ์ ๋ํ ์ปค๋ฎค๋ํฐ๋ ํฌํธ ์ฌ์ดํธ๋ ์ด๋ฏธ ์ด WebP ํฌ๋งท์ ํ์ค์ผ๋ก ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
"์ด๊ฑฐ๋ค!" ์ ๋ ์ฆ์ FastAPI ์๋ฒ ์ฝ๋๋ฅผ ๋ฏ์ด๊ณ ์น๊ธฐ ์์ํ์ต๋๋ค.
4. ๋ฐฑ์๋์์ ๋์์ฑ๊ธฐ: ์ฉ๋ 90% ์์ถ์ ๋ง๋ฒ

<์ค๋งํธํฐ์์ ๋ฐ๋ก ๋๊ธด ์ด๋ฏธ์งํ์ผ, ์ฉ๋์ด ๋ฌด๋ ค 10MB๋ค.>
๋ชฉํ๋ ์ ์ ๊ฐ ์๋ณธ ์ฌ์ง(JPG, PNG ๋ฑ)์ ์ ๋ก๋ํ์ ๋, ์๋ฒ ํ๋๋์คํฌ์ ์๋ณธ์ด ๊ทธ๋๋ก ์ ์ฅ๋๋ ๊ฒ์ ๋ง๋ ๊ฒ์ ๋๋ค.
์ ์ ๊ฐ <code>UploadFile</code>์ ํตํด ์ฌ์ง์ ์๋ฒ๋ก ์ ์กํ๋ ์๊ฐ, <code>Pillow</code> ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ <code>Image.open()</code> ํจ์๋ฅผ ์ด์ฉํด ๊ณต์ค์์ ์ฌ์ง์ ๋์์ฑ๋๋ก ์ฝ๋๋ฅผ ์งฐ์ต๋๋ค.
<ul><li>1๋จ๊ณ (๋ฆฌ์ฌ์ด์ง): ๊ฐ๋ก ํฝ์ ์ด 4000px์ด ๋์ด๊ฐ๋ ๋ฌด์ํ๊ฒ ํฐ ์ฌ์ง์ ๋ชจ๋ํฐ ์ต๋ ํด์๋์ธ 1920px ์์ค์ผ๋ก ์ฌ์ด์ฆ๋ฅผ ์ ์ ํ ์ค์ ๋๋ค.
</li><li>2๋จ๊ณ (ํฌ๋งท ๋ณํ): <code>save()</code> ํจ์๋ฅผ ํธ์ถํ ๋ ํ์ผ ํ์์ <code>format='WEBP'</code>๋ก ๊ฐ์ ์ง์ ํ๊ณ , ํ์ง ์ ํ๊ฐ ์ฌ๋ ๋์ ๋์ง ์๋ ์ ์ธ <code>quality=80</code> ์ต์ ์ ์ฃผ์ด ์ ์ฅํ์ต๋๋ค.
</li></ul>์ฝ๋๋ฅผ ์๋ฒ์ ์ฌ๋ฆฌ๊ณ , ๋จ๋ฆฌ๋ ๋ง์์ผ๋ก ์ ์ค๋งํธํฐ์ ์๋ 10MB์ง๋ฆฌ ์ฌ์ง ์๋ณธ์ ์ปค๋ฎค๋ํฐ์ ์ ๋ก๋ํด ๋ณด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ ์ค ํฐ๋ฏธ๋์ ์ด์ด ์ ์ฅ๋ ํ์ผ์ ์ฉ๋์ ํ์ธํ ์๊ฐ, ์ ๋์ ์์ฌํ์ต๋๋ค.

<์์๊ฐ์ ์์์ง ์ฉ๋>
๋ฌด๋ ค 10MB์ ๋ฌํ๋ ์ฌ์ง์ด ํ์ง ๋ญ๊ฐ์ง ํ๋ ์์ด ๊ณ ์ 24.0KB์ง๋ฆฌ WebP ํ์ผ๋ก ์์ถ๋์ด ์ ์ฅ๋ ๊ฒ์ ๋๋ค. ์ฉ๋์ด ๋ฌด๋ ค 90% ์ด์ ๋ค์ด์ดํธ๋ ์ ์ ๋๋ค!
### ๋ง์น๋ฉฐ: ์๊ธฐ๋ฅผ ๊ธฐํ๋ก, ์ผ์์ด์กฐ์ ์ต์ ํ๋ฅผ ๋ง๋ณด๋ค
์ด ์์ถ ์์คํ ์ ๋์ ํ๊ณ ๋๋ ๋ ธํธ๋ถ ํ๋๋์คํฌ๊ฐ ๊ฐ๋ ์ฐฐ ๊ฒ์ด๋ผ๋ ๊ณตํฌ์์ ์๋ฒฝํ๊ฒ ํด๋ฐฉ๋์์ต๋๋ค. ์ด์ 500GB ํ๋๋์คํฌ๋ก๋ ์์ญ๋ง ์ฅ์ ์ปค๋ฎค๋ํฐ ์ฌ์ง์ ๊ฑฐ๋ฌํ ํ์ ์ ์๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ ๋๋ผ์ด ๊ธ์ ์ ์ธ ๋๋นํจ๊ณผ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ด๋ฏธ์ง ํ์ผ๋ค์ ๋ฉ์น๊ฐ 10๋ถ์ 1๋ก ์ค์ด๋ค๋ค ๋ณด๋, ์น์ฌ์ดํธ์ ๋ก๋ฉ ์๋๊ฐ ๋ฏธ์น ๋ฏ์ด ๋นจ๋ผ์ง ๊ฒ์ ๋๋ค.
์์ ์๋ ์ธ๋ค์ผ ๊ฒ์ํ์์ ํ์ด์ง๋ฅผ ๋๊ธธ ๋๋ง๋ค ์์์๋ถํฐ ์๋๋ก ์ฌ์ง์ด ๋. ๋. ๋๊ธฐ๋ฉฐ ๋ก๋ฉ๋๋ ๊ฒ์ด ๋ณด์๋๋ฐ, ์ด์ ๋ ํด๋ฆญํ์๋ง์ ์ค๋งํธํฐ ํ๋ฉด์ ์์ญ ์ฅ์ ์ฌ์ง์ด 0.1์ด ๋ง์ ํ! ํ๊ณ ๋น๋๋ค.
์๋ฒ ์ฉ๋์ ์๋ผ๋ ค๋ค ์ ์ ์ ์พ์ ํ ์ฌ์ฉ ๊ฒฝํ(UX)๊น์ง ์ก์๋ธ, ๊ทธ์ผ๋ง๋ก ์ผ์์ด์กฐ์ ์๋ฒฝํ ๊ธฐ์ ์ ์ต์ ํ์์ต๋๋ค. ๋ฐฉ๊ตฌ์ ํ ์๋ฒ์ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํ ๋ฐ๋ฒ๋ฅ์ด ์ ๋ฅผ ํ ๋จ๊ณ ๋ ์ฑ์ฅ์์ผ ์ฃผ์๋ค์.
์ ์ ์น์ฌ์ดํธ ๊ฐ๋ฐ์ด ์ ์ ์งํํ๊ณ ์์ต๋๋ค!!
๐ฌ ๋๊ธ 0๊ฐ