ํ๋ก๊ทธ๋จ๋ค์ ์คํํ๋ main program
์์ฉํ๋ก๊ทธ๋จ - ์ด์์ฒด์ - ํ๋์จ์ด
์ฌ์ฉ์๊ฐ ํ ์คํธ๋ก ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๊ณ ๋ค์ ํ ์คํธ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํด์ฃผ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง ์ปดํจํ ์ธํฐํ์ด์ค
์ปค๋งจ๋๋ผ์ธ ์ธํฐํ์ด์ค๋ก ๊ตฌํ๋ ๊ฐ์ฅ ๋ํ์ ์ธ ํ๋ก๊ทธ๋จ
์ปดํ์ผ + ํ๋ก๊ทธ๋จ ์คํ์ค๋น์ ๋ชจ๋ ๊ณผ์
์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ (๋ฉ๋ชจ๋ฆฌ ์์ ์ฌ๋ผ๊ฐ ์๋ค. )
ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ํ๋ฆ์ ๋จ์
๋ฒ์ ๊ด๋ฆฌ ํด / ์๊ฒฉ ์ ์ฅ์
master / hotfix / release / develop / Feature(๋ธ๋์น1) / Feature(๋ธ๋์น2) ..๋ฑ
- client : ์ ๋ณด๋ฅผ ์๊ตฌํ๋ ์ฃผ์ฒด
- ์๋ฒ : ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ฃผ์ฒด
- IP์ฃผ์ : IPv4 ์ฒด๊ณ๋ฅผ ๊ธฐ์ค์ผ๋ก 12๊ฐ์ ์ซ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค
- MAC์ฃผ์ : ๋คํธ์ํฌ ํต์ ์์ ํต์ ๊ธฐ๊ธฐ์ ์๋ณ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ๊ฒ
Client์ OS๋ฅผ ํตํด ์๋ฒ์ OS์ ๊ฐ์ ํด๋น ์ํ๋ ์ ๋ณด๋ฅผ ๋ฐ์์จ๋ค.
Client์ IP์์ฒญ์ ์ DNS์๋ฒ์ ํด๋น Domain Name(www.naver.com)์ ํตํด ๋ฐ์์จ IP์ฃผ์(192.168.1.0)๋ฅผ ํด๋น ์๋ฒ์ OS๋ก ๋ณด๋ด ์ํ๋ ์ ๋ณด๋ฅผ ๋ฐ์์จ๋ค.
Client์ IP์์ฒญ์ ์ DNS์๋ฒ์ ํด๋น Domain Name(www.naver.com)์ ํตํด ๋ฐ์์จ IP์ฃผ์(192.168.1.0)๋ฅผ ํด๋น ์๋ฒ์ ๋คํธ์ํฌ๋ก ๋ณด๋ธ ํ
MAC ์ฃผ์๋ฅผ ์์๋ด๊ธฐ ์ํด ๋คํธ์ํฌ์ ๋ธ๋ก๋์บ์คํธ๋ฅผ ํ๊ณ (ARP ์์ฒญ)
์ด๋ฅผ ํตํด ์ง์ ๋ IP ์ฃผ์๋ฅผ ๊ฐ์ง ์ปดํจํฐ๋ MAC ์ฃผ์๋ฅผ ์๋ตํ์ฌ (ARP ์๋ต)
์ถ๋ฐ์ง์์๋ MAC ์ฃผ์๋ฅผ ์ป๊ณ
3-way-handshake๋ฅผ ํตํด ์์ผ์ ์ด๊ณ ์๋ฒ๋ ์๋ต์ ๋ฐํํ๋ค.
- url(DN)์ ํด์
- url์ ๋ธ๋ผ์ฐ์ ์บ์ , hosts ํ์ผ์๋ ์๋ ๊ฒ์ด๋ฉด DNS์๋ฒ๋ก ์์ฒญํด IP์ฃผ์ ๋ฐํ
- IP์ฃผ์๋ฅผ ์์ฒญํ ๋คํธ์ํฌ๋ก ์ ์ก
- ARP๋ฅผ ํตํด IP์ฃผ์(์์ธ์ ์ข ๋ก๊ตฌ...)๋ฅผ MAC(๋ถ์ 38๋ ๋๊ฒฝ 128๋...)์ผ๋ก ๋ฐ๊พผ ํ Client์ ๋ฐํ
- socket์ ์ด๊ธฐ์ํ 3-way handshake
- ์๋ฒ์ ์๋ต ๋ฐํ => ์๋ต์ request์ ๋ค์ํ ์ ๋ณด๋ฅผ ๋ถ์ฌ ์๊ตฌํ๋ ๊ฒ์ ๋ฐํํ๋ค.
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
๋ผ๋ฉด ์ปดํจํฐ์ด๋ฏ๋ก ๊ทธ๊ฒ์ ๋ฐ๋ฅด๋ www.naver.com์ SSR ๋ด์ฉ์ด ์๋ตํ๊ณ user-agent: Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4))
๋ผ๋ฉด ํฐ์ผ๋ก ์ธ์ํ์ฌ ๊ทธ๊ฒ์ ๋ฐ๋ฅด๋ www.mnaver.com์ SSR ๋ด์ฉ์ด ์๋ต๋๋ค. ๊ฐ๊ฐ ๋ค๋ฅธ ๊ณ์ธต์์ ์ฌ์ฉ์ฉ๋๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ
IP ์ฃผ์๋ Network layer์์, MAC ์ฃผ์๋ Data Link ๊ณ์ธต์์ ์ฌ์ฉ
์ฆ, ์๋ก๋ค๋ฅธ ๋ ๋ฆฝ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค.
ํ์ค์์๋ MAC์ฃผ์์ธ ๋ถ์ ๋๊ฒฝ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ๋ํ๋ด๋ฉด ์ฐ๊ด์ฑ์ด ์๊ธฐ์ ๋ ํผ๋๋๋ฏ๋ก ์ด๋ฅผ IP์ฃผ์๊ฐ ์์ด ๋ ํธํ๊ฒ ๋ฐฐ๋ฌ์ ์งํํ ์ ์๋ค.
๊ทธ๋งํผ MAC ์ฃผ์๋ ํ์ํ์ง๋ง IP์ฃผ์๊ฐ ๋ค๋ฅธ ์ด์ ๋ก ํ์ํ ์ด์ ์ด๋ค.
Url์๋ ํธ์คํธ ์ด๋ฆ(www)๊ณผ ๋๋ฉ์ธ ์ด๋ฆ(github.co.kr)์ด ์๋๋ฐ ๋๋ฉ์ธ ์ด๋ฆ์ IP์ฃผ์๋ก ๋ณํํ๋ ๊ฒ์ด DNS ์๋ฒ์ด๊ณ
ํด๋น ์๋ฒ๋ ์ฌ๋ฌ๊ณณ์ ์์ด์ ๋ง์ฝ ํด๋น ๋๋ฉ์ธ ์ด๋ฆ์ด DNS ์๋ฒ์ ์์ผ๋ฉด ๋ค๋ฅธ DNS ์๋ฒ๋ก ์ฐพ๋๋ค. (DNS๋ ์ ์ธ๊ณ์ ํฉ์ด์ ธ์๊ณ ๋ชจ๋ ์ฐ๊ฒฐ)
๋ณด์์ ์ํด Network ํต์ ์ ํ ํ์
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ๋นํ๋ฐ์ฑ ์์์ ๋ชจ์
- ํ๋ ์์ํฌ : ๊ฐ๋จํ ๋ผ๋, ๊ณจ์กฐ, ํ๋ ์์ํฌ
๋ฆฌ์กํธ์์ ์ด๋ฌํ ๊ธฐ๋ฅ๋ค์ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ฌ๋ฌ๊ฐ์ง ์ถ๊ฐ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ด ์ฌ์ฉํด์ผํ๋ค
(react-router, react-redux, react-saga ๋ฑ....)
- React๋ ํ๋ ์์ํฌ๋ก ๋ถ๋ฅ๋์ง ์๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ถ๋ฅ
Program๋ผ๋ฆฌ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ๋งค๊ฐ์ฒด
Client <-> API <-> ์ ๊ทผํ ํ๋ก๊ทธ๋จ(DB)
์น ๋๋ ์ฑ์๊ฒ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํด์ฃผ๋ ์๋ฒ
์น ๋๋ ์ฑ์์ ์ง์ DB์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ํ์ฌ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ง๊ธฐ ์ํด ๊ทธ ์ฌ์ด์ API์๋ฒ๋ฅผ ๋์ด DB๋ ์บก์ํํ์ฌ
์น์ฑ๊ณผ DB์๋ฒ๊ฐ์ ์ค๊ฐ์ญํ ์ ํ๋ค.
์น์ ๋นํด ์ฑ์ ๊ฒฝ์ฐ ์ด๋ฏธ ๋ง๋ค์ด์ง ํ์ด์ง(์น๋ทฐ : ์ฑ๋ด์์ ์น์ ๋ณด์ฌ์ฃผ๋ ์ญํ )๊ฐ ์์ด์ API๋ง ์์ฒญ์ ํ๋ฉด ๋๋ค.
=> ์ฑ์ด ์ ๋ก๋ ์๊ฐ์ด ๋ ์ ๊ฒ ๊ฑธ๋ฆฐ๋ค.
๋ชจ๋ฐ์ผ ํ๊ฒฝ์์ ์น์ฌ์ดํธ๋ฅผ ์๋ก ๋ค๋ฅธ ๋งํฌ๋ก ๊ฑธ์ด๋๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ผ๋ฐ ์น์ฌ์ดํธ : naver.com
๋ชจ๋ฐ์ผ ์น์ฌ์ดํธ : m.naver.com
- DB์๋ฒ
- API์๋ฒ
- ์คํ ๋ฆฌ์ง์๋ฒ
- code
- build
- test
- release : ๊ฐ์ ์ ํ์ ์๋กญ๊ฒ ๋ง๋๋ ๊ฒ
- deploy : ํ๋ก๊ทธ๋จ ๋ฑ์ ์๋ฒ์ ๊ฐ์ ๊ธฐ๊ธฐ์ ์ค์นํ์ฌ ์๋น์ค ๋ฑ์ ์ ๊ณต
main repo์ ๋ฒ๊ทธ ์์ ์ด๋ ์ฝ๋๋ค์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ก๋ ๋๋ ๊ฒ
์ดํ CI Server์์ build์ test๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋๋๋ก ์๋ํ ํ๋ค.
test๊ฐ ์คํจํ ๊ฒฝ์ฐ ํด๋น merge ๋์์๊ฒ ์ธ๊ธ
์ฅ์ : ์ฝ๋ ํ๋ฆฌํฐ ํฅ์ / ๋ฒ๊ทธ ์์ ์ฉ์ด
๋ฐฐํฌ ์ ์ง์ ๊ฐ๋ฐํ์ด ํด๋น ์ฝ๋๋ฅผ ๊ฒ์ฆ์ ํ๊ณ ๋ฐฐํฌํ๋ ๊ฒ (์๋์ )
๋ฐฐํฌ ์ ์๋์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋ฐฐํฌํ๋๋ก ํ๋ ๊ฒ (์๋์ )
- Jenkins
- Github action
- Buildkite
- Gitlab CI/CD
๊ฐ์ฒด์งํฅ ์ดํด
ํ ์คํธ ์ฝ๋ ์์ฑ
์ํคํ ์ฒ ์ดํด
ํฌํธํด๋ฆฌ์ค๋ ์ ๋๋ก ๋ ํ๋๋ง ๋ง๋ค์ -> ํ๊ฐ์๋ ์ผ์ผํ ์ ๋ถ ๋ณผ ์๊ฐ์ด ์๋ค
ํ๋ ์์ํฌ์-๋ผ์ด๋ธ๋ฌ๋ฆฌReact๋-๋ญ์ผ
FE+BE ์ ๋ฌธ ๊ฐ๋ฐ์๊ฐ ์ฑ๊ฒจ๊ฐ์ผํ ์ง์ ํคํธ ๊ทธ๋ฉ(์ดํธ์ฐ)