-
Notifications
You must be signed in to change notification settings - Fork 3
๐๋ฌด์ค๋จ ๋ฐฐํฌ
๋ฐฐํฌ๋ฅผ ํ ๋๋ง๋ค ์์คํ
์ด ์๋ํ์ง ์๋ ๋ค์ดํ์
์ด ๋ฐ์ํ๊ณ , ๋ค์ดํ์
์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํ์ํค๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ์ด์ ๋ก ์๋น์ค๋ฅผ ์ค๋จํ์ง ์๊ณ ์๋ก์ด ๋ฒ์ ์ ๋ฐฐํฌํ๋ ๋ฌด์ค๋จ ๋ฐฐํฌ
๋ฅผ ๋์
ํ๊ฒ ๋์์ต๋๋ค.
๋ฌด์ค๋จ ๋ฐฐํฌ ๋ฐฉ์์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์กด์ฌํ๋๋ฐ์, ๊ทธ ์ค ๋ํ์ ์ธ ๋ฐฉ์์๋
- Rolling
- Blue/Green
- Canary
๊ฐ ์์ต๋๋ค.
์ธ๊ฐ์ง ๋ฐฐํฌ ๋ฐฉ์์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
Rolling ๋ฐฐํฌ๋ ํธ๋ํฝ์ ์ ์ง์ ์ผ๋ก
๊ตฌ๋ฒ์ ์์ ์ ๋ฒ์ ์ผ๋ก ์ด๋์ํค๋ ๋ฐฉ๋ฒ์
๋๋ค.
Blue/Green ๋ฐฐํฌ๋ ํธ๋ํฝ์ ํ๋ฒ์
๊ตฌ๋ฒ์ ์์ ์ ๋ฒ์ ์ผ๋ก ์ด๋์ํค๋ ๋ฐฉ๋ฒ์
๋๋ค.
Canary ๋ฐฐํฌ๋ ํธ๋ํฝ์ ์ ์ง์ ์ผ๋ก
๊ตฌ๋ฒ์ ์์ ์ ๋ฒ์ ์ผ๋ก ์ด๋์ํจ๋ค๋ ์ ์์ Rolling ๋ฐฐํฌ์ ๋น์ทํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ ์ธ์์ ๋์์ผ๋ก ์ ๋ฒ์ ์ ์ผ์ ๊ธฐ๊ฐ๋์ ์ด์
ํ๋ฉด์ ์ด์์ด ์๋์ง ํ์ธํ ํ ๋ชจ๋ ํธ๋ํฝ์ ์ ๋ฒ์ ์ผ๋ก ์ด๋์ํจ๋ค๋ ํน์ง์ด ์์ต๋๋ค.
๊ฒฐ๋ก ์ ๋จผ์ ๋งํ์๋ฉด, ์ฝ๋ฉํด๋์ค๋ Ngnix Docker๋ฅผ ํ์ฉํ Blue/Green ๋ฐฐํฌ๋ฅผ ์ ํํ์ต๋๋ค.
๋ฌด์ค๋จ ๋ฐฐํฌ ๋ฐฉ์์ Blue/Green์ผ๋ก ๊ฒฐ์ ํ๊ฒ ๋ ๊ณผ์ ์ ๊ธฐ์กด ๋ฐฐํฌ ๋ฐฉ์๊ณผ ๋น๊ตํ๋ฉฐ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ ์ฌ์ง์ ์ ํฌ ์๋น์ค์ ๋๋ต์ ์ธ ์ด์ ์ธํ๋ผ ๊ตฌ์กฐ์ ๋๋ค.
์ด์ ์๋ฒ EC2๋ ์ด 2๊ฐ์ ์น์๋ฒ๋ฅผ ์ธ์คํด์ค A, ์ธ์คํด์ค B์์ ๊ฐ๊ฐ ํ๋์ฉ ์ด์ํ๊ณ ์์ต๋๋ค.
๊ธฐ์กด ๋ฐฐํฌ A์ ๋ฐฐํฌ๊ฐ ์๋ฃ๋ ๋ค B์ ๋ฐฐํฌ๊ฐ ์์๋๋ ๋ฐฉ์์ผ๋ก ๋ฐฐํฌ๊ฐ ์งํ๋ฉ๋๋ค.
A ์ธ์คํด์ค์ ๋ค์ดํ์์ด ๋ฐ์ํ๋๋ผ๋ B ์ธ์คํด์ค๊ฐ ์ ์์ ์ผ๋ก ์ด์๋๊ณ ์๊ธฐ ๋๋ฌธ์ Rolling ๋ฐฉ์์ ๋ฌด์ค๋จ ๋ฐฐํฌ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๊ธฐ์กด์ CD ๊ณผ์ ์์ EC2 ์ธ์คํด์ค๊ฐ ์ด๋ป๊ฒ ๊ด๋ฆฌ๋๊ณ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ Github Action self hosted runner๋ฅผ ํตํด ์ฒซ๋ฒ์งธ EC2 ์ธ์คํด์ค
(production A)์
๊ตฌ ๋ฒ์ ์น์๋ฒ ๋์ปค ์ปจํ ์ด๋๋ฅผ ์ ๋ฒ์ ์น์๋ฒ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
๊ทธ ํ production A์ ๋ฐฐํฌ๊ฐ ์๋ฃ๋๋ฉด ๋ ๋ฒ์งธ ์ธ์คํด์ค
(production B)์ CD ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ฉ๋๋ค. production B๋ ๋ค์ดํ์์ ์ต์ํํ๊ธฐ ์ํด production A์ ์น ์๋ฒ๊ฐ health check์ ์ฑ๊ณตํ ๋๊น์ง ๋๊ธฐํ ํ production B์ ๋ฐฐํฌ๋ ์์๋ฉ๋๋ค.
์๋๋ production B๊ฐ A์ health check ์๋ต์ ๋ฐ์ production B์ ๋ฐฐํฌ๊น์ง ์๋ฃ๋ ๋ชจ์ต์ ๋๋ค.
๋ค๋ง, ์๋ ๋ฐฐํฌ ์งํ ๊ณผ์ ์ ๋ณด๋ฉด ์ ์ ์๋ฏ, Rolling ๋ฐฐํฌ์๋ ๋ช๊ฐ์ง ๋ฌธ์ ์ ์ด ์กด์ฌํ์ต๋๋ค.
B ์ธ์คํด์ค์ ๋ฐฐํฌ๊ฐ A ์ธ์คํด์ค์ ๋ฐฐํฌ ์ฑ๊ณต์ ์์กด์ ์ด๋ค ๋ณด๋, ์์ํ๊ธฐ ์ ์ฐฐ๋์ ์๊ฐ์ ๊ตฌ๋ฒ์ ๊ณผ ์ ๋ฒ์ ์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ํ, ํ ์ธ์คํด์ค์๋ง ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
Canary ๋ฐฐํฌ ๋ํ Rolling ๋ฐฐํฌ์ ๊ฐ์ด ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณด๋ฅํ์์ต๋๋ค.
๊ทธ๋์ ๋์ ํ ๊ฒ์ด Blue/Green ๋ฌด์ค๋จ ๋ฐฐํฌ์ ๋๋ค.
ํ์ฌ ์ด์์ค์ธ ์๋น์ค์ ํ๊ฒฝ์ blue
, ์๋กญ๊ฒ ๋ฐฐํฌํ ํ๊ฒฝ์ green
์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์๋ก ๋ฐฐํฌํ ํ๊ฒฝ์ด ์ค๋น๋๋ฉด, blue
๋ก ์ ์ก ๋๋ ๋ชจ๋ ํธ๋ํฝ์ green
์ผ๋ก ๋ผ์ฐํ
ํ๋ ๋ฐฉ์์
๋๋ค.
blue
ํ๊ฒฝ์ ๋ค์ green
ํ๊ฒฝ์ ์ํด ์ ๊ฑฐ๋ฉ๋๋ค.
์๋ก์ด ํ๊ฒฝ์ธ green
์ผ๋ก ํธ๋ํฝ์ ํ๋ฒ์ ์ ์กํ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๊ณ , ํ ์ธ์คํด์ค์๋ง ํธ๋ํฝ์ด ๋ชฐ๋ฆฐ๋ค๋ ๋จ์ ๋ ํด๊ฒฐ๋์์ต๋๋ค.
์ฝ๋ฉํด๋์ค
๋ Blue/Green ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ์ํด, ๊ฐ ์ธ์คํด์ค์ nginx๋ฅผ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ๋ก ๋์์ต๋๋ค.
๋ฐฐํฌ๊ฐ ์์๋ ๋, ๊ฐ ์ธ์คํด์ค์ ๊ตฌ ๋ฒ์ ์น์๋ฒ์ ์ ๋ฒ์ ์น์๋ฒ๋ ์๋ก ๋ค๋ฅธ ํฌํธ(8080, 8081)๋ก ์คํ๋ฉ๋๋ค.
์ ๋ฒ์ ์น์๋ฒ๊ฐ ์ ์คํ๋์๋์ง ๊ฐ ์ธ์คํด์ค์์ 5์ด ์ฃผ๊ธฐ๋ก ์ ๋ฒ์ ์น์๋ฒ๋ฅผ health checkํฉ๋๋ค.
health-check์ ์ฑ๊ณตํ๊ฒ ๋๋ฉด, nginx์ ๋ค์ด์ค๋ http ํธ๋ํฝ์ ๊ตฌ ๋ฒ์ ์์ ์ ๋ฒ์ ์น์๋ฒ๋ก ์ ์กํฉ๋๋ค.
์ด๋ก์จ, Rolling ๋ฐฐํฌ์๋ ๋ค๋ฅด๊ฒ ๋ณ๋ ฌ์ ์ผ๋ก ๋ ์ธ์คํด์ค๊ฐ ๋ฐฐํฌ๋ฉ๋๋ค.
Rolling ๋ฐฐํฌ์ ๋ ๋ค๋ฅธ ์ฐจ์ด์ ์ผ๋ก๋ ๊ตฌ ๋ฒ์ ์น ์๋ฒ๋ ์ ๋ฒ์ ์น ์๋ฒ์ ๋ฐฐํฌ๊ฐ ๋๋๊ณ ์ข ๋ฃ๋๋ค๋ ์ ์ ๋๋ค.
์ฝ๋ฉํด๋์ค
์ ๋ฌด์ค๋จ ๋ฐฐํฌ ๋ฐฉ์์ ์ด์ ๊ฐ์ด ๊ตฌ์ฑํ๊ฒ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐ์กด Blue/Green ๋ฐฉ์์ Green ํ๊ฒฝ๊ณผ Blue ํ๊ฒฝ์ ์ ์งํ๊ธฐ ์ํด ๊ธฐ์กด ์ธ์คํด์ค ๊ฐ์์ ๋ ๋ฐฐ์ ์ธ์คํด์ค๊ฐ ๋ ํ์ํฉ๋๋ค.
์ธ์คํด์ค๋ฅผ ์ถ๊ฐ๋ก ์ฆ์คํ๋ฉด, ๊ทธ๋งํผ ๋น์ฉ์ด ์ฆ๊ฐํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ Nginx
๋ก ํด๊ฒฐํ ์ ์์์ต๋๋ค.
๋ฐฐํฌ๊ฐ ์งํ๋๋ ๊ณผ์ ์์ 8080 ํฌํธ ์น์๋ฒ์ 8081 ํฌํธ ์น์๋ฒ๋ ๊ฐ๊ฐ Docker Container
๋ก ๊ด๋ฆฌ๋ฉ๋๋ค.
Nginx
๋ฅผ ์ฌ์ฉํด 80 ํฌํธ๋ก ๋ค์ด์จ ์์ฒญ์ 8080 ๋๋ 8081๋ก ๋ผ์ฐํ
ํ์ฌ Blue/Green ๋ฌด์ค๋จ ์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ ์ ์์์ต๋๋ค.
์ต์ข ์ ์ผ๋ก ๋ฌด์ค๋จ ๋ฐฐํฌ๊ฐ ์๋ฃ๋ ์ํ๋ ์๋์ ๊ฐ์ต๋๋ค.
ํ์ฌ ๊ตฌํ๋ ๋ฌด์ค๋จ ๋ฐฐํฌ์๋ ๋๊ฐ์ง ๋ฌธ์ ์ ์ด ์์ต๋๋ค.
์ฒซ๋ฒ์งธ๋ A ์ธ์คํด์ค๊ฐ ์ด๋ ํ ์ด์ ๋ก ๋ฐฐํฌ์ ์คํจํ๊ณ B ์ธ์คํด์ค๋ง ๋ฐฐํฌ๊ฐ ์ฑ๊ณตํ์ ๊ฒฝ์ฐ, A ์ธ์คํด์ค๋ Blue ํ๊ฒฝ์ผ๋ก B ์ธ์คํด์ค๋ Green ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌ๊ฐ ์งํ๋๊ฒ ๋ฉ๋๋ค.
๊ทธ๋์ ๋ฐฐํฌ ๋กค๋ฐฑ์ด ๊ตฌํ๋์ง ์๋๋ค๋ฉด ๋ฒ์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋๋ฒ์งธ๋ A ์ธ์คํด์ค์ B ์ธ์คํด์ค ์์ ์๋ nginx์ ํฌํธ ํฌ์๋ฉ์ด ๋์์ ์ผ์ด๋์ง ์๋๋ค๋ ๋ฌธ์ ์ ๋๋ค.
๊ฐ๊ฐ ์ธ์คํด์ค ์์ nginx๋ localhost๋ก health check๋ฅผ ๋ง์น ํ ํฌํธ ํฌ์๋ฉ์ ํ๋๋ฐ, ์ด ์์ ์ด ๋์ผํ์ง ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฒ์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ๋๊ฐ์ง ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด์๋ Blue ํ๊ฒฝ์์ Green ํ๊ฒฝ์ผ๋ก ๋ณ๊ฒฝํ๋ ์์ ์์ ๋ค๋ฅธ ์ธ์คํด์ค์ health check ๊น์ง ๋ง์น ๋ค์ ์๋ก์ด ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌํด์ผ ํฉ๋๋ค.
์ฆ ๊ฐ ์ธ์คํด์ค๊ฐ ์์ ์ Green ํ๊ฒฝ ๋ฐฐํฌ ์ค๋น๋ฅผ ๋ง์น ํ ๋ค๋ฅธ ์ธ์คํด์ค๋ ์ค๋น๊ฐ ๋๋์ง health check๋ฅผ ํ ํ Green ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌ๋ฅผ ์งํํ๋ ์์ ์ด ํ์ํฉ๋๋ค.
๋ฌผ๋ก ์ด๋ ๊ฒ ํด๋ nginx์ ํฌํธ ํฌ์๋ฉ์ด ๋๋๋ ์์ ์ ์์ ํ ๋์ผํ๊ฒ ๋ง์ถ ์๋ ์์ง๋ง ๊ทธ๋๋ ํฌํธ ํฌ์๋ฉ์ ์์ํ๋ ์์ ์ ๋ง์ถ ์ ์์ต๋๋ค.
ํ์ฌ๋ ์ด ๋ ๊ฐ์ ์ธ์คํด์ค๊ฐ ์์ด ๊ฐ๊ฐ ์๋ก health check๊ฐ ๊ฐ๋ฅํ์ง๋ง ์ค์ผ์ผ ์์์ ์งํํ๊ฒ ๋๋ค๋ฉด ๊ฐ๊ฐ ํ์ธํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ฏ๋ก health check ์ฉ ์๋ฒ๋ฅผ ๋๋ ๊ฒ๋ ๊ณ ๋ คํด๋ณด์์ผ ํฉ๋๋ค.
- ๐ ํ๋ก์ ํธ ์๊ฐ
- ๐ ์ฌ์ฉ์ ์๋๋ฆฌ์ค
- โ๏ธ ๊ธฐ๋ฅ ๋ช ์ธ์
- ๐๏ธ ํ ๊ทธ๋ผ์ด๋ ๋ฃฐ
- ๐ ๏ธ ๊ธฐ์ ์คํ
- ๐ ๋ฐฑ์๋ ์ปจ๋ฒค์
- ๐ฅ๏ธ ๋ก๊น &๋ชจ๋ํฐ๋ง
- ๐ CI&CD
- ๐ DB ๊ถํ ์ค์
- ๐งง ์คํค๋ง
- ๐จ ๋๋ฏธ ๋ฐ์ดํฐ ์ฝ์
- ๐ DB ์ฑ๋ฅ ๊ฐ์ ๊ธฐ
- ๐ DB ์ฟผ๋ฆฌ ๋ฐ ์ธ๋ฑ์ค
- ๐งTPS ๋ฐ ํฐ์บฃ & HikariCP ์ค์
- ๐๋ฌด์ค๋จ ๋ฐฐํฌ
- ๐ก ์ฌ์ฉ์ ์์ ๋ฐ๋ ์ ์ง์ ๊ฐ์ ๋ฐฉ์