์๋ ํ์ธ์?
์ฝ๋ฉํ๋ ๋ชจ์ฃผ๋ถ ์ ๋๋ค!
์ ์ ์๋ฆฌ์ฆ๊ฐ ๋ง์ง๋ง์ ํฅํด ๊ฐ๊ณ ์๋ค์!
1. GCP ์์ ๋ด๋ถ / ์ธ๋ถ ๋ถํ ๋ถ์ฐ ์ ํํ๊ธฐ
์ง๋๋ฒ ํฌ์คํ ์ ๋ค ๋ฐ๋ผ ํ์ จ๋ค๋ฉด,
๋ก๋ ๋ฐธ๋ฐ์ (๋ถํ ๋ถ์ฐ) ์ค์ ์ ์ํด ๋คํธ์ํฌ ์๋น์ค๋ก ๋ค์ด๊ฐ์๋ค
๋ถํ ๋ถ์ฐ(Load balancing) ์ด๋,
๊ฐ๋จํ๊ฒ ๋งํด์ ์ปดํจํฐ๊ฐ ๊ฐ๋นํ๊ธฐ ํ๋ค ์ ๋์
์์ฒญ์ด ๋ค์ด์ค๋ ๊ฒฝ์ฐ (์ฌ์ฉ์๊ฐ CPU load % ์ค์ ๊ฐ๋ฅ)
๋ค๋ฅธ ์ปดํจํฐ๋ก ์์ฒญ์ ๋๋์ด ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ฐ๋ฆฌ๋ http / https๋ฅผ ์ด์ฉํด ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์์ฒญ์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
HTTP(S) ๋ถํ ๋ถ์ฐ์ ์ ํํฉ์๋ค!
์๋์ ๊ฐ์ด ์ ํ์ง๊ฐ ๋์ค๋ฉด,
"์ธํฐ๋ท ํธ๋ํฝ์ VM์ผ๋ก ๋ถ์ฐ" ์ ์ ํํฉ์๋ค
์ด ๋๊ฐ์ ์ฐจ์ด๋ ์ธ๋ถ ๋ถํ ๋ถ์ฐ์ด๋,
๋ด๋ถ ๋ถํ ๋ถ์ฐ์ด๋์ ์ฐจ์ด์ ๋๋ค.
๋ด๋ถ / ์ธ๋ถ ๋ถํ ๋ถ์ฐ์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ธ๋ถ ๋ถํ ๋ถ์ฐ | ๋ด๋ถ ๋ถํ ๋ถ์ฐ |
> ์ธํฐ๋ท์ ํตํด ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋ถ์ฐ > ๋ถํ๋ฅผ ์๋ก ๋ค๋ฅธ Region์ ๋ถ์ฐ ๊ฐ๋ฅ > URL map์ ํตํด ์๋ก ๋ค๋ฅธ backend service์ ๋ถํ๋ฅผ ๋ถ์ฐ ํ ์ ์์ |
> Region์ผ๋ก ๋ค์ด์จ ๋ถํ๋ฅผ ๋ถ์ฐ > Region ๋ด๋ถ์์ ๋ถํ๋ฅผ ๋ถ์ฐ (๋ด๋ถ์ VM ์ฌ์ด์์ ๋ถํ ๋ถ์ฐ) > ๋ณ๋์ Subnet์ด ํ์ |
๋ง์ฝ ๋น ๊ด๋ฆฌํ ์ธ์คํด์ค ๊ทธ๋ฃน์์
ํน์ ๋ฆฌ์ ๋ง์ ์ฌ์ฉํ๊ฑฐ๋
์ฌ๋ฌ๊ฐ์ VM๋ค์ ์ญํ ์ด ๋ช ํํ๊ฒ ๊ตฌ๋ถ ๋๊ณ
ํธ๋ํฝ ๋ถ์ฐ์ ๋ํ ๊ท์น์ด ์๋ค๋ฉด
"VM ์ฌ์ด์์๋ง ๋ถ์ฐ"์ ์ฌ์ฉํด๋ ๋๊ฒ ์ต๋๋ค.
(๋ด๋ถ ๋ถํ ๋ถ์ฐ)
ํ์ง๋ง, ์ธํฐ๋ท์์ ์์ฒญ๋๋ ํธ๋ํฝ๋ค์ด
๋ฆฌ์ ์ ๊ณจ๋ผ์ ๋ถ๋ฐฐ๊ฐ ๋์ด์ผ ํ๊ฑฐ๋,
ํธ๋ํฝ ๊ท๋ชจ์ ๋ฐ๋ผ ์ธ์คํด์ค์ ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ๋ณ๋๋์ด
๊ฒฐ์ ๋ VM๋ค ์ฌ์ด์์ ๋ถํ๊ฐ ๋ถ์ฐ๋๊ธฐ๋ฅผ ์ํ๋ค๋ฉด
"์ธํฐ๋ท ํธ๋ํฝ์ VM์ผ๋ก ๋ถ์ฐ"์ ์ ํํด์ผ ํฉ๋๋ค.
(์ธ๋ถ ๋ถํ ๋ถ์ฐ)
์๋์ ๊ตฌ๊ธ ๊ณต์ ๋ฌธ์์ ์ฒจ๋ถ๋์ด ์๋ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
2. GCP์์ ์ธ๋ถ ๋ถํ ๋ถ์ฐ ์์ฑํ๊ธฐ
์ธ๋ถ ๋ถํ ๋ถ์ฐ๊ธฐ๋ฅผ ์ ํํ์ จ๋ค๋ฉด,
๋ถํ ๋ถ์ฐ์ ๊ตฌ์ฑํ๊ธฐ ์ํด ๋ค์์ ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
1. ๋ฐฑ์๋ ์๋น์ค ์์ฑ ๋ฐ ์ฐ๊ฒฐ
2. ํธ์คํธ ๋ฐ ๊ฒฝ๋ก ๊ท์น ์์ฑ
3. ํ๋ฐํธ์๋ ์ฐ๊ฒฐ
2.1 ๋ฐฑ์๋(Backend) ๊ตฌ์ฑ
๋ฐฑ์๋๋, ์ฝ๊ฒ ๋งํด์ ์๋ฒ์ ๊ด๋ จ๋์ด์๋ ๊ธฐ์ ์ ๋งํฉ๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์ธ๋ถ์ ํธ๋ํฝ์ Virtual machine์ ๋๋์ด ์ฃผ๋๋ฐ,
VM์์ ๋ฐ์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ์๋ฒ๊ฐ ํ์ํ๊ฒ ์ฃ ?
๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ํต์ ์ ํด์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ณ ,
์ธํฐ๋ท์์ ์์ฒญ๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๋ฑ์ ์์ ๋ค์ ํตํ์ด ๋ฐฑ์๋๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ข ๋ ๋์ ์๋ฏธ์ ๋ฐฑ์๋๋ ํ๋ก ํธ์๋๊ฐ ์๋ ๋ชจ๋ ๊ฒ์ ์๋ฏธํ๊ธฐ๋ ํฉ๋๋ค!
๋ฐ๋๋ก ํ๋ก ํธ ์๋๋,
์ธ๊ฐ์ด ์ธํฐ๋ท์ ์ด์ฉํ๊ธฐ ์ํด ๋ง์ฃผํ๋ ํ๋ฉด ๋๋ UI์์
์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ์ ์๊ฒ๋ ๊ตฌํํ๋ ๊ธฐ์ ์ ๋งํฉ๋๋ค.
์ฃผ๋ก HTML์ด๋ CSS, Javascript์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐฑ์๋๋ฅผ ์๋ก ์์ฑํ ๋, ์ฃผ์ํด์ผ ํ๋ ์ฌํญ์ด ์์ต๋๋ค.
์ด์ ํฌ์คํ ์ ๋ณด๋ฉด ๋ฐฉํ๋ฒฝ์์ ํฌํธ 3000๋ฒ์ ์ง์ ํ ์ ์ด ์์ ๊ฒ๋๋ค.
์ด๋ ์ ๊ฐ GitHub์ ์ฌ๋ ค๋์ ์๋ฒ ์ฝ๋(www.js)์์ ์๋์ ๊ฐ์ด
ํฌํธ๋ฅผ 3000๋ฒ์ผ๋ก ์ง์ ํด ๋์๊ธฐ ๋๋ฌธ์ธ๋ฐ์,
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
๋ง์ฝ ์ด ๋ฒํธ๋ฅผ ๋ค๋ฅด๊ฒ ์ง์ ํด ์ฃผ์๋ค๋ฉด,
์ง์ ํ ๋ฒํธ๋ฅผ "์ ๋ฐฑ์๋" ์์ "ํฌํธ ๋ฒํธ"์ ์ ๋ ฅํ์๋ฉด ๋ฉ๋๋ค.
๋ง์ฝ ํด๋น ํฌํธ๋ฅผ ์ค์ ํ์ง ์์ผ๋ฉด,
๋ก๋๋ฐธ๋ฐ์์ ์ธ์คํด์ค ๊ทธ๋ฃน์ ํต์ ์ด ๋์ง ์์ผ๋ ์ฃผ์ํ์ธ์!
์ด์ ํฌ์คํ ์์ ์ํ ํ์ธ(health check)์ ๋ง๋ค์ด ๋์๋ค๋ฉด,
์๋์ ๊ฐ์ด ๋ฆฌ์คํธ์ ์ ํ ๊ฐ๋ฅํ ์ํ ํ์ธ์ด ๋ํ ๋ ๊ฒ์ ๋๋ค.
๋ง์ฝ ์ํํ์ธ์ด ๋ํ๋์ง ์๋๋ค๋ฉด,
์ด๋ฏธ ์ธ์คํด์ค ๊ทธ๋ฃน ๋ํ ์ ์ ์ํ๊ฐ ์๋ ํ๋ฅ ์ด ๋์ผ๋ฏ๋ก
์ด์ ํฌ์คํ ์ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค.
์๋์ ๊ฐ์ด ๋ฐฑ์๋๊ฐ ๋ค ๋ง๋ค์ด์ก์ผ๋ฉด, ํธ์คํธ ๋ฐ ๊ฒฝ๋ก ๊ท์น์ ๋ง๋ค์ด ๋ณผ ์ฐจ๋ก์ ๋๋ค.
ํฌ์คํ ์ด ๋๋ฌด ๊ธธ์ด์ง๋ ๊ด๊ณ๋ก,
์ด ๋ด์ฉ์ ๋ค์ ํฌ์คํธ์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค!
'Coding > Google Cloud Platform' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Google cloud platform] ๋๋ง์ ์๋ฒ(Server) ๋ง๋ค๊ธฐ - 7 (13) | 2020.11.08 |
---|---|
[Google cloud platform)] ๋๋ง์ ์๋ฒ(Server) ๋ง๋ค๊ธฐ - 6 (2) | 2020.11.02 |
[Google cloud platform)] ๋๋ง์ ์๋ฒ(Server) ๋ง๋ค๊ธฐ - 4 (0) | 2020.10.27 |
[Google cloud platform] ๋๋ง์ ์๋ฒ(Server) ๋ง๋ค๊ธฐ - 3 (0) | 2020.10.18 |
[Google cloud platform] ๋๋ง์ ์๋ฒ(Server) ๋ง๋ค๊ธฐ - 2 (0) | 2020.10.14 |