[MEMO APP] Compression
๐จ๐ป Compression ๋ฏธ๋ค์จ์ด ์ค์น
๐ Compression์ด๋
๋ด๊ฐ ์ด์์ค์ธ ์น์๋น์ค์ ์๋ต์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด ๋ฌด์์ด ์์๊น์?
์น์๋ฒ์ WAS๋ฅผ ํจ๊ป์ฌ์ฉํด์ ์น์๋ฒ์ ์ค์ ์ผ๋ก ํฅ์์ํค๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง, ์ค๋์ Javascript์ compression ๋ฏธ๋ค์จ์ด๋ฅผ ํตํด ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ํ์ฌ ๊ฐ์ด ํ์ตํ๊ณ ์ด๋ฒ ํ ์ดํ๋ก์ ํธ์ ์ ์ฉ์์ผ ๋ณด๊ฒ ์ต๋๋ค.
compression์ gzip์์ถ์ ์ด์ฉํด ์๋ต์๋๋ฅผ ํฅ์์์ผ์ฃผ๋ ๋ฏธ๋ค์จ์ด์ ๋๋ค.
(์์ผ๋ก ์ค๋ช ๋๋ฆด ๋ด์ฉ์ ์๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ๋ฐ ๋ฐ์ทํ์ฌ ์์ฑํ ๋ด์ฉ์์ ์๋ ค๋๋ฆฝ๋๋ค.)
https://taetaetae.github.io/2018/04/01/apache-gzip/
โก gzip์ด๋ ๋ฌด์์ธ๊ฐ..?
- gzip์ด๋ ํ์ผ ์์ถ์ ์ฐ์ด๋ ์์ฉ ์ํํธ์จ์ด๋ก GNU zip์ ์ค์๋ง์ด๋ผ๊ณ ํฉ๋๋ค.
( ์ฐธ๊ณ : https://ko.wikipedia.org/wiki/Gzip )
์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ธ๋ผ์ฐ์ ์์ gzip์ ์ง์ํด์ฃผ์ด์ผ ํ๋๋ฐ https://caniuse.com/#search=gzip ๋ฅผ๋ค์ด๊ฐ ํ์ธํด๋ณด๋ฉด ํ์ฌ ๊ฑฐ์ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๋ค์ด gzip์ ์ง์ํด ์ฃผ๊ณ ์์ต๋๋ค.
โก gzip์ ๋ฐ์ดํฐ ํ๋ฆ
gzip ์ฌ์ฉ์
- ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ธก์ /index.html์ ์์ฒญํ๋ค.
- ์๋ฒ๋ Request๋ฅผ ํด์ํ๋ค.
- Response์ ์์ฒญํ ๋ด์ฉ์ ๋ด์ ๋ณด๋ธ๋ค.
- Response๋ฅผ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ณด์ฌ์ค๋ค. (100kb)
gzip ์ฌ์ฉํ
- ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ธก์ /index.html์ ์์ฒญํ๋ค.
- ์๋ฒ๋ Request๋ฅผ ํด์ํ๋ค.
- Response์ ์์ฒญํ ๋ด์ฉ์ ๋ด์ ๋ณด๋ธ๋ค. ์ฌ๊ธฐ์ ํด๋น ๋ด์ฉ์ ์์ถํ๋ ๊ณผ์ ์ด ์ถ๊ฐ๊ฐ ๋๋ค.
- Response header์ ์์ถ์ด ๋์ด์๋ค๋ ์ ๋ณด๋ฅผ ํ์ธํ ๋ธ๋ผ์ฐ์ ๋ ํด๋น ๋ด์ฉ์ ๋ฐ๊ณ (10kb), ์์ถ์ ํด์ ํ ํ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ๋ง์๋๋ฆฌ์๋ฉด, gzip์ ์ด์ฉํ๋ฉด ์๋ฒ๊ฐ ์ฌ์ฉ์์๊ฒ ์๋ตํ๋ ๋ฉ์์ง๋ฅผ ์์ถํด์ ๋ณด๋ด์ฃผ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ๋น์ฉ(์ ์ก๋๋ ๋ฐ์ดํฐ์)์ ์ค์ผ ์ ์์ด ์๋ต์ด ๋นจ๋ผ์ง๋ค๋ ์ด์ผ๊ธฐ์ ๋๋ค.
โก gzip์ ๋ง๋ฅ์ธ๊ฐ?(๋ฌด์กฐ๊ฑด ์ฌ์ฉ?)
SW๊ฐ๋ฐ์ ์์ด์ ๋ฌด์กฐ๊ฑด์ ์ธ ํด๋ต์ ์์ต๋๋ค. ๊ฐ์ฅ ์ํฉ์ ์ ํฉํ Best Choice๋ง ์์๋ฟ์ด์ง Best solution์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฌผ๋ก gzip์ ์ด์ฉํ๋ฉด ๋คํธ์ํฌ ๋น์ฉ์ด ์ ์ฝ์ด๋์ด ์๋ต์๋๊ฐ ๋นจ๋ผ์ง๋ค๋ ์ฅ์ ์ด ์๊ฒ ์ง๋ง, ๋ฐ๋๋ก ํด๋ผ์ด์ธํธ ์ ์ฅ์์๋ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ํด๋ ํ๋ ๊ณผ์ ์ด ํ์ํด์ง์ ๋ฐ๋ผ CPU๋ฅผ ์ฌ์ฉํ๊ฒ๋์ด ์คํ๋ ค ๋๋๋ง์ด ๋ฆ์ด์ง๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ์ํฉ์๋ฐ๋ผ ์ฌ์ฉ์ ๊ณผ ์ฌ์ฉํ์ ์ฑ๋ฅ์ ๋น๊ตํด์ ์ฌ์ฉํ๋๊ฒ์ด BEST WAY๋ค ๋ผ๊ณ ๋ง์๋๋ฆด์ ์์๊ฒ ๊ฐ์์!
๐ Compression ์ค์น ๋ฐ ์ ์ฉ
( ์ด์ ๋ถํฐ ์์ฑ๋๋ ๋ด์ฉ์ ์๋์ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์งํ๋จ์ ๋ง์๋๋ฆฝ๋๋ค. )
https://www.tutorialspoint.com/koajs/koajs_compression.htm
์์ ๋งํฌ๋ฅผ ํ๊ณ ๋ค์ด๊ฐ๋ฉด ๊ฐ์ฅ ์๋จ์ค๋ช ์ ์ด๋ฐ ๊ธ๊ท๊ฐ ๋ณด์ ๋๋ค.
๋ฒ์ญ :
Compression์ ์ฐ๋ฆฌ์ ์ฌ์ดํธ์ ๋์ญํญ๊ณผ ์๋๋ฅผ ์ ์ฝํ๋๋ฐ ๊ฐ๋จํ๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๊ฒ์ ์ค์ง ์ต์ ๋ธ๋ผ์ฐ์ ์๋ง ํธํ์ด ๋์ด์ง๋ฉฐ ๋ง์ฝ ์ฐ๋ฆฌ์ ์ ์ ๊ฐ ์ค๋๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ ๋๋ ์ด๋ฅผ ์ฃผ์ํด์ ์ฌ์ฉํด์ผํฉ๋๋ค. |
ํ์ง๋ง, ์์์ ์ค๋ช ํ๋ฏ์ด ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ฐ gzip์ ์ง์ํด์ฃผ๊ณ ์์์ผ๋ก ํฌ๊ฒ ๊ฑฑ์ ํ์คํ์๋ ์์๊ฒ ๊ฐ์ต๋๋ค.
( ์๋ง.. ๊ทธ๋ ๊ฒ ์ฃ ? )
๊ทธ๋ผ ์ฐ๋ฆฌ์ ํ๋ก์ ํธ์ ์ค์น๋ฅผ ์งํํด๋ณผ๊ฒ์. ์๋์ ์ฌ์ง์ฒ๋ผ yarn add koa-compression์ ์ด์ฉํด ์ค์นํด ์ฃผ์ธ์.
์์์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์์ ์ฝ๋๋ ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๊ฒ ์ต๋๋ค.
https://github.com/koajs/compress
(ํ์ด๋ผ์ดํธ ๋ถ๋ถ์ ๋ณผ๊ฒ์.)
์์ ์์ค์์ compress ์์ ์ต์ ๋ค์ ๋ํด์ ์ข ์์๋ณด๋๋ก ํ ๊ฒ์.
|
์์ ์ฌ์ง์ ๋ณด๋ฉด compress๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด์ํ๊ฒ๋ ์๋์ zlib์ ์ค์น๋ฅผ ํ์ ์ด ์๋๋ฐ ๋ถ๋ฌ์ค๊ณ ์๋ ๋ชจ์ต์ ๋ณผ ์ ์๋๋ฐ ์ญ์๋ ์์ค์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋ ์ค๋ฅ๊ฐ ๋์ต๋๋ค.
๊ณ ๋ก zlib๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ณ ์ค์น๋ฅผ ํด์ฃผ๋๋ก ํ ๊ฒ์.
โก zlib๋?
zlib ์ gzip ๋ฑ์ผ๋ก ์์ถ๋ ํ์ผ์ ์ฝ๊ณ ์ฐ๊ธฐ ์ํด ๊ผญ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. MRTG ๋ฅผ ์ด์ฉํ ํธ๋ํฝ๋ชจ๋ํฐ๋ง ํํ์ด์ง๋ฅผ ๊ตฌ์ถํ ๋์ ๋ฐ๋์ ํ์ํ๋ค๊ณ ํ๋ค์.
yarn add zlib ๋ฅผ ์ด์ฉํด ์ค์น๋ฅผ ํด์ค๋๋ค.
์๊น์ ์ ์์ ์์ค๋ฅผ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ถ๊ฐํด์ค๊ฒ์.
(srcํด๋ ์์ index.js๋ฅผ ์ด์ด์ฃผ์ธ์.)
์์๊ฐ์ด ์์ค์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ์์ต๋๋ค.
์ด์ ํ ์คํธ๋ฅผ ์งํํด ๋ณผ๊ป๋ฐ์, ์ง๊ธ ์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ์์ฑํ ์ฝ๋๋ ๋ฌธ์๋ง ์ ์กํด์ฃผ๋ ๊ฐ๋จํ ์๋ต์ด๋ค๋ณด๋ ์ด๋ฃจ๊ฐ threshold๋ก ์ง์ ํ ํฌ๊ธฐ๋ณด๋ค ์์ ๋ฐ์ดํฐ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ง๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ์ด๋ฒ ํ๋ก์ ํธ ํฌ์คํ ์ด๋ฐ์ ๋ง๋ค์ด์ฃผ์๋ react ํด๋(front)์ index.html์ ์ ์กํด์ฃผ๋ ์์ค์ฝ๋๋ฅผ ์์ฑํด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ผ๋จ ์ธ๋ถ ํน์ ํ์ผ(html๊ณผ ๊ฐ์)์ ์ฐ๊ฒฐํด์ฃผ๊ธฐ ์ํด์๋ ๋ช๊ฐ์ง ๋ชจ๋์ ์ค์นํด ์ฃผ์ ์ผ ํฉ๋๋ค.
์๋์ 3๊ฐ์ง๋ฅผ ์ค์นํด ์ฃผ์ ์ผ ํ๋๋ฐ์.
koa-static์ ์ ์ ํ์ผ ์ฆ ์ฌ์ง์ด๋ htmlํ์ผ๊ณผ ๊ฐ์ ๊ณ ์ ๋ ํ์ผ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ชจ๋์ ๋๋ค.
๋จผ์ ์ค์น๋ฅผ ์งํํ ๊ฒ์.
yarn add koa-static
์ค์นํ src/index.js ์ ์๋จ์ koa-static ๊ณผ path ๋ชจ๋์ ๋ถ๋ฌ์ค๊ฒ ์ต๋๋ค.
(path ๋ชจ๋์ node์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ๋ชจ๋์ด๋ผ ๋ณ๋ค๋ฅธ ์ค์น๊ฐ ํ์ ์๋ต๋๋ค ^^)
path ์ static์ ์ด์ฉํด์ ์ฐ๋ฆฌ๋ ์ ์ ํ์ผ๋ค์ด ๋ชจ์ฌ์๋ ํด๋์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ทผ์ ํ์ฉํด์ฃผ๋ ์์ค์ฝ๋๋ฅผ ์์ฑํด ์ฃผ๊ฒ ์ต๋๋ค.
(front ์์ ์์ build ํ์ผ์ ๋ง๋ค์ด์ค๊ฒ๋๋ค.)
์ด๋ ๊ฒ ์ค์ ํด ์ค์ผ๋ก์ ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ์๊ฒ buildํด๋์์ ํ์ผ์ ์ ๊ทผ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ์์ต๋๋ค.
์ด์ ์ด ํด๋์์ index.js ํ์ผ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ฃผ๋ ๋ถ๋ถ์ ์์ฑํ ๊ป๋ฐ์. ์ด๋ ๊ฒ ํ์ผ์ ์ ์กํ๊ธฐ ์ํด์๋ koa-send๋ผ๋ ๋ชจ๋์ ์ค์นํด ์ฃผ์ ์ผํฉ๋๋ค.
yarn add koa-send
๊ทธ๋ฆฌ๊ณ src/index.js ์๋จ์ send๋ฅผ ๋ถ๋ฌ์ ์ค๊ฒ์.
๊ทธ๋ค์ ์ด send๋ฅผ ์ด์ฉํด ํด๋ผ์ด์ธํธ์๊ฒ index.html์ ๋ณด๋ด์ฃผ๊ฒ ์ต๋๋ค.
์ด๋ ๊ฒ ์์ฑํ ํ front ํด๋์์ build ํด๋๋ฅผ ๋ง๋ค์ด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
VScode๋ก ์ด์ ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ front ํด๋๋ฅผ ์ด๊ณ ์ฝ์์ฐฝ์ yarn build ๋ฅผ ํด์ฃผ๊ฒ ์ต๋๋ค.
(์๋์ผ๋ก build ํด๋๊ฐ ๋ง๋ค์ด์ง๋๋ฐ ์ด ์ด์ ๋ front์์ ์ค๋ช ํด ์ฃผ๊ฒ ์ต๋๋ค.)
์ด์ ํ ์คํธ๋ฅผ ์งํํด ๋ณด๊ฒ ์ต๋๋ค.
์ฒ์์ผ๋ก๋ compress๋ฅผ ์ฌ์ฉํ์ง ์์์๋ ์๊ฐ์ ๋๋ค.
(koa์์๋ ๋ฏธ๋ค์จ์ด ์ค์ ์์น๊ฐ ์ค์ํฉ๋๋ค. ์ ๊ฐ ์ฒ์์ compress์์น๋ฅผ ์๋ชป ๋ฃ์ด์คฌ์ด์ ใ ใ ์๋ ์ฌ์ง์์น๋ก ์ด๊ฒจ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.)
์ด๋ฒ์๋ compress๋ฅผ ์ฌ์ฉํ์๋ ์๊ฐ์ ๋๋ค.
์ ์๋๊ฐ ํ์ฐํ๊ฒ ์ค์ฌ์ง๊ฒ ๋ณด์ด์๋์?
์ค๋์ ์ด๋ ๊ฒ compress๋ฅผ ํตํด์ ๋คํธ์ํฌ ์ ์ก๋์ ์ ์ฝํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ณ ์ ์ฉํด ๋ณด์์ต๋๋ค.
์๊ณ ํ์ จ์ด์!
๋ค์์๋ ๋ฉ๋ชจ์ฅ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํ๊ธฐ์ํ ์์ ์ ์งํํด ์ฃผ๊ฒ ์ต๋๋ค.
'Gorilla-Kim > Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MEMO APP] DB Model - Todo, Group (0) | 2020.03.21 |
---|---|
[MEMO APP] Back-end/ REST API+Session&Token-Login (0) | 2020.03.20 |
[MEMO APP] Back-end/ Session&Token-Register (2) (0) | 2020.03.19 |
[MEMO APP] Back-end/ Session&Token-Register (1) (0) | 2020.03.19 |
[MEMO APP] Back-end/ REST API-Register (3) (0) | 2020.03.18 |