Proxy ํจํด์ ๋ญ๊น? ์๋ฒ์์ ๋ค์๋ ๊ฒ ๊ฐ์๋ฐ, ํจํด์ผ๋ก๋ ์ด๋ค ์๋ฏธ๊ฐ ์๋์ง ์์๋ณด์.
Proxy
- ์์ ์ ์๋ฏธ์์๋ ๋ฐฉ๋ฒ
- ์คํ๋ ค ํด๋์ค๊ฐ ๋ช ๋ฐฑํ์ง ์๊ฒ ๋ณด์ด๋ ๊ฒฝ์ฐ๊ฐ ์์ด ์กฐ์ฌํด์ผ ํจ
Proxy๋?
- ์น ๋ธ๋ผ์ฐ์ ์ค์ ์ ํ๋ก์ ์๋ฒ๋ผ๋ ๊ฒ์ด ์์
- ์ค์ ์น ์ฌ์ดํธ ์๋ฒ์ ์ฌ์ฉ์ ์ฌ์ด์ ์๋ ์ค๊ฐ ์๋ฒ๋ฅผ ๋งํจ
- ์ธํฐ๋ท ์์ ์บ์ ๋ฉ๋ชจ๋ฆฌ
Proxy Pattern
- Proxy ์๋ฒ๊ฐ ํ๋ ค๋ ๊ฒ๊ณผ ๋น์ทํจ
- ํด๋์ค์์ ์ด๋ค ์ํ๋ฅผ ์ ์งํ๋๊ฒ ์ ๋งคํ ๊ฒฝ์ฐ๊ฐ ์๋ค.
- ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ์ปค์ ๋ฏธ๋ฆฌ ์ฝ์ด๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํจ
- ๊ฐ์ฒด ์์ฑ์ ๋ฐ์ดํฐ ๋ก๋ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆผ
- ๊ฐ์ฒด๋ ๋ง๋ค์์ผ๋ ๋ด๋ถ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์์ ์๋ ์์
- ์ด๋ฐ ๊ฒ๋ค์ ๊ฐ๋น์ผ ๋ฆฌ์์ค๋ผ๊ณ ํจ
- ๋ชฉํ: โ๋น์ฅ์ ํ์ ์์ง๋ง, ํ์ํ๊ฒ ๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ธ์ ๋ ๋ก๋ํ ์ ์๊ฒ ํ์.โ
- ์ฒ์ ํ๋ฉด๊ฐ์ ๊ฒ์ ๋ก๋ํ๋ค๊ณ ํ ๋, ๋ฆฌ์์ค๋ ํ์ผ ๊ฒฝ๋ก๋ง ๊ธฐ์ต
- ์ค์ ๋ก ํ๋ฉด์ ๋ณด์ฌ์ง ํ์๊ฐ ์์ ๊ฒฝ์ฐ ๋ก๋
- ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ ๋ณด๋ ์ ์ฅํด๋(์บ์ฑ)
์์: Image data
- ์ด๋ฏธ์ง๋ ์ฉ๋์ด ํฌ๊ณ
- ์ ์ฅ ์ฅ์น์์ ์ฝ์ด์์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ณดํต ๋ก๋ฉํ๋๋ฐ ์ค๋ ๊ฑธ๋ฆฐ๋ค. (๋ณ๋ชฉ ํ์ ๋ฐ์)
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํจํด์ ์ ์ฉํ๊ธฐ ์ ํฉํ๋ค.
Proxy ์ ์ฉ X
- filepath๋ฅผ ๋ฐ์๋ง์ ๋ฌด์กฐ๊ฑด ๋์คํฌ์์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ด
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
- ๋ฌด์กฐ๊ฑด ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
- ์ธ์ ๋ ๋ฌธ์ ์ ์ ์๋๋ค. ๋ง์ฝ 500๊ฐ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ค๊ณ ํ๋ค๋ฉด ํฐ ๋ฌธ์ ๋ ์๋ ์ ์๋ค.
- ๋ค๋ง, ์ฌ์ฉ ์ฌ๋ถ๊ฐ ํ๋ฅ ์ ์ผ๋ก ๋ฎ๋ค๋ฉด ๊ตณ์ด ๋ก๋ํ ํ์๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๋ญ๋น๋ฅผ ๋ฒํ ์ ์๋ค.
Proxy ์ ์ฉ O
- ๊ฐ์ฒด ์์ฑ์์๋ ์๋ฌด ๋ฐ์ดํฐ๋ ์ฝ์ง ์์
- ์ค์ ๋ก ์ฌ์ฉํ๋ ์์ ์ ์บ์ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ๋ก๋๋ฅผ ๊ฒฐ์
- ์ด๋ ๊ฒ ํ์ํ ์์ ์ ๋ฆ์ ์ฝ์ด์ค๋ ๋ฐฉ์์ **์ง์ฐ(๊ฒ์ผ๋ฅธ) ๋ก๋ฉ(lazy loading)**์ด๋ผ ํจ
- ์ด ๋ฐ๋๋ ์ฆ์((๋ก๋ฉํ๊ณ ์ถ์ด์) ์๋ฌ์ด ๋) ๋ก๋ฉ(eagar loading)
์ฆ์ ๋ก๋ฉ vs. ์ง์ฐ ๋ก๋ฉ
- ์์์๋ ๋๊ฐ์ง ๋น๊ต๋ฅผ ํ๋๋ฐ, ์ฌ์ค ์บ์ฑ ์ฌ๋ถ๊น์ง ์ ์ฉํ๋ค๋ฉด 3๊ฐ์ง ๋ถ๋ฅ๋ก ๋๋ ์ ์๋ค.
์ฆ์ ๋ก๋ฉ | ์ง์ฐ ๋ก๋ฉ + ์บ์ X | ์ง์ฐ ๋ก๋ฉ + ์บ์ (ํ๋ก์ ํจํด) | |
---|---|---|---|
์ต์ ๋ฐ์ดํฐ | X | O | โณ |
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | ์ต๋ | ์ต์ | ์ค๊ฐ (์ฌ์ฉํ ๊ฒ์ ๋ํด ์บ์ฑ์ผ๋ก ๋ค๊ณ ์์) |
์คํ ์๋ ๋ณ๋ชฉ์ | ์์ฑ ์์ | ์ฌ์ฉํ ๋ ๋ง๋ค | ์๊ธฐ ์ด๋ ค์ (์ฒ์ ์ฌ์ฉํ ์์ ์ ๋ฐ์) |
- ํ๋ก์ ํจํด์ ๊ฒฝ์ฐ ๋ช ํํ์ง ์๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.
์์ฆ ์ธ์์์์ ํ๋ก์ ํจํด
- ๋ฉ๋ชจ๋ฆฌ๋์ด ๋ง๋ค.
- ํ ๋ฒ์ ๋ก๋ฉํด๋๋ ํฐ ๋ฌธ์ ๋ ์๋๋ค.
- ํ ๋ฒ์ ๊ทธ๋ฆฌ๋ ์ด๋ฏธ์ง ์๊ฐ ๋ง์ง ์๋ค๋ฉด?
- ํ์ํ ๋๋ง๋ค ๋์คํฌ์์ ์ฝ์.
- ์ถฉ๋ถํ ๋นจ๋ผ์ก๋ค.
- SSD๋ฉด ๋ ๋น ๋ฅด๋ค.
- ์ธํฐ๋ท์์ ๋ก๋ฉํ๋ค๋ฉด?
- ๋์คํฌ๋ณด๋ค ๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
- ๊ทธ ๋์ ํ๋ก๊ทธ๋จ์ด ๋ฉ์ถฐ์์ ์๋ ์๋ค.
ํ๋ก์ ํจํด + ์บก์ํ์ ๋ฌธ์
- ์บก์ํ๋ ์ ํด๋
- ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ๋ง ํ๋ฉด ๊ฒฐ๊ตญ ์ด๋ฏธ์ง๊ฐ ๋ก๋๋์ด ๋ฐํ๋จ
- ํ์ง๋ง.. ์ธ์ ํด๋น ํด๋์ค๊ฐ ๋๋ ค์ง๋์ง ์ ์ ์๋ค.
- ์์์ ๋ณด์๋ฏ์ด ํ๋ก์ ํจํด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ช ํํ์ง ์๋ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ํด๋ผ์ด์ธํธ ์ ์ฅ์์ ํด๋น ํด๋์ค๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์,
- ๊ฐ ๋ฐฉ์์ ๋ํด ์ ์ด๊ถ์ ํด๋ผ์ด์ธํธ ์ชฝ์ผ๋ก ๋๊ฒจ์ฃผ๋ ๊ฒ์ด ๋ณด๋ค ์ณ๋ค.
- ๊ฒฐ๊ตญ ๊ณ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๋ก๋ํธ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ์ณ๊ธฐ ๋๋ฌธ์ด๋ค.
ํ๋ก์ ํจํด์ ํ๋ํ ์
- ์์ฑ ์์๋
filePath
๋ง ๋ฐ๋๋ค. - ๋ฐ๊นฅ์ผ๋ก ์ด๋ฏธ์ง ๋ก๋ ์ฌ๋ถ(
isLoaded()
)๋ฅผ ํ์ ํ ์ ์๊ฒ ์ด์ด์ค๋ค. - ์ง์ ์ ์ผ๋ก
load()
ํจ์๋ฅผ ์ด์ด์ฃผ์ด ์ ์ดํ ์ ์๋๋ก ํ๋ค. - ์บ์๊ฐ ์ํ ๊ฒ์ ๋๋นํ์ฌ
unload()
ํจ์๋ ์ ๊ณตํ๋ค. draw()
ํจ์์ ๊ฒฝ์ฐimage
๊ฐ ์๋ค๋ ์ ์ ํ์ ์๋ํ๋ค.- ์ด๋ ๊ฒ ํ๋ฉด ํด๋น ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๊ฐ ํ๋ฉด์ ๋ฆฌ์์ค ํ์ผ์ ๋ช๊ฐ ๋ก๋ํ๋์ง์ ๋ํ ์ ๋ณด๋ ๋ณด์ฌ์ค ์ ์๋ค!
- ์๋๋ ๋ก๋ ์ฌ๋ถ๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ๋ฒ์ฐ๊ณ ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
- ๊ทธ๋ผ ๊ฐ์ข ํด๋ฒ๋ฆฌ๊ณ ๊ทธ ์ฑ ์์ฐ๊ฒ ์ง
์ง์ฐ ๋ก๋ฉ ์ฃผ์์ฌํญ
- ํ์ํ ๊ณณ์ ์ ์ ํํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
- UX๋ ๊ณ ๋ คํด์ผํ๊ธฐ ๋๋ฌธ
- ๊ทธ๋ ๊ฒ ๋๋ฉด ํ๋ก์ ํจํด์ ์
์ง๊ฐ ์ข ์ ๋งคํด์ง
- ํด๋ผ์ด์ธํธ ์ชฝ์ผ๋ก ์ ์ด์ฌ๋ถ๋ฅผ ๋
ธ์ถํ๊ธฐ ๋๋ฌธ์ ์บก์ํ๊ฐ ์ข ๊นจ์ง
- ๊ฒฐ๊ตญ ๋ด๋ถ๊ฐ ์ด๋ป๊ฒ ๋๋์ง ๋ ธ์ถํ๋ ์
- ํด๋ผ์ด์ธํธ ์ชฝ์ผ๋ก ์ ์ด์ฌ๋ถ๋ฅผ ๋
ธ์ถํ๊ธฐ ๋๋ฌธ์ ์บก์ํ๊ฐ ์ข ๊นจ์ง
- ์ฆ, ๋ถ์์ ์ธ ์์(์๊ฐ, UX ๋ฑ)์ ๊ณ ๋ ค ํด์ผ ํ๋ค๋ฉด ์บก์ํ๊ฐ ๊นจ์ง์๋ ์ด์ด๋๋ ๊ฒ์ด ์ข์ ๋ฐฉ์์ผ ์ ์๋ค.
- ๋จ์ํ ์บก์ํ๋ฅผ ์ํด ๋ฐ์์ ๋์์ ๋ช ํํ ์์์ผ ํจ์๋ ์จ๊ธฐ๋ ๊ฒ์ ๊ฐ๋ ์ ํจ๋ชฐ๋์ด ์ค์ํ ๊ฒ์ ๋์น๋ ์ค๋ฅ๋ฅผ ๋ฒํ ์ ์๋ค.