Basic Confusing Questions โ ก ๐คทโโ๏ธ
ํด๋ฆญํ๋ฉด ์ ๋ต์ด ๋์ต๋๋น~
์๋ฐ์ ์ ์(๋จ๊ถ์ฑ ์ง์)์์ ์ธ์ฉํ ์ฝ๋์ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค.
REST API๋ ๋ฌด์์ธ๊ฐ์?
ํ๋ฐฐ ์ก์ฅ๋ฒํธ์ ์ฐ๋ฆฌ๊ฐ ๋ง์ถฐ์ ์์์ ์์ฑํ๋ฏ์ดโฆ์ผ์ข
์ ํ์์ด๋ค.
๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ์ง๋ฅผ ์ถ๋ก ๊ฐ๋ฅํ๊ฒ ํด์ผํ๋ ํ์. www.๋๋ฉ์ธ/(๋ช
์ฌ๋ค๋ก) ์ด๋ถ๋ถ์ ์์ฑํ๋๊ฑฐ๋ฉฐ, GET,POST DELETE,PUT,PATCH ๊ฐ์ ๊ธฐ๋ฅ์ผ๋ก ๋น๊ต์ ์์ ํ๊ฒ ๋ณด๋ผ์์๋ค.
PUT์ ์ ๋ณด๋ฅผ ํต์งธ๋ก ๊ฐ์ ๋ผ์ธ๋, patch๋ ์ ๋ณด์ค ์ผ๋ถ๋ฅผ ํน์ ๋ฐฉ์์ผ๋ก ๊ต์ฒดํ ๋ ์
์ฅ์
- Uniform Interface Http ํ์ค์ ๋ฐ๋ฅด๋ฉด ์ด๋ ํ ํ๋ซํผ์ด๋ ๊ธฐ์ ์ ์ข ์๋์ง์๊ณ URI๋ก ์ง์ ํ ๋ฆฌ์์ค์ ๋ํ ์กฐ์์ด ๊ฐ๋ฅํ ์ํคํ ์ฒ ์คํ์ผ
- ๋ฌด์ํ์ฑ Stateless
์ํ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ์ง์๋๋ค. ์ธ์ ์ ๋ณด, ์ฟ ๊ธฐ์ ๋ณด๋ฅผ ๋ณ๋๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ์ง์๋๋ค. API์์ฒญ๋ง ์ฒ๋ฆฌํ ๋ฟโฆ - ์บ์๊ฐ ๊ฐ๋ฅํ๋ค.
HTTP๊ฐ ๊ฐ์ง ์บ์ฑ๊ธฐ๋ฅ์ ์ ์ฉํ ์์๋ค. Last-Modified ํ๊ทธ๋ E-Tag๋ฅผ ์ด์ฉํ๋ฉด ์บ์ฑ ๊ตฌํ์ด ๊ฐ๋ฅ. - ๊ณ์ธตํ ๊ตฌ์กฐ REST๋ ๋ค์ค ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๊ฐ๋ฅํ๋ฉด์ ๋ณด์, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋ณด์๊ณ์ธต์ ์ถ๊ฐํด์ ๊ตฌ์กฐ์ ์ ์ฐํจ์ ์ฑ๊ธธ์ ์๋ค. ๋ํ, ํ๋ก์ ๊ฒ์ดํธ์จ์ด ๊ฐ์ ์ค๊ฐ ๋งค์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
๋จ์
- HTTP ๋ฉ์๋๊ฐ ์ ํ์ ์ด๋ค.
- ํ์ค์ด ์๋ค.
DNS์ ์ ์์ DNS๊ฐ ํ์ํ ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋๋ฉ์ธ์ ์ด๋ฆ์ ํตํด IP์ฃผ์๋ฅผ ๊ฐ์ ธ์ค๋ ํ๋กํ ์ฝ์ ๋๋ค. DNS๊ฐ ํ์ํ ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ip์ฃผ์ ์์ง์์๋ ํด๋น ์ฃผ์๊ฐ์ ๋๋ฉ์ธ์ด๋ฆ์ ํตํด ์ฐพ์์ค๊ฒ ํด์ค๋๋ค.
A Record - IP์ ๋๋ฉ์ธ๊ณผ์ ์งํต ์ฐ๊ฒฐ
CNAME (canonical name) - IP๊ฐ ์ ๋์ ์ผ๋ก ๋ณํ๋ ์๋ฒ๋ฅผ ์ํ ๋๋ฉ์ธ ๋ฐฉ์ (aws, firebase๋ฅผ ์ฌ์ฉํ ๋)
URL๊ณผ URI์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ๊ฐ์?
URL โ URI
URI๋ ์๋ณํ๊ณ , URL์ ์์น๋ฅผ ๊ฐ๋ฅดํจ๋ค.
- URI๋ Uniform Resource Identifer ํตํฉ์์์๋ณ์๋ก์จ ์น ๊ธฐ์ ์์ ์ฌ์ฉํ๋ ๋ ผ๋ฆฌ์ ๋๋ ๋ฌผ๋ฆฌ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ๋ฌธ์์ด ์ํ์ค.
- URL์ ์น์ฃผ์๋ก ๋คํธ์ํฌ ์ฌ์์ ๋ฆฌ์์ค๊ฐ ์ด๋์ ์๋์ง ์๋ ค์ฃผ๊ธฐ ์ํ ๊ท์ฝ์ ์ง์นญํ๋๊ฒ์ด๋ค.
URI์ ๊ตฌ์กฐ
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
scheme:์ฌ์ฉํ๋ ํ๋กํ ์ฝ
[user[:password]@]host[:port]: ์ฌ์ฉ์์ ์ด๋ฆ,๋น๋ฒ + ์ ๊ทผํ ํธ์คํธ๋ช
,ํฌํธ๋ฒํธ
[/path]: ์ ๊ทผํ ๋์์ ๊ฒฝ๋ก
[?query][#fragment]: โ ๋์์๊ฒ ์ ๋ฌํ๋ ์ถ๊ฐ์ ์ธ ์ ๋ณด(ํ๋ผ๋ฏธํฐ) + ๋ฉ์ธ ๋ฆฌ์์ค ๋ด์ ์กด์ฌํ๋ ์๋ธ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ ์๋ณํ๊ธฐ ์ํ ์ ๋ณด
์น ๋ธ๋ผ์ฐ์ ์์ CORS ์ด์๊ฐ ๋ฐ์ํ๋ ์์ธ์ ๋ฌด์์ด๋ฉฐ, ์๋ฒ์์ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์๋์?
CORS์ ๊ฒฝ์ฐ Origin์ ๊ธฐ๋ฐ์ผ๋ก ๋ฆฌ์์ค์ ์ ๊ทผํ๋๊ฒ์ ์ ํํ๋ ๊ธฐ๋ฅ์
๋๋ค. ์ด๋ ๋ค๋ฅธ ์ถ์ฒ์์ ๋ฆฌ์์ค ์ ๊ทผ์ ์ ํํ๋ ๋ณด์ ๊ธฐ๋ฅ์
๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ์๋ฒ์ธก์์๋ ํ์ฉํ๊ธฐ๋กํ Origin์ ์๋ฒ ํ๋ก๊ทธ๋จ์ ๋ฑ๋กํ๋ ๊ฒ์
๋๋ค. ๋ํ, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Access-Control-Allow-Methods ๋ฑ์ ํค๋๋ฅผ ์ฌ์ฉํ์ฌ CORS์๋ฌ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ(BST)์ด ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฐพ๊ธฐ ์ํด ํ์ํ๋ ๊ณผ์ ์ ์ค๋ช ํด์ฃผ์ธ์.
์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฒ์ํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค.
๋ฃจํธ๋
ธ๋๋ฅผ ์์์ผ๋ก ๋ฐ์ดํฐ์ ํฌ๊ณ ์์์ ๊ธฐ๋ฐ์ผ๋ก ํด์ ๋ฆฌํ๋
ธ๋๊น์ง ์ฐพ์๋๊ฐ๋ ๋ฐฉ์์
๋๋ค.
์๊ฐ ๋ณต์ก๋์ ํ๊ท ์ O(logN)์ด๊ณ ์ต์
์ O(N)์ด ๋ ์ ์์ต๋๋ค.
(๋ชจ๋ ๋
ธ๋๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์ณ ์์ ๊ฒฝ์ฐ) ์ถ๊ฐ ์ญ์ ์ ๊ฒฝ์ฐ์๋ ๊ฒ์์ ๋จผ์ ํํ ์คํํฉ๋๋ค.
ํ์(Greedy) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฑ๋ฆฝํด์ผ ํ๋ ์กฐ๊ฑด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
(๊ฐ์ฅ ์ ์ ๊ฐ์๋ก ๊ตฌํ๋ ๋์ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ)
๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค๋ฅด๊ฒ ๋ชจ๋ ์ ํ์ง๋ฅผ ๊ณ ๋ คํด๋ณด๊ณ ๋ต์ ์ ํ๋ ๋ฐฉ์์ด ์๋, ์ฌ๊ทํ๋ ๊ฐ ๋จ๊ณ๋ง๋ค ๋จ์ ์ ํ๋ค์ ๋ํด์๋ ๊ณ ๋ คํ์ง์์์ฑ ๊ฐ์ฅ ๋ฒ ์คํธ ์ต์
์ ์ ํ
ํด์ ์งํํ๋ ๋ฐฉ์์ด๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์์ ์ ํ์ด ์ดํ์ ์ ํ์ ์ํฅ์ ์ฃผ์ด์ ์๋๊ณ ๋ฌธ์ ์ ๋ํ ์ต์ข
ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ถ๋ถ๋ฌธ์ ์ ๋ํ ์ต์ ๋ฌธ์ ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก
๊ตฌ์ฑ๋๋ค. (ํ์์ ์ ํ ์์ฑ, ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ) ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ๋ฉํธ๋ก์ด๋๋ผ ํ๋ค.
์ธ์ ํ๋ ฌ๊ณผ ์ธ์ ๋ฆฌ์คํธ์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
์ธ์ ํ๋ ฌ์ ๋
ธ๋(1),์ฃ์ง(0)์ ๋ชจ๋ ํํํด์ผํ๋ฏ๋ก ๋
ธ๋๊ฐ ๋์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฐจ์งํ๋ค. ๋์ ๊ฒ์์๋๋ ๋น ๋ฅด๋ค.
๋ฐ๋ฉด ์ธ์ ๋ฆฌ์คํธ๋ ๋ฆฌ์คํธ(->)๋ก ํํํ๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค๋ง ํํํ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ฐจ์งํ์ง๋ง ๊ฒ์์๋๋ ๋๋ฆฌ๋ค.
Stack๊ณผ Queue์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
queue๋ FIFO ๋ฐฉ์์ผ๋ก ๋ ๊ตฌ์กฐ๋ก์จ ์ฒ์ ๋ค์ด๊ฐ ์ธ์๊ฐ ์ฒ์์ ๋์ค๋ ํํ์
๋๋ค.
๋ฐ๋ฉด stack์ ๊ฒฝ์ฐ LIFO๋ฐฉ์์ผ๋ก ๋์ค์ ๋ค์ด๊ฐ ์ธ์๊ฐ ์ฒ์์ ๋์ค๋ ํํ์
๋๋ค.
stack LIFO ex) ์นํ์ด์ง ๋ฐฉ๋ฌธ๊ธฐ๋ก. ์คํ์ทจ์(๋ค๋์๊ฐ๊ธฐ), ํ์ํ๊ธฐ๋ฒ ๊ณ์ฐ..
Queue FIFO ex) ๋๋น์ฐ์ ํ์, ํ๋ฆฐํฐ ์ธ์ ๋๊ธฐ์ด
DI(Dependency Injection)์ ๋ํ ์ค๋ช ๊ณผ ํด๋น ๊ธฐ์ ์ ์ฅ์
๋คํ์ฑ๋ง์ผ๋ก๋ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํ ์์๋ค. ์ญํ ๊ณผ ๊ตฌํ์ฒด๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ์ญํ (์ธํฐํ์ด์ค)๋ผ๋ฆฌ ์์กด๊ด๊ณ๋ฅผ ์ค์ ํด์ ๊ตฌํ์ฒด๊ฐ ๋ฐ๋๋๋ผ๋ ํฐ ๋ก์ง์ ์ผ์ ํ๊ฒ ์ ์ง๋๋ ์ธํฐํ์ด์ค๋ฅผ ์์กดํ๊ณ ๊ตฌํ์ฒด๋ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ ๊ตฌํํด๋์ค๋ง ๋ฐ๊พธ๋ฉด์ ์ ์ง๋ณด์, ํด๋์ค ๊ต์ฒด๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค.
์คํ๋ง ์ปจํ ์ด๋(Spring Container)์ ๋ํด ์ค๋ช
๊ฐ๋ฐ์๊ฐ ์ง์ ๋น์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์๋ ์คํ๋ง ์ปจํ ์ด๋์๊ฒ ์์ํ๋ฏ๋ก์จ, ์์กด๊ด๊ณ ์ค์ ์ ์๋์ผ๋ก ํด์ฃผ๋ ์ญํ ์ ํ๋ค. ๋ํ, ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค์ผ๋ก ๋น๋ค์ ๊ด๋ฆฌํ๊ธฐ๋๋ฌธ์ ์ผ๊ด๋ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ฌ์ฌ์ฉ์ฑ๊ณผ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ธ ์ฌ์ฉ์ ํฉ๋๋ค.
{. :prompt-tip}
new, ์ธํฐํ์ด์ค ํธ์ถ, ํฉํ ๋ฆฌ ํธ์ถ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด ์์ฑ๊ณผ ์๋ฉธ์ ๊ฐ๋ฐ์๊ฐ ํ ์ ์์ง๋ง, ์ ์ดํ๋ฆ์ ์ปจํ ์ด๋์๊ฒ ๋งก๊ฒจ์ ๊ด๋ฆฌํด์ฃผ๋ ์ปจํ ์ด๋์ด๋ค. ์์กด๊ด๊ณ ๋ํ ๋ฐํ์ ๊ณผ์ ์์ ์์์ ๋ง๋ค์ด์ค๋ค.
ApplicationContext๋ BeanFactory + ๋ถ๊ฐ ๊ธฐ๋ฅ(๊ตญ์ ํ ๊ธฐ๋ฅ, ํ๊ฒฝ ๋ณ์ ๊ด๋ จ ์ฒ๋ฆฌ, ์ ํ๋ฆฌ์ผ์ด์
์ด๋ฒคํธ, ๋ฆฌ์์ค ์กฐํ)์ ๊ฐ์ง๋ค.
์คํ๋ง ์ปจํ
์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌํด์ค๋ค. ๋ฐ๋ผ์ ์ฑ๊ธํค ์ปจํ
์ด๋๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ค. ์คํ๋ง ์ปจํ
์ด๋๊ฐ ๋น์ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌํด์ฃผ๋ฉด์ ๊ธฐ์กด ์ฑ๊ธํด ํจํด์ ๋ฌธ์ ์ (์ฑ๊ธํค ํจํด ๊ตฌํ์ ์ํ ์ฝ๋๊ฐ ์ถ๊ฐ๋์ด์ผํจ, ๊ตฌ์ฒด ํด๋์ค์ ์์กด, ์ ์ฐ์ฑ์ด ๋จ์ด์ง etc)์ ์์ด์ง๊ณ , ์ฑ๊ธํค์ ์ฅ์ (๋งค๋ฒ ์ธ์คํด์ค๋ฅผ ์์ฑํ ํ์์์ด ๋จ ํ๋๋ง ์์ฑํด์ ๋น์ฉ์ ์ค์ผ ์ ์๋ค.)๋ง ๊ฐ์ ธ๊ฐ ์ ์๋ค.
Spring์์ AOP๊ฐ ํ์ํ ์ด์ ์ ๋ํด ์ค๋ช
๋ชจ๋ ์ปจํธ๋กค๋ฌ๋จ์์ ํ์ํ ๊ธฐ๋ฅ์ด ์๊ฒผ์๋, ์ค๋ณต๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ง์๊ณ ์ด๋ ธํ ์ด์ ์ผ๋ก ๋ฌถ๊ฑฐ๋ ํน์ ๋ฒ์๋ฅผ ์ง์ ํ์ฌ ์ผ์ ์ฒ๋ฆฌํ๋๋ฐ ์ฉ์ดํ ๊ธฐ๋ฅ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊น ์ด๋ ํธ๋์ญ์ ์ฒ๋ผ ๋ชจ๋ ์ ์ฉํด์ผํ๋ ๊ธฐ๋ฅ์ด ์์๋ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋์งธ, ์์คํ ์ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. AOP๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๋ชจ๋์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋ชจ๋ํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์คํ ์ ์ ์ฐ์ฑ์ ๋์ด๊ณ , ํ์์ ๋ฐ๋ผ ๋ชจ๋์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
์ ์งธ, ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(Separation of Concerns)๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. AOP๋ฅผ ์ฌ์ฉํ๋ฉด ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์์คํ ์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ(๋ก๊น , ๋ณด์ ๋ฑ)์ ๋ถ๋ฆฌํ์ฌ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ , ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ ์ ์์ต๋๋ค.
๋ท์งธ, ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. AOP๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ์์ ์๋ง ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ถํ์ํ ์ฝ๋ ์คํ์ ๋ฐฉ์งํ๊ณ , ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
Foreign Key์ Primary Key์ ๋ํด ์ค๋ช
๋๋ค ๋ ์ฝ๋๋ฅผ ์๋ณํ๋ ๊ณณ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฐจ์ด์ ์ผ๋ก๋โฆ ์ฐ์ ๊ธฐ๋ณธํค๋ ๊ฐ ๋ ์ฝ๋๋ฅผ ์๋ณํ๋ ํค์ด๊ณ ์ธ๋ํค๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์ฐธ์กฐํ๋ ํค์ ๋๋ค. ๊ธฐ๋ณธํค๋ ๋๊ฐ์ ๊ฐ์ง์ ์๋ ๋ฐ๋ฉด ์ธ๋ํค๋ ๋๊ฐ์ ๊ฐ์ง์ ์๊ณ ๊ธฐ๋ณธํค๋ ํ์์ฌํญ์ด์ง๋ง ์ธ๋ํค๋ ํ์์ฌํญ์ด์๋๋๋ค. ํ์ง๋ง ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ํด ์ธ๋ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํธ๋์ญ์ ์ ๋ํด ์ค๋ช
ํธ๋์ญ์ ์ ์ปค๋ฐ, ๋กค๋ฐฑ์ 2๊ฐ์ง ๊ธฐ๋ฅ๋ง์ผ๋ก ํด๋น ์์ ์ด ์ฑ๊ณตํ์ผ๋ฉด ์ปค๋ฐ ์คํจํ์ผ๋ฉด ๋กค๋ฐฑ์ ํตํด, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์งํค๋ ๊ฒ์ ๋๋ค. ํธ๋์ญ์ ์ ACID์ ์์น์ ์ง์ผ์ผํ๋ฉฐ ์ด๋ ์์์ฑ, ์ง์์ฑ, ๋ ๋ฆฝ์ฑ, ์์์ฑ 4๊ฐ์ง๊ฐ ์์ต๋๋ค.
Client Side Rendering ๊ณผ Server Side Rendering ์ ์ฐจ์ด์ ์ ๋ํด์ ์ค๋ช
โSSR - ์๋ฒ์ชฝ์์ ๋๋๋ง ์ค๋น๋ฅผ ๋๋ง์น๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ ๋ฐฉ์.. ์ด๊ธฐ ๊ตฌ๋์๋๊ฐ ๋น ๋ฅด๊ณ ๊ฒ์ ์์ง ์ต์ ํ(SEO)์ ์ ๋ฆฌํ๋ค | ํ์ง๋ง ์๋ฒ๋ถํ์ ๋ก๋ฉ์ค์ ํ๋ฉด ๊น๋นก์์ด ์๋ค. |
CSR - ์ด๊ธฐ๋ก๋ฉ๊ณผ SEO์ ๋ถ๋ฆฌํ์ง๋ง ํ๋ฉด ๊น๋นก์ด๋ ํ์, ์๋ฒ๋ถํ์ ์ํฅ์ ๋ ์ค๋ค. TTV (time to view) ์ TTI (time to interact) ์ฌ์ด์ ๊ฐ๊ฒฉ์ด ์๋คโ
์ฌ๊ท ํจ์์ ๋ฐ๋ณต๋ฌธ์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช
์ฌ๊ทํจ์๋ ์๊ธฐ์์ ์ ํธ์ถํ๋ฉด์ ๋ฐ๋ณตํ๋ ํ๋์ด๊ณ ๋ฐ๋ณต๋ฌธ์ for, while๋ฌธ์ ํตํด ๋ฐ๋ณตํ๋ ํ๋์
๋๋ค.
์ฌ๊ท๋ ํธ์ถ์ ๋ง์ด ํ ์๋ก ์คํ์ ์์ด๋ฉด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฐจ์งํฉ๋๋ค. ๋ฐ๋ฉด, for๋ฌธ์ ์ฌ๊ท์ ๋นํด ์๋์ ์ผ๋ก ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ์ฌ์ฉ๋ ์ ์ต๋๋ค. ํ์ง๋ง, ํน์ ๊ฒฝ์ฐ์๋ ์ฌ๊ทํจ์๊ฐ ๋ ๋น ๋ฅด๊ฒ ์๋ํ ๋๋ ์์ต๋๋ค.
@component, @Configuration ์ฐจ์ด
Component์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ๊ตฌํํ ๋ฉ์๋๋ฅผ ๋น์๋ค๊ฐ ๋ฑ๋กํ๋ ๊ฒ์ด๊ณ Configuration ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ตฌํ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ์์ ์ฌ๊ตฌ์ฑํ์ฌ ๋ฑ๋กํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์ ์ ๋๋ค.
๋ด๊ฐ ์ง์ ๋ง๋ ๋ฉ์๋๋ฅผ ๋น์ ๋ฑ๋กํด์ ์ฌ์ฉํ๋ค๋ฉด @component ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๋์ ๋์ด์จ์ผํ๋ค~ @bean + @configuration ์ฌ์ฉํด์ผํจ.
๋ค์ด๋๋ฏน ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ธฐ ์ํ ์ฑ๋ฆฝ ์กฐ๊ฑด์ ๋ํด ๋งํด์ค
ํฐ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ์ ๋จ์๋ก ์๊ฒ ์ชผ๊ฐ๋ฉด์ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค ๋ฉ๋ชจ์ด์ ์ด์ ์ ํตํด ์ป์ ํด๋ต์ ๋ํ ๊ฐ์ ๋ ๊ตฌํ์ง์๋๋ก ์ค์ ํ๋ฉด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋์๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.