2021-04-08(Thu)
ํญ๋ชฉ | ๋ด์ฉ |
ํ์ต ๋ ์ง | 2021-04-08(๋ชฉ) |
ํ์ต ์๊ฐ | 09:00~23:00 |
ํ์ต ๋ฒ์ ๋ฐ ์ฃผ์ | Eager Loading vs Lazy Loading |
ํ์ต ๋ชฉํ | Rails๋ฅผ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ์ ์ ๋ฆฌํ๋ค. |
๋๋ฃ ํ์ต ๋ฐฉ๋ฒ | - |
์์ธ ํ์ต ๋ด์ฉ
Rails ๊ฐ๋
๋ณด์ถฉ
Eager loading vs Lazy loading
Lazy Loading์ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ค์ ์ค์ ๋ก ์ ๊ทผํ๊ธฐ ์ ์๋ ๋ก๋ฉํ์ง ์๋๋ค. Lazy loading์ ์์๋ฅผ ๋ณด์.
๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด users๋ฅผ ํธ์ถํ๋ 1๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๊ณ , ์ดํ do ๋ฃจํ์์ user.profile.age
๊ตฌ๋ฌธ์ ์ํด profile์ ์ ๊ทผํ ๋๋ง๋ค N๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ๋ ๋ฆฌ๊ฒ๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ N+1 Problem๋ผ๊ณ ํ๋ค. ๊ทผ๋ณธ์ ์ผ๋ก ORM์์ Lazy Loading์ ์ฌ์ฉํ ๋ ๋ฐ์๋๋ ๋ฌธ์ ์ธ ๊ฒ์ด๋ค.
Rails๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด includes
๋ผ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํด์ค๋ค.
With includes, Active Record ensures that all of the specified associations are loaded using the minimum possible number of queries
์ ์๋์ฒ๋ผ ์ฝ๋๋ฅผ ์์ ํด๋ณด์.
์ ์ฝ๋์์๋ ๋ ๋ฒ์ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ํ๋ค. users ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ ํ๋ฒ, users์ ๋ํ profile์ ์ฐพ๋๋ฐ ํ๋ฒ. ์ด๋ฌํ ๋ก๋ฉ ๋ฐฉ์์ eager loading์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ทธ๋ผ joins
๊ฐ includes
๋ณด๋ค ํจ์จ์ ์ธ ๊ฒฝ์ฐ๋ ๋ฌด์์ผ๊น? ์๋์ฒ๋ผ ํํฐ์ ์ญํ ์ ํ ๊ฒฝ์ฐ ํจ์จ์ ์ด๋ค.
do ๋ฃจํ์์ profile์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , profile์ ๋จ์ง filter์ ์ญํ ์ ํ๋ ๊ฒ์ด๋ค.
MSA๋?
๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์๋น์ค suite๋ก ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ.
๊ฐ๊ฐ ์์ฒด ํ๋ก์ธ์ค์์ ์คํ๋๊ณ ๊ฐ๋ฒผ์ด ์ฐ๊ฒฐ๋ฐฉ์, ๋๊ฐ๋ HTTP ๊ธฐ๋ฐ API์ ํต์ ํ๋ค.
๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ์ค์ฌ์ผ๋ก ๊ตฌ์ถ๋๋ฉฐ ์์ ์๋ํ ๋ ๋ฐฐํฌ ๋จธ์ ์ ํตํด ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ค.
์ต์ํ์ ์ค์ ์ง์ค์ ๊ด๋ฆฌ๊ฐ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋๊ณ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์๋ค.
์ฅ์
์ฅ์ ๊ฒฉ๋ฆฌ์ ๋ณต๊ตฌ๊ฐ ์ฝ๋ค. ์ฅ์ ๋ ์๋น์ค๋ง ์ฅ์ ๋๋๊น.
๋น์ฉ ํจ์จ์ ์ผ๋ก ์ฆ์ค์ด ๊ฐ๋ฅํ๋ค. ์ฆ์ค์ด ํ์ํ ์๋น์ค๋ง ์ฆ์ค์ํค๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์๋น์ค ๊ฐ์ ์๋๊ฐ ์ฆ๊ฐํ๋ค. ๋น ๋ฅธ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
์์ฐ์ฑ ํฅ์์ด ๋ ์ ์๋ค. ์ฝ๋์์ด ์ ์ด ์ฝ๊ฒ ์์ ์ด ๊ฐ๋ฅํ๋ค.
์ ๊ธฐ์ ๋์ ์ด ์ฝ๋ค.
Polyglot์ ์ ์ฉํ ์ ์๋ค. ์๋น์ค์ ์ต์ ํ๋ ๊ฐ๋ฐ ์ธ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๊ธฐ ์ฝ๋ค.
๊ณ ๋ คํด์ผํ ๊ฒ
MSA์ ์ ํฉํ ์๋น์ค์ธ๊ฐ?
๋น ๋ฅด๊ณ ์ฆ์ ๋ฐฐํฌ๋ฅผ ํ์๋ก ํ๋๊ฐ?
์ฑ๋ฅ์ ๋ฏผ๊ฐํ ์๋น์ค์ธ๊ฐ? ๋ง์ดํฌ๋ก์๋น์ค๋ฉด ์ฆ์ ํต์ ์ด ํ์ํ๋ฏ๋ก ์ฑ๋ฅ ์ด์๊ฐ ์์ ์ ์๋ค.
๋ถ์ฐ ํธ๋์ญ์ ์ด ์๋ ์๋น์ค์ธ๊ฐ? ํ๋ฒ์ ํธ๋์ญ์ ์ ์ธ ์๊ฐ ์๋ค.
๋ฐ์ดํฐ์ ์ค๋ณต์ฑ์ ํ์ฉํด์ผํ๋ค.
๋ฐฐํฌ ๋ฐ ๋ฆด๋ฆฌ์ฆ๋ฅผ ์๋ํํด์ผํ๋ค. ์๋น์ค๊ฐ ๋ง๋ค๋ณด๋ ์๋ํ๊ฐ ๋์ง ์์ผ๋ฉด ์ด์์ ๊ต์ฅํ ๋ถ๋ด์ด ๋ฐ์ํ ์ ์๋ค.
MSA ์๋น์ค์ ๋ง๋ ํ์ด ์ด์๋์ด์ผ ํ๋ค.
NHN ํ์ด์ฝ์ ๋๋ฉ์ธ๋ณ MSA ๊ตฌ์ถ ์ฌ๋ก.
์์ค ์ค๋ณต, ๋ฐฐํฌ์ฃผ๊ธฐ, ํธ๋ํฝ ์ ์ , ๋ถ์ฐํธ๋์ญ์ ์ค์ฌ์ผํ๋ ๋ถ๋ถ๋ค ๊ณ ๋ คํด์ ๋๋ฉ์ธ ๋ค์ ๊ฒฐํฉํ๋ค๊ณ ํจ.
ํ์ต ๋ด์ฉ์ ๋ํ ๊ฐ์ธ์ ์ธ ์ดํ
์ปค๋จธ์ค ๋ถ์ผ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ๋ค.
๋ค์ ํ์ต ๊ณํ
QR ์ฝ๋ ๋ฆฌ๋๊ธฐ์ ํ ์ด๋ธ ๋ถ์ด๊ธฐ
Last updated