๐ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ!
- ํ๋ก์ ์๋ฒ
- ๋ก๋๋ฐธ๋ฐ์
- ์คํ ์ค์ผ์ผ๋ง
- TOMCAT
- JETTY
- NGINX
- VPC
โ๏ธ ํ๋ก์ ์๋ฒ (Proxy Server)
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ํตํ ๋, ์๋ฒ์ ๋ฐ๋ก ์ ๊ทผํ์ง ์๊ณ ์์ ์ ํตํด ์๋ฒ์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ ์ผ์ข ์ ๋๋ฆฌ ์๋ฒ
โ ํ๋ก์ ์๋ฒ์ ์ข
๋ฅ
โ๏ธ Forward Proxy
- ํด๋ผ์ด์ธํธ ๊ฐ๊น์ด์ ์์นํ ํ๋ก์ ์๋ฒ
- ํด๋ผ์ด์ธํธ๋ฅผ ๋์ ํด ์๋ฒ์ ์์ฒญ ์ ๋ฌ
- ์ฃผ๋ก ์บ์ฑ์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ฌ์ฉ์๊ฐ ๋น ๋ฅธ ์๋น์ค ์ด์ฉ์ ํ ์ ์๋๋ก ๋์์ค
- ์ฅ์
- ์บ์ฑ์ ํตํด ๋น ๋ฅธ ์๋น์ค ์ด์ฉ ๊ฐ๋ฅ
โ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๊ฐ ์๋ ํ๋ก์ ์๋ฒ์ ์ํตํ๋ฉด์,
๋์ผํ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒฝ์ฐ ์ฒซ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์บ์์ ์ ์ฅํด๋๊ณ ,
์ดํ์ ์ฌ์์ฒญ์ ๋ณด๋ด์ง ์์๋ ์ ์ฅํด ๋์๋ ๊ฒฐ๊ณผ๋ก ๋น ๋ฅด๊ฒ ์ ๋ฌ ๊ฐ๋ฅ - ๋ณด์
โ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ํ๋ก์ ์๋ฒ๋ฅผ ๊ฑฐ์น ํ ์๋ฒ์ ๋์ฐฉํ๊ธฐ ๋๋ฌธ์,
์๋ฒ์์ ํด๋ผ์ด์ธํธ์ IP ์ถ์ ์ ํ๋ฉด ํ๋ก์ ์๋ฒ์ IP๊ฐ ์ ๋ฌ๋จ
( ํด๋ผ์ด์ธํธ์ IP๋ฅผ ์จ๊ฒจ ๋ณด์ ๊ฐ๋ฅ )
- ์บ์ฑ์ ํตํด ๋น ๋ฅธ ์๋น์ค ์ด์ฉ ๊ฐ๋ฅ
โ๏ธ Reverse Proxy
- ์๋ฒ ๊ฐ๊น์ด์ ์์นํ ํ๋ก์ ์๋ฒ
- ์๋ฒ๋ฅผ ๋์ ํด์ ํด๋ผ์ด์ธํธ์ ์๋ต ์ ๊ณต
- ๋ถ์ฐ์ฒ๋ฆฌ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๊ฑฐ๋ ๋ณด์์ ์ํด ์ด์ฉ
- ์ฅ์
- ๋ถ์ฐ์ฒ๋ฆฌ
โ ํ๋ก์ ์๋ฒ๋ก ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ฌ๋ฌ๋์ ์๋ฒ๋ก ๋๋์ด ์์ฒญ์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์,
์๋ฒ์ ๋ถํ๋ฅผ ๋ถ์ฐ ๊ฐ๋ฅ - ๋ณด์
โ ์๋ฒ์ ์๋ต์ ํ๋ก์ ์๋ฒ๋ฅผ ๊ฑฐ์ณ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ฃผ๊ธฐ ๋๋ฌธ์,
ํด๋ผ์ด์ธํธ์์ ์๋ฒ์ IP ์ถ์ ์ ํ๋ฉด ํ๋ก์ ์๋ฒ์ IP๊ฐ ์ ๋ฌ๋จ
( ์๋ฒ์ IP๋ฅผ ์จ๊ฒจ ๋ณด์ ๊ฐ๋ฅ )
- ๋ถ์ฐ์ฒ๋ฆฌ
โ๏ธ ๋ก๋๋ฐธ๋ฐ์
( ํ๋์ ์๋ฒ์ ๋๋ฌด ๋ง๊ฑฐ๋ ์ฆ์ ์์ฒญ์ ๋ณด๋ธ๋ค๋ฉด ์๋ฒ์๋ ๊ณผ๋ถํ์ค๋๋ฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ค์ )
โ๏ธ Scale-Up
- ๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ฒ์ ์ฌ์์ ๋์ด๋ ํ๋์จ์ด์ ์ธ ๋ฐฉ๋ฒ
- ๋ฐ๋๋ก ์๋ฒ์ ์ฌ์์ ๋ฎ์ถ๋ ๊ฒ์ Scale-Down
- ์ฅ์
- ์๋ฒ์ ์๋ฅผ ๋๋ฆฌ์ง ์๊ณ ํ๋ก๊ทธ๋จ ๊ตฌํ์ ์์ด ๋ณํ๊ฐ ํ์์์
- ๋จ์
- ์๋ฒ์ ์ฌ์์ ๋์ด๋๋ฐ ๊ต์ฅํ ๋์ ๋น์ฉ
- ํ๋์จ์ด์ ์ ๊ทธ๋ ์ด๋์ ํ๊ณ๊ฐ ์์
- ์ฌ์์ ๋๋ฆฐ๋งํผ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ ๋ง์์ง๋ค๋ฉด, ์๋ฒ์ ๋ฐ์ํ๋ ๋ถํ๋ ์ฌ์ ํ ํด๊ฒฐ X
โ๏ธ Scale-Out
- ์๋ฒ์ ๊ฐฏ์๋ฅผ ๋๋ ค ํ๋์ ์๋ฒ์ ์ค ๋ถํ๋ฅผ ๋ถ์ฐ์ํค๋ ๋ฐฉ๋ฒ
โ ๋ง์ ์์ฒญ์ด ์ค๋๋ผ๋ ์ฌ๋ฌ๋์ ์๋ฒ๊ฐ ๋๋ ์ ์ฒ๋ฆฌ - ์์ฒญ์ ์ฌ๋ฌ ์๋ฒ์ ๋๋ ์ฒ๋ฆฌํด์ค ์ ์๋๋ก ๊ตํต์ ๋ฆฌ ํด์ฃผ๋ ์ญํ ํ์
โ ๋ก๋ ๋ฐธ๋ฐ์ ํ์ - ๋ฐ๋๋ก ์๋ฒ ๊ฐ์๋ฅผ ์ค์ด๋ ๊ฒ์ Scale-In
- ์ฅ์
- ์๋ฒ์ ์ฌ์์ ๋์ด์ง ์๊ณ ๋ ๋น๊ต์ ์ ๋ ดํ ๋ฐฉ๋ฒ์ผ๋ก ๋ถํ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๐ก ๋ก๋ ๋ฐธ๋ฐ์ฑ
- ์ฌ๋ฌ ์๋ฒ์ ๊ตํต์ ๋ฆฌ๋ฅผ ํด์ฃผ๋ ๊ธฐ์ or ํ๋ก๊ทธ๋จ
๐ก ๋ก๋ ๋ฐธ๋ฐ์ ์ข ๋ฅ
- L2
โ ๋ฐ์ดํฐ ์ ์ก ๊ณ์ธต์์ Mac ์ฃผ์๋ฅผ ๋ฐํ์ผ๋ก ๋ก๋ ๋ฐธ๋ฐ์ฑ
โ - L3
โ ๋คํธ์ํฌ ๊ณ์ธต์์ IP ์ฃผ์๋ฅผ ๋ฐํ์ผ๋ก ๋ก๋ ๋ฐธ๋ฐ์ฑ
โ - L4
โ ์ ์ก ๊ณ์ธต์์ IP์ฃผ์์ Port๋ฅผ ๋ฐํ์ผ๋ก ๋ก๋ ๋ฐธ๋ฐ์ฑ
โ - L7
โ ์์ฉ ๊ณ์ธต์์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐํ์ผ๋ก ๋ก๋ ๋ฐธ๋ฐ์ฑ
Ex. ์๋ํฌ์ธํธ
โ๏ธ ์คํ ์ค์ผ์ผ๋ง
- Scale-Out ๋ฐฉ์์ผ๋ก ์๋ฒ๋ฅผ ์ฆ์คํ ๋, ์๋์ผ๋ก ์๋ฒ(๋ฆฌ์์ค)๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ๊ธฐ๋ฅ
โ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ง์์ ธ ์๋ฒ์ ์ฒ๋ฆฌ ์๊ตฌ๋์ด ์ฆ๊ฐํ๋ฉด ์ ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ๊ณ ,
๋ฐ๋๋ก ์ฒ๋ฆฌ ์๊ตฌ๋์ด ์ค์ด๋ค๋ฉด ๋ฆฌ์์ค๋ฅผ ๊ฐ์์์ผ ์ ์ ํ ๋ถ์ฐ ํ๊ฒฝ์ ๋ง๋ค์ด์ค
โ ์ฅ์
- ๋์ ์ค์ผ์ผ๋ง
โ ์ฌ์ฉ์์ ์๊ตฌ ์์ค์ ๋ฐ๋ผ ๋ฆฌ์์ค๋ฅผ ๋์ ์ผ๋ก ์ค์ผ์ผ๋ง ๊ฐ๋ฅ
โ ์ค์ผ์ผ ์ ํ ์ ์๋ ์๋ฒ์ ์ ์ ํ X
( ํ์ํ ๊ฒฝ์ฐ ์๋ฒ ๋ ๋์์ ์๋ฐฑ ~ ์๋ง ๋์ ์๋ฒ๋ก ์ฆ์ ์ค์ผ์ผ ์ ๊ฐ๋ฅ ) - ๋ก๋ ๋ฐธ๋ฐ์ฑ
โ ๋ฆฌ์์ค๋ฅผ ๋์ ์ผ๋ก ์ค์ผ์ผ ์ ํน์ ์ค์ผ์ผ ๋ค์ด
โ ๋ก๋ ๋ฐธ๋ฐ์์ ํจ๊ป ์ฌ์ฉํ์ฌ,
์ฌ์ฉ์๊ฐ ์ ์ํ ๊ท์น์ ๋ฐ๋ผ ์ํฌ๋ก๋ ํจ๊ณผ์ ์ผ๋ก ๋ถ๋ฐฐ / ๊ด๋ฆฌ ๊ฐ๋ฅ - ํ๊ฒ ํธ๋ํน
โ ์ฌ์ฉ์๋ ํน์ ํ๊ฒ์ ๋ํด์๋ง Auto Scaling ๊ฐ๋ฅ
โ ์ฌ์ฉ์๊ฐ ์ค์ ํ ํ๊ฒ์ ๋ง์ถฐ EC2 ์ธ์คํด์ค์ ์ ์กฐ์ - ํฌ์ค ์ฒดํฌ / ์๋ฒ ํ๋ฆฟ ๊ด๋ฆฌ
โ EC2 ์ธ์คํด์ค์ ํฌ์ค ์ฒดํฌ ์ํ๋ฅผ ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ
( ๋ชจ๋ํฐ๋ง ์ค, ํน์ ์ธ์คํด์ค์ ๋ฌธ์ ๊ฐ ๊ฐ์ง๋๋ฉด, ์๋์ผ๋ก ๋ค๋ฅธ ์ธ์คํด์ค๋ก ๊ต์ฒด )
โ ์ ์ ์์ค์ ์๋ฒ ํ๋ฆฟ ์ฉ๋์ ์ ์งํ๋ ๋ฐ๋ ๋์
( ๋ชจ๋ํฐ๋ง ์ค, ํน์ ์ธ์คํด์ค๊ฐ ๋ค์ด๋๋ฉด, ์๋์ ์ฒ๋ฆฌ ์ฉ๋์ ์ ์งํ๊ธฐ ์ํด
๋ถ์กฑํ ๋งํผ์ ์๋ฒ๋ฅผ ์ถ๊ฐ๋ก ์คํ์์ผ ์๋ฒ ํ๋ฆฟ ์ ์ง )
๐ก ์๋ฒ ํ๋ฆฟ (Fleet) (feat. AWS)
โ ๋ค์์ EC2 ์๋ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ๋ ๊ฒฝ์ฐ์, ๊ทธ EC2 ์๋ฒ๋ค์ ์งํฉ
โ EC2 Auto Scaling ํ์ฉ
โ๏ธ ์์ ํ ํ๋ฆฟ (Launch Configuration)
- ์ธ์คํด์ค์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ ( ์ธ์คํด์ค ๊ตฌ์ฑ ํ ํ๋ฆฟ )
Ex. AMI ์์ธ ์ ๋ณด, ์ธ์คํด์ค ํ์ , ํค ํ์ด, ์ํ๋ฆฌํฐ ๊ทธ๋ฃน ๋ฑ
- ์์ ํ ํ๋ฆฟ์ ํตํด ์ด๋ค ์๋ฒ๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์
๐ก ์์ ๊ตฌ์ฑ
- EC2 Auto Scaling์ด ์ฌ์ฉ์๋ฅผ ์ํด ์์ฑํ๋ EC2 ์ธ์คํด์ค ์ ํ์ ์ง์ ํ๋ค๋ ์ ์์ ์์ ํ ํ๋ฆฟ๊ณผ ๋น์ท
๐ก ์์ ๊ตฌ์ฑ vs ์์ ํ ํ๋ฆฟ
- ์์ ํ ํ๋ฆฟ
- ์์ ๋ถ๊ฐ
- But, ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ฌ ์ฌ๋ฌ ํ ํ๋ฆฟ ์์ฑ ๊ฐ๋ฅ
- ์์ ๊ตฌ์ฑ
- ํ๋ฒ ์์ฑํ๋ฉด ๋ณ๊ฒฝ ๋ถ๊ฐ
- ์์ ๋ค์ ๋ง๋ค๊ณ ์ ๋ฐ์ดํธ ํด์ผํจ
[์ฐธ๊ณ ]
โ๏ธ Auto Scaling ๊ทธ๋ฃน ์์ฑ
- ์ค์ผ์ผ ์ / ์ค์ผ์ผ ๋ค์ด ๊ท์น๋ค์ ๋ชจ์
- EC2 ์ธ์คํด์ค ์์๋ถํฐ ์ญ์ ๊น์ง์ ๋ชจ๋ ๋์์ ๋ํ ๊ท์น๊ณผ ์ ์ฑ ์ ๋ด๊ณ ์์
- Auto Scaling ๊ทธ๋ฃน ์์ฑ์ ์ํด ์ค์ผ์ผ๋ง ์ ์ฑ ๋ฐ ์ ํ์ ๋ํด ์ ์์งํด์ผํจ
โ๏ธ Scaling ์ ํ
- ์ธ์คํด์ค ๋ ๋ฒจ ์ ์ง
- ๊ธฐ๋ณธ ์ค์ผ์ผ๋ง ๊ณํ
- ํญ์ ์คํ ์ํ๋ฅผ ์ ์งํ๊ณ ์ ํ๋ ์ธ์คํด์ค์ ์ ์ง์ ๊ฐ๋ฅ
- ์ผ์ ํ ์์ ์ธ์คํด์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ต์, ์ต๋ ๋ฐ ์ํ๋ ์ฉ๋์ ๋์ผํ ๊ฐ ์ค์ ๊ฐ๋ฅ
- ์๋ ์ค์ผ์ผ๋ง
- ๊ธฐ์กด Auto Scaling ๊ทธ๋ฃน์ ํฌ๊ธฐ๋ฅผ ์๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ์ฌ์ฉ์๊ฐ ์ง์ (์ฝ์์ด๋, API, CLI ๋ฑ์ ์ด์ฉํด) ์๋์ผ๋ก ์ธ์คํด์ค๋ฅผ ์ถ๊ฐ/์ญ์ ํด์ผํจ
- ํด๋น ๋ฐฉ์์ ์ถ์ฒํ์ง ์๋ ๋ฐฉ์
- ์ผ์ ๋ณ ์ค์ผ์ผ๋ง
- ์์ธก ์ค์ผ์ผ๋งํธ๋ํฝ์ ๋ณํ๋ฅผ ์์ธกํ ์ ์๊ณ , ํน์ ์๊ฐ๋์ ์ด๋ ์ ๋์ ํธ๋ํฝ์ด ์ฆ๊ฐํ๋์ง ํจํด์ ๋ฐ๋ผ ๊ท์น ์ถ๊ฐํ๋ ๋ฐฉ์
Ex. ๋ฎ ์๊ฐ๋์๋ ํธ๋ํฝ์ด ์ต๊ณ ์น์ ์ด๋ฅด๊ณ ๋ฐค ์๊ฐ๋์๋ ํธ๋ํฝ์ด ๊ฑฐ์ ์๋ค๋ฉด,
๋ฎ ์๊ฐ๋์ ์๋ฒ๋ฅผ ์ฆ์คํ๊ณ ๋ฐค ์๊ฐ๋์ ์ค์ผ์ผ ๋ค์ด ํ๋ ๊ท์น ์ถ๊ฐ
- ๋์ ์ค์ผ์ผ๋ง
- ์์ ๋ณํ์ ๋์ํ์ฌ Auto Scaling ๊ทธ๋ฃน์ ์ฉ๋์ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ
- CloudWatch๊ฐ ๋ชจ๋ํฐ๋ง ํ๋ ์งํ๋ฅผ ์ถ์ ํ์ฌ ๊ฒฝ๋ณด ์ํ์ผ ๋ ์ํํ ์ค์ผ์ผ๋ง ๊ท์น ์ ํจ
Ex. CPU ์ฒ๋ฆฌ ์ฉ๋์ 80% ์์ค๊น์ง ๊ธ๋ฑํ ์ํ๊ฐ 5๋ถ ์ด์ ์ง์๋ ๊ฒฝ์ฐ,
Auto Scaling์ด ์๋๋ผ ์ ์๋ฒ๋ฅผ ์ถ๊ฐ
-
- ํญ์ ์ค์ผ์ผ ์ ๊ณผ ์ค์ผ์ผ ๋ค์ด ๋ ๊ฐ์ง์ ์ ์ฑ ๋ชจ๋ ์์ฑํด์ผ ํจ
โ๏ธ TOMCAT
- Apache์ฌ์์ ๊ฐ๋ฐํ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ง ์๋ ์คํ์์ค ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ
- ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ๋ํ์ ์ธ ์คํ์์ค WAS(Web Application Server)
โ ๋น์ฉ ๋ถ๋ด X - ์๋ฐ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ๋ํ ๊ณต์ ๊ตฌํ์ฒด ( Spring Boot์ ๋ด์ฅ ์๋ฒ )
โ ๋ณ๋์ ์ค์น ํ์ X - ๋
๋ฆฝ์ ์ผ๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ / Apache ๊ฐ์ ๋ค๋ฅธ ์น ์๋ฒ์ ์ฐ๋ํ์ฌ ํจ๊ป ์ฌ์ฉ๋ ๊ฐ๋ฅ
๐ก Tomcat ์์กด์ฑ
-
- Intellij ๋ด์ View > Tool Windows > Gradle > Dependencies ์์ ํ์ธ ๊ฐ๋ฅ
- Intellij ๋ด์ View > Tool Windows > Gradle > Dependencies ์์ ํ์ธ ๊ฐ๋ฅ
โ๏ธ Jetty
- ์ดํด๋ฆฝ์ค ์ฌ๋จ์ HTTP ์๋ฒ์ด์ ์๋ฐ ์๋ธ๋ฆฟ ์ปจํ
์ด๋
( ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ ) - Tomcat๊ณผ ๊ฐ์ด ์๋ฐ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ด์ ์๋ฒ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
โ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ์๋ฒ๋ฅผ ์ ํํ์ฌ ํ๋ก์ ํธ ๊ตฌ์ฑ ๊ฐ๋ฅ - 2009๋
์ดํด๋ฆฝ์ค ์ฌ๋จ์ผ๋ก ์ด์ ํ๋ฉฐ ์คํ์์ค ํ๋ก์ ํธ๋ก ๊ฐ๋ฐ๋จ
ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋๋น ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
โ ๊ฐ๋ณ๊ณ ๋น ๋ฆ - ์ ํ๋ฆฌ์ผ์ด์
์ ๋ด์ฅ ๊ฐ๋ฅ
- ๊ฒฝ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
โ ์ํ ์ฅ๋น, ์๊ท๋ชจ ํ๋ก๊ทธ๋จ์ ๋ ์ ํฉ
๐ก Tomcat ๋์ Jetty๋ก ๋ณ๊ฒฝํ๋ ๋ฒ
โ ์๋์ ๊ฐ์ด ๊ธฐ๋ณธ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ธ Tomcat ์์กด์ฑ์ ์ ์ธํด์ฃผ๊ณ ,
Jetty ์์กด์ฑ์ ์ถ๊ฐ !dependencies { implementation ('org.springframework.boot:spring-boot-starter-web') { exclude module: 'spring-boot-starter-tomcat' // tomcat ์์กด์ฑ ์ ์ธ } implementation ('org.springframework.boot:spring-boot-starter-jetty') // jetty ์์กด์ฑ ์ถ๊ฐ }
๊ทธ๋ฆฌ๊ณ build๋ฅผ ์งํํ๋ฉด ์๋์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฑธ ๋ณผ ์ ์๋ค !
โ๏ธ Nginx
- ๊ฐ๋ณ๊ณ ๋์ ์ฑ๋ฅ์ ๋ณด์ด๋ ์คํ์์ค ์น ์๋ฒ ์ํํธ์จ์ด
๐ก Tomcat๊ณผ Jetty๋ ์๋ฐ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ or ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
- ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ ๋ฆฌ์์ค๋ฅผ ๋น ๋ฅด๊ฒ ์๋ตํ๊ธฐ ์ํ ์น ์๋ฒ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- ํธ๋ํฝ์ด ๋ง์ ์น ์ฌ์ดํธ์ ํ์ฅ์ฑ์ ์ํด ๊ฐ๋ฐ๋ ๊ณ ์ฑ๋ฅ ์น ์๋ฒ
- ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ
โ ์ ์ ์์์ผ๋ก ๋์ ์ฑ๋ฅ / ๋์ ๋์์ฑ - ๋ค์์ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ํด๋ผ์ด์ธํธ - ์๋ฒ ์ฌ์ด์ ์กด์ฌํ๋ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- Nginx๋ฅผ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ๋ฐฐ์นํ์ฌ ๋ฌด์ค๋จ ๋ฐฐํฌ ๊ฐ๋ฅ
- Nginx๋ก ํ๋ก์ ์๋ฒ ๊ตฌ์ถ ๊ฐ๋ฅ
โํด๋ผ์ด์ธํธ - Nginx(80๋ฒ ํฌํธ) - Spring Boot(8080๋ฒ ํฌํธ)
โ๏ธ VPC (Virtual Private Cloud)
- ํด๋ผ์ฐ๋ ๋ด ํ๋ผ์ด๋น ๊ณต๊ฐ์ ์ ๊ณตํ์ฌ,
ํด๋ผ์ฐ๋๋ฅผ Public๊ณผ Private ์์ญ์ผ๋ก ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ ์ ์๊ฒํ๋ ์๋น์ค - ํ์ฅ์ฑ
- ๋คํธ์ํฌ์ ๋ํ ์์ ํ ํต์ ๊ถ ๊ฐ์ง ์ ์์
โ IP Address
( ์ด๊ฑฐ ์์ ์ด๋๊ฐ ๋ธ๋ก๊ทธ ์์ฑํ ๊ฑฐ ์์ )
- ์ปดํจํฐ ๋คํธ์ํฌ์์ ์ฅ์น๋ค์ด ์๋ก๋ฅผ ์ธ์ํ๊ณ ํต์ ์ ํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ํน์ํ ๋ฒํธ
- IPv4 / IPv6๋ก ๋๋๋ฉฐ ํผ์ฉํ์ฌ ์ฌ์ฉ
.
์ผ๋ก ๊ตฌ๋ถํ 4๊ฐ์ ์ฅํ ์ผ๋ก ์ด๋ฃจ์ด์ง
โ ๊ฐ๊ฐNetwork Address
/Host Address
/Host Address
/Host Address
โ๏ธ IP Address Class
- (์ด์ ์๋) IPv4 ์ฃผ์์์ ํธ์คํธ๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ ํน์ ๋คํธ์ํฌ๋ฅผ ๊ฐ๋ฆฌํค๋ 8๋นํธ์ ๋คํธ์ํฌ ์์ญ(Network Address)๊ณผ ํด๋น ๋คํธ์ํฌ ๋ด์์ ํธ์คํธ์ ์ฃผ์(Host Address)๋ฅผ ๊ฐ๋ฆฌํค๋ ๋๋จธ์ง ์์ญ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ํด๋์ค(Class) ์ฌ์ฉ
- A, B, C, D, E์ 5๊ฐ ํด๋์ค๋ก ๋๋จ
( ๊ถ๊ธํ๋ฉด ๋ ์ฐพ์๋ณด๊ธฐ )
โ CIDR (Classless inter-domain routing)
- ํด๋์ค๊ฐ ์๋ ๋๋ฉ์ธ ๊ฐ ๋ผ์ฐํ ๊ธฐ๋ฒ
- 1993๋ ๋์ ๋๊ธฐ ์์ํ ๊ตญ์ ํ์ค์ IP์ฃผ์ ํ ๋น ๋ฐฉ๋ฒ
- IP Address Class ๋ฐฉ์์ ๋์ฒดํ ๋ฐฉ์
- ์ํ๋ ๋ธ๋ก๋งํผ Network Address๋ฅผ ์ง์ ํ์ฌ ์ด์ฉ ๊ฐ๋ฅ
( ๋ธ๋ก์ ์ ํด์ ธ ์์ - ๊ฒ์ํด๋ณด๊ธฐ )
Ex. 172.16.0.0 /16 ์ด๋ฉด,
์ฌ๊ธฐ์ /16์ ์ฒซ 16bit๋ฅผ Network Address๋ก ์ฌ์ฉํ๋ค๋ ์๋ฏธ
โ
โ ์ด 2^16์ธ 65,536๊ฐ์ IP์ฃผ์๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ปค๋ค๋ ๋คํธ์ํฌ ๋ธ๋ก์ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํ์
โ ์๋ธ๋ท (Subnet)
- ์๋ธ๋คํธ์ํฌ(Subnetwork)์ ์ค์๋ง
- IP ๋คํธ์ํฌ์ ๋ ผ๋ฆฌ์ ์ธ ํ์ ๋ถ๋ถ์ ๊ฐ๋ฆฌํด
- ์๋ธ๋ท์ ํตํด ํ๋์ ๋คํธ์ํฌ๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋๋ ์ ์์
- VPC์ CIDR ๋ธ๋ก์ ์ด์ฉํด ์ ์
( ์ต์ ํฌ๊ธฐ์ ์๋ธ๋ท์/28
) - VCP๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ ๋ฐ๋ผ ๋ค์ํ ์๋ธ๋ท์ ์์ฑ ๊ฐ๋ฅ
- ํผ๋ธ๋ฆญ ์๋ธ๋ท
โ ์ธํฐ๋ท์ ํตํด ์ฐ๊ฒฐ ํ ์ ์๋ ์๋ธ๋ท - ํ๋ผ์ด๋น ์๋ธ๋ท
โ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ์ง ์๊ณ , ๋ณด์์ ์ ์งํ๋ ๋ฐฐํ์ ์ธ ์๋ธ๋ท - VPN only ์๋ธ๋ท
โ ๊ธฐ์ ๋ฐ์ดํฐ ์ผํฐ์ VPC๋ฅผ ์ฐ๊ฒฐํ๋ ์๋ธ๋ท
- ํผ๋ธ๋ฆญ ์๋ธ๋ท
โ ๏ธ ์๋ธ๋ท์ AZ๋น ์ต์ ํ๋๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , ์ฌ๋ฌ ๊ฐ์ AZ์ ์ฐ๊ฒฐ๋๋ ์๋ธ๋ท์ ๋ง๋ค ์ X
๐ก AWS๊ฐ ํ๋ณดํ ์๋ธ๋ท ์ค ์ฒ์ ๋ค ๊ฐ์ IP์ฃผ์์ ๋ง์ง๋ง IP์ฃผ์๋ ์ธํฐ๋ท ๋คํธ์ํน์ ์ํด ์์ฝ๋์ด์์ !
Ex. 10.0.0.0/24 ์ฒด๊ณ์ CIDR ๋ธ๋ก์ด ์๋ ์๋ธ๋ท์์ 10.0.0.0, 10.0.0.1, 10.0.0.2, 10.0.0.3, 10.0.0.255 ๋ฑ 5๊ฐ์ IP์ฃผ์๋ ์์ฝ ๋์ด ์์
โ ๋ผ์ฐํ ํ ์ด๋ธ (Routing Table)
- ํ๋์ ์ง์ ์์ ๋ ๋ค๋ฅธ ์ง์ ์ผ๋ก ๊ฐ๊ธฐ ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ํ ์ด๋ธ
( ํธ๋ํฝ์ ์ ์ก ๋ฐฉํฅ์ ๊ฒฐ์ ํ๋ ๋ผ์ฐํธ์ ๊ด๋ จ๋ ๊ท์น์ ๋ด์ ํ ์ด๋ธ๋ก ๋ชฉ์ ์ง๋ฅผ ํฅํ ์ต์ ์ ๊ฒฝ๋ก๋ก ๋ฐ์ดํฐ ํจํท์ ์ ์กํ๊ธฐ ์ํ ๋ชจ๋ ์ ๋ณด ๋ด๊ณ ์์ )
- ๋ชจ๋ ์๋ธ๋ท์ ํญ์ ๋ผ์ฐํ
ํ
์ด๋ธ์ ๊ฐ์ง
( ํ๋์ ๋ผ์ฐํ ํ ์ด๋ธ ๊ท์น์ ์ฌ๋ฌ ๊ฐ์ ์๋ธ๋ท์ ์ฐ๊ฒฐํ๋ ๊ฒ๋ ๊ฐ๋ฅ )
Ex. ํน์ VPC์ ์๋ธ๋ท์ด ๋ผ์ฐํ ํ ์ด๋ธ์ ์ธํฐ๋ท ๊ฒ์ดํธ์จ์ด๋ฅผ ํฌํจํ๊ณ ์๋ค๋ฉด, ํด๋น ์๋ธ๋ท์ ์ธํฐ๋ท ์ก์ธ์ค ๊ถํ / ์ ๋ณด๋ฅผ ๊ฐ์ง
- ์๋ธ๋ท์ ์์ฑํ๊ณ ๋ณ๋์ ๋ผ์ฐํ
ํ
์ด๋ธ์ ์์ฑํ์ง ์์ผ๋ฉด
ํด๋ผ์ฐ๋๊ฐ ์๋์ผ๋ก VPC์ ๋ฉ์ธ ๋ผ์ฐํ ํ ์ด๋ธ ์ฐ๊ฒฐํจ
โ๏ธ ๊ฒ์ดํธ์จ์ด
โ VPC์ ์ธํฐ๋ท ๊ฐ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ตฌ์ฑ์์
๐ ์ค์ต
โ๏ธ Nginx 1๊ฐ ์๋ฒ ์ฐ๊ฒฐ ์ค์ต
1. ์ด ๋งํฌ์์ ์๋์ ๊ฐ์ด ์๋์ฐ์ฉ Stable ๋ฒ์ ๋ค์ด๋ก๋ !
( ๋๋ C:\Program Files\nginx-1.22.1 ์ด ์์น์ ์ค์นํ๋ค ! )
2. nginx.exe
์ ์คํํ๋ฉด ์๋์ฐ๋ ๊ธฐ๋ณธ์ผ๋ก 80ํฌํธ๋ก ์ฐ๊ฒฐ์ด ๋ ๊ฒ !
( localhost:80
์ผ๋ก ์ ์ํ๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋ํ๋จ )
3. nginx๋ฅผ ํ๋ก์ ์๋ฒ ์ญํ ๋ก ๋ง๋ค๊ธฐ ์ํด conf > nginx.conf ํ์ผ์
์๋์ ๊ฐ์ด 80 ํฌํธ๋ฅผ ํ๋ก์๋ก 8080 ํฌํธ๊น์ง ์ฐ๊ฒฐํ ์ ์๋๋ก ์ฝ๋ ์์ ํ ์ ์ฅ
server {
listen 80;
...
location / {
...
proxy_pass http://localhost:8080; # ์ถ๊ฐ - ์์ฒญ์ 8080 ํฌํธ๋ก ๋๊น
proxy_set_header X-Real-IP $remote_addr; # ์ถ๊ฐ
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # ์ถ๊ฐ
proxy_set_header Host $http_host; # ์ถ๊ฐ
}
}
4. cmd๋ฅผ ์ด์ด์ nginx -s reload
๋ช
๋ น์ด๋ก ์ฌ์์
5. ์ดํ localhost:80
๋ก ์ ์ํ๋ฉด ์๋์ ๊ฐ์ ํ์ด์ง๊ฐ ๋ํ๋จ !
( ์์ง 8080 ํฌํธ๊ฐ ์คํ์ค์ด ์๋๊ธฐ ๋๋ฌธ )
6. intellij๋ ํฐ๋ฏธ๋๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ ํ ์คํ์ํจ ํ ๋ค์ localhost:80
์ผ๋ก ๋ค์ด๊ฐ๋ฉด,
์๋์ ๊ฐ์ด 8080 ํฌํธ๋ก ์คํ์ํจ ํ๋ก์ ํธ์ ํ๋ฉด์ด ๋ํ๋ ๊ฒ !

7. 'nginx -s stop` ๋ช ๋ น์ด๋ก nignx ์ข ๋ฃ ๊ฐ๋ฅ
โ๏ธ Nginx 2๊ฐ ์๋ฒ ์ฐ๊ฒฐ ์ค์ต (๋ก๋๋ฐธ๋ฐ์ ์ฌ์ฉ)
1. ํ ํ๋ก์ ํธ๋ 8080 ํฌํธ / ๋ค๋ฅธ ํ๋์ ํ๋ก์ ํธ๋ 8081 ํ๋ก์ ํธ๋ก ๋น๋ ํ ์คํํ๊ณ
2. ์๊น ์ค์ ํ ๋ถ๋ถ์ ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ๊ณ , 8080 ํฌํธ์ 8081 ํฌํธ๋ฅผ ์ถ๊ฐํด์ค
http {
upstream backend { # ์ถ๊ฐ
server localhost:8080; # ์ถ๊ฐ
server localhost:8081; # ์ถ๊ฐ
}
location / {
proxy_pass http://backend; # ์ถ๊ฐ ( ์๋๋ ์ฃผ์์ผ๋ก ๋ง๋ค์ด์ค )
// root html;
// index index.html index.htm;
// proxy_pass http://localhost:8080; # ์ถ๊ฐ - ์์ฒญ์ 8080 ํฌํธ๋ก ๋๊น
// proxy_set_header X-Real-IP $remote_addr; # ์ถ๊ฐ
// proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # ์ถ๊ฐ
// proxy_set_header Host $http_host; # ์ถ๊ฐ
}
}
3. ์ดํ ๋ค์ nginx์ฌ์์ ํ๊ณ localhost:80
์ผ๋ก ์ ์ํ์ฌ ์๋ก๊ณ ์นจ์ ๋๋ฅด๋ฉด,
๋ ํ๋ก์ ํธ์ ํ๋ฉด์ด ๋ฒ๊ฐ์ ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์์ !!
๐ ๋๋์
์ด๋ฒ ํ์ต์ ๊ทธ๋๋ ์ด๋ ค์ ์์ด ์ ๋๋๊ณ !!
ํ๋ก์ ์๋ฒ๊ฐ ๋ญ์ง ๊ฐ์ด ์ ์์กํ์๋๋ฐ ์ง์ ๋์ผ๋ก ํ์ธํ ์ ์์ด์ ๋ ์ดํด๋ ์ ๋๊ณ ์ฌ๋ฐ์๋ค ใ
ใ
( ๋ณธ ๊ฒ์๋ฌผ์ 2022/12/10์ ์์ฑํ ๊ธ์ ์ฎ๊ธด ๊ธ์ ๋๋ค. ์๋ฌธ์ ์๊ธฐ์ ์์! )
'โข CodeStates BootCamp > Section 4' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ [Section4] ์ด์ ๊ฐ๋ ํ๊ณ ๐ฅ (0) | 2023.04.14 |
---|---|
๐ [Section4] 12. [Cloud] ๋ฐฐํฌ ์๋ํ (0) | 2023.04.13 |
๐ [Section4] 11. [Cloud] ๋ฐฐํฌ ์ปจํ ์ด๋ Docker (0) | 2023.04.13 |
๐ [Section4] 10. [Cloud] ์ด์ ํ๊ฒฝ ๊ตฌ์ฑ (0) | 2023.04.13 |
๐ [Section4] 9. [Spring WebFlux] Spring WebFlux (1) | 2023.04.13 |