๐ณ Inception: ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๊ตฌํ
Inception์ ํ๋์ ์ธ ์น ์๋น์ค๋ฅผ ์ด๋ป๊ฒ ์ค๊ณํ๊ณ ๋ฐฐํฌํ๋ฉฐ ์ด์ํ๋์ง์ ๋ํ ์ํคํ ์ฒ ๊ด์ ์ ์ง๋ฌธ์ ๋์ง๋ค.
์ด ํ๋ก์ ํธ์ ๋ณธ์ง์ ๋จ์ํ Docker ๊ธฐ์ ์ ๋ฐฐ์ฐ๋ ๊ฒ์ ๋์ด, ๊ฐ๊ธฐ ๋ค๋ฅธ ์ญํ ์ ๊ฐ์ง ์ฌ๋ฌ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๋ฅผ ๋ ๋ฆฝ์ ์ธ ์ปจํ ์ด๋(Container)๋ก ๋ถ๋ฆฌํ๊ณ , ์ด๋ค์ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ํ๋์ ์์ฑ๋ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(Microservices Architecture)์ ๊ธฐ๋ณธ ์๋ฆฌ๋ฅผ ์ฒด๋ํ๋ ๊ฒ์ด๋ค.
Inception์ NGINX(์น ์๋ฒ), WordPress(์ ํ๋ฆฌ์ผ์ด์ ), MariaDB(๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ผ๋ ๊ณ ์ ์ ์ธ 3-Tier ์ํคํ ์ฒ๋ฅผ ์ปจํ ์ด๋ ๊ธฐ์ ๋ก ๊ตฌํํ๋ฉฐ, ๊ฐ๋ฐ๊ณผ ์ด์์ ๊ฒฝ๊ณ๋ฅผ ํ๋ฌด๋ DevOps ๋ฌธํ์ ์ฒซ๊ฑธ์์ ๊ฒฝํํ๊ฒ ํ๋, ๋งค์ฐ ์ค์ฉ์ ์ด๊ณ ์ค์ํ ๊ณผ์ ์ด๋ค.
๋ณธ ๊ณผ์ ๋ฅผ ํตํด์, ๊ธฐ๋ณธ์ ์ธ ํ๋ ์๋น์ค๋ค์ ๊ธฐ๋ณธ ๊ณจ์๋ฅผ ์ธ์งํ๊ณ , ๋์๊ฐ์ ์ค์ ๋ผ์ด๋ธ๋ก ์ํ๋๋ ์๋น์ค๋ค์ ์ํ ์ฒญ์ฌ์ง์ ๊ทธ๋ ค๋ณด๋ ์ฐ์ต, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ค์ ๊ณ ์ง์ ์๋ ๋๊ท๋ชจ ์๋น์ค๋ฅผ ์ดํดํ๋๋ฐ ์์ฃผ ์ข์ ์์์ง์ ์ ๋ง๋ค์ด์ฃผ๋ ๊ณผ์ ๋ผ ํ ์ ์๊ฒ ๋ค.
๐ ์ํคํ ์ฒ ์ค๊ณ: ๋ชจ๋๋ฆฌ์์์ ๋ง์ดํฌ๋ก์๋น์ค๋ก
์ ํต์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ๊ธฐ๋ฅ(์น ์๋ฒ, ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ)์ด ํ๋์ ๊ฑฐ๋ํ ์ฝ๋๋ฒ ์ด์ค ์์ ๋ญ์ณ์๋ ๋ชจ๋๋ฆฌ์(Monolithic) ์ํคํ ์ฒ๋ก ๊ตฌ์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. Inception์ ์ด์ ๋ฌ๋ฆฌ ๊ฐ ๊ณ์ธต์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ๋ถ๋ฆฌํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ป๋๋ค.
- ๋์จํ ๊ฒฐํฉ (Loose Coupling): ๊ฐ ์๋น์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ, ๋ฐฐํฌ, ์ ๋ฐ์ดํธ๋ ์ ์๋ค. NGINX์ ์ค์ ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด WordPress ์ฝ๋์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ๊ธฐ์ ์คํ์ ์ ์ฐ์ฑ: ๊ฐ ์๋น์ค๋ ์์ ์ ์ญํ ์ ๊ฐ์ฅ ์ ํฉํ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ ๋ฆฝ์ ์ธ ํ์ฅ์ฑ (Scalability): ํธ๋ํฝ์ด ๋ชฐ๋ฆด ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ทธ๋๋ก ๋๊ณ ์น ์๋ฒ ์ปจํ ์ด๋๋ง ์ฌ๋ฌ ๊ฐ๋ก ๋๋ฆฌ๋ ๋ฑ, ํ์ํ ๋ถ๋ถ๋ง ์ ํ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ฉ์ดํ๋ค.
๐ ๏ธ ํต์ฌ ๊ตฌ์ฑ ์์์ ์ปจํ ์ด๋ํ๋ ์ญํ
Inception ์ํคํ ์ฒ์ ๊ฐ ์๋น์ค๋ ๋ช ํํ๊ฒ ์ ์๋ ์ฑ ์์ ๊ฐ์ง๋ค.
- NGINX (์น ์๋ฒ / ๋ฆฌ๋ฒ์ค ํ๋ก์):
- ์ญํ : ์ ์ฒด ์๋น์ค์ ์ง์ ์ (Entry Point). ์ธ๋ถ์ ๋ชจ๋ HTTPS(443 ํฌํธ) ์์ฒญ์ ๊ฐ์ฅ ๋จผ์ ๋ฐ์ ์ฒ๋ฆฌํ๋ค.
- ํต์ฌ ๊ธฐ๋ฅ:
- TLS ์ข ๋ฃ (TLS Termination): ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ํตํด SSL/TLS ์ํธํ๋ฅผ ์ฒ๋ฆฌํ๋ค. ํด๋ผ์ด์ธํธ์ NGINX ์ฌ์ด์ ํธ๋ํฝ์ ์ํธํ๋์ง๋ง, NGINX์ ๋ด๋ถ WordPress ์๋ฒ ๊ฐ์ ํต์ ์ ์ํธํ๋์ง ์์ ์ํ๋ก ์ด๋ฃจ์ด์ ธ ๋ด๋ถ ๋คํธ์ํฌ์ ๋ถํ๋ฅผ ์ค์ธ๋ค.
- ๋ฆฌ๋ฒ์ค ํ๋ก์ (Reverse Proxy): ์ ์ ์ฝํ
์ธ (HTML, CSS, ์ด๋ฏธ์ง) ์์ฒญ์ ์ง์ ์ฒ๋ฆฌํ๊ณ , ๋์ ์ธ PHP ์คํฌ๋ฆฝํธ ์คํ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ด๋ถ ๋คํธ์ํฌ์ WordPress ์ปจํ
์ด๋(
wordpress:9000)๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ๋ด๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ์กด์ฌ๋ฅผ ์ ํ์ ์์ด NGINX์๋ง ํต์ ํ๊ฒ ๋๋ค.
- WordPress (์ ํ๋ฆฌ์ผ์ด์
์๋ฒ):
- ์ญํ : ์ค์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ํํ๋ค.
- ํต์ฌ ๊ธฐ๋ฅ:
- PHP-FPM (FastCGI Process Manager): NGINX๋ก๋ถํฐ FastCGI ํ๋กํ ์ฝ์ ํตํด ์ ๋ฌ๋ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ฌ ๋์ ์ธ ์น ํ์ด์ง๋ฅผ ์์ฑํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋: ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ MariaDB ์ปจํ ์ด๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์กฐํํ๋ค. ์ด ์ํคํ ์ฒ์์ WordPress ์์ฒด๋ ์ํ๋ฅผ ์ ์ฅํ์ง ์๋ ์ํ ๋น์ ์ฅ(Stateless) ์๋ฒ๋ก ๋์ํ๋ฉฐ, ๋ชจ๋ ์๊ตฌ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ํ๋ค.
- MariaDB (๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ):
- ์ญํ : ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ์ํ ์ ์ฅ(Stateful) ์ปดํฌ๋ํธ์ด๋ค. WordPress์ ๊ฒ์๊ธ, ์ฌ์ฉ์ ์ ๋ณด, ์ค์ ๋ฑ์ด ๋ชจ๋ ์ด๊ณณ์ ์ ์ฅ๋๋ค.
๐ Docker๋ฅผ ์ด์ฉํ ์ธํ๋ผ ๊ตฌ์ถ ๋ฐ ๊ด๋ฆฌ
์ด๋ฌํ ์ํคํ ์ฒ๋ Docker์ ํต์ฌ ๋๊ตฌ๋ค์ ํตํด ์ฝ๋๋ก ์ ์๋๊ณ ๊ด๋ฆฌ๋๋ค.
-
Dockerfile: ์๋น์ค์ ์ฒญ์ฌ์ง (Infrastructure as Code)
Dockerfile์ ๊ฐ ์๋น์ค(NGINX, WordPress, MariaDB)๋ฅผ ์ํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ด๋ป๊ฒ ๋น๋ํ ์ง ์ ์ํ๋ ์คํฌ๋ฆฝํธ์ด๋ค. ๊ธฐ๋ณธ OS ์ด๋ฏธ์ง(debian:bullseye) ์์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๊ณ , ์ค์ ํ์ผ์ ๋ณต์ฌํ๋ฉฐ, ์คํ ๋ช ๋ น์ ์ง์ ํ๋ ๋ชจ๋ ๊ณผ์ ์ด ์ฝ๋๋ก ๋ช ์๋๋ค. ์ด๋ ์๋ ์ค์ ์ ์ค๋ฅ๋ฅผ ์์ ๊ณ , ์ธ์ ์ด๋์๋ ๋์ผํ ํ๊ฒฝ์ ์ฌํํ ์ ์๊ฒ ํ๋ ์ธํ๋ผ ์ฝ๋ํ(Infrastructure as Code, IaC)์ ํต์ฌ ์ค์ฒ๋ฒ์ด๋ค. -
Docker Compose: ๋ค์ค ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์
docker-compose.ymlํ์ผ์ ์ด ๋ชจ๋ ์๋น์ค์ ๊ทธ๋ค์ ๊ด๊ณ๋ฅผ ์ ์ธ์ (Declarative)์ผ๋ก ์ ์ํ๋ ๋ช ์ธ์์ด๋ค.services,networks,volumesํค์๋๋ฅผ ํตํด ์ฌ๋ฌ ์ปจํ ์ด๋๋ก ๊ตฌ์ฑ๋ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํคํ ์ฒ๋ฅผ ์ ์ํ๋ค.docker-compose up๋ช ๋ น์ด ํ๋๋ก ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ , ๋คํธ์ํฌ๋ฅผ ์ค์ ํ๋ฉฐ, ๋ณผ๋ฅจ์ ์ฐ๊ฒฐํ๋ ์ ์ฒด ์คํ์ ์คํํ ์ ์๋ค.depends_on์ต์ ์ ์๋น์ค ๊ฐ์ ์์กด์ฑ์ ์ ์ํ์ฌ ์คํ ์์๋ฅผ ์ ์ดํ๋ค. ์ด ๋ถ๋ถ์์ Dockerfile ๊ณผ์ ์ญํ ์ ๋ํด ๋ช ํํ ์ดํด๋๊ฐ ์์ผ๋ฉด, ๊ผฌ์ด๊ฑฐ๋, ๋ช ๋ น์ด๋ฅผ ๋ฎ์ด์์ Dockerfile ์ ๋ ์ด์ด ๊ตฌ์ฑ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค. -
Docker Volumes: ๋ฐ์ดํฐ ์์์ฑ ๋ณด์ฅ ์ปจํ ์ด๋๋ ์ญ์ ์ ์์ฑ์ ๋ฐ๋ณตํ ์ ์๋ ์ผ์์ ์ธ(Ephemeral) ์กด์ฌ์ด๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ์ ๊ฐ์ ์ค์ ์ ๋ณด๋ ์๊ตฌ์ ์ผ๋ก ๋ณด์กด๋์ด์ผ ํ๋ค. Docker ๋ณผ๋ฅจ์ ํธ์คํธ ๋จธ์ ์ ํ์ผ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ด๋ฅผ ์ปจํ ์ด๋ ๋ด๋ถ์ ํน์ ๊ฒฝ๋ก์ ๋ง์ดํธํ๋ ๊ธฐ์ ์ด๋ค. ๋จ, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณผ๋ฅจ์ ์์์ ์ ์ฅ์๋ก ์ค์ ๋๊ณ , ๋น์ฐํ ์ปจํ ์ด๋๊ฐ ์ฌ๋ผ์ง๊ฑฐ๋ ํ๋ฉด ์ ์ฅ๋์ง ๋ชปํ๋ค. ์ด๋ฅผ ์์ ํ์ฌ ๋ณผ๋ฅจ์ ์ธ๋ถ๋ก ๋ง๋ค์ด ์ด๋ฅผ ํตํด ์ปจํ ์ด๋๊ฐ ์ญ์ ๋๋๋ผ๋ ๋ฐ์ดํฐ๋ ํธ์คํธ์ ์์ ํ๊ฒ ๋จ์, ๋ฐ์ดํฐ์ ์์์ฑ(Persistence)์ ๋ณด์ฅํด์ค๋ค.
-
Docker Networks: ์๋น์ค ๊ฐ ํต์ ๊ณผ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ
docker-compose๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์ํ ๊ฒฉ๋ฆฌ๋ ๋ธ๋ฆฌ์ง ๋คํธ์ํฌ(Bridge Network)๋ฅผ ์์ฑํ๋ค. ์ด ๊ฐ์ ๋คํธ์ํฌ ๋ด์์, ๊ฐ ์ปจํ ์ด๋๋ ์์ ์ ์๋น์ค ์ด๋ฆ(์:nginx,wordpress,mariadb)์ ํธ์คํธ ์ด๋ฆ์ฒ๋ผ ์ฌ์ฉํ์ฌ ์๋ก ํต์ ํ ์ ์๋ค. WordPress ์ค์ ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์คํธ๋ฅผlocalhost๊ฐ ์๋mariadb๋ก ์ง์ ํ ์ ์๋ ์ด์ ๊ฐ ๋ฐ๋ก ์ด๊ฒ์ด๋ค. ์ด๋ Docker๊ฐ ์ ๊ณตํ๋ ๋ด์ฅ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ(Service Discovery) ๊ธฐ๋ฅ ๋๋ถ์ด๋ค. ๋์ปค ๋คํธ์ํฌ์ ๊ตฌ์ฑ์ ๋งค์ฐ ์ค์ํ๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์์ ํต์ ์์ฒด๋ฅผ ์ํด์๋๊ฒ ์ง๋ง, ๋์์ ๋ณด์์ ์ํด์๋ ํ์ํ ์กฐ์น๋ค.
โจ ์ฑ์ฐฐ ๋ฐ ๋ฐฐ์ด ์
Inception์ Docker ๋ฅผ ๋ฐฐ์ฐ๋ ๊ฒ ์ด์์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค. ์ค์ ๋ก๋ ๋จ์ํ ์ฟก๋ถ์ ๋์์๋ ๋ช ๋ น์ด๋ฅผ ๋จ์ํ ์ณ์ ํด๊ฒฐ๋๋ ๋ฌธ์ ๊ฐ ์๋๋ค.
- ์ฝ๋์์ ์ธํ๋ผ๋ก์ ๊ด์ ํ์ฅ: ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ, ๊ทธ ์ฝ๋๊ฐ ๋์ํ ์ธํ๋ผ๋ฅผ ์ง์ ์ค๊ณํ๊ณ ์ฝ๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ๊น์ง ํฌํจํจ์ ๊นจ๋ฌ์๋ค.
- ๋ถ๋ณ ์ธํ๋ผ (Immutable Infrastructure): ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์คํ ์ค์ธ ์ปจํ
์ด๋์ ์ ์ํด ์์ ํ๋ ๊ฒ์ด ์๋๋ผ,
Dockerfile์ ์์ ํ๊ณ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ฌ ์ปจํ ์ด๋๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ์์, ๋ ์์ธก ๊ฐ๋ฅํ๊ณ ์์ ์ ์ธ ์์คํ ์ ๋ง๋๋ โ๋ถ๋ณ ์ธํ๋ผโ ๊ฐ๋ ์ ์ค์์ฑ์ ๊ฐ๋ฅด์ณ ์ค๋ค. - DevOps์ ์ฒซ๊ฑธ์: ๊ฐ๋ฐ(Dockerfile, ์์ค์ฝ๋)๊ณผ ์ด์(docker-compose.yml, ๋คํธ์ํฌ, ๋ณผ๋ฅจ)์ด ๋ถ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ, ํ๋์
docker-compose์ํฌํ๋ก์ฐ ์์์ ํตํฉ๋๋ ๊ณผ์ ์ ํตํด DevOps ๋ฌธํ์ ํต์ฌ ์ฒ ํ์ ์ค์ง์ ์ผ๋ก ๊ฒฝํํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก Inception์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๊ฒฌ๊ณ ํ ์ํคํ ์ฒ ์์์ ์ค์ ์๋น์ค๋ก ๊ตฌํ๋๊ณ ์ด์๋๋์ง์ ๋ํ ์ ์ฒด์ ์ธ ์์ผ๋ฅผ ์ ๊ณตํ๋, ๋งค์ฐ ๊ฐ์น ์๋ ํ๋ก์ ํธ๋ค. ํด๋น ํ๋ก์ ํธ ์ดํ ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ๋ค, ๊ทธ๋ฆฌ๊ณ ํ์ดํ๋ผ์ด๋ ํ๋ ๊ฐ๊ฐ์ ์ค์ ๋ผ์ด๋ธ ์๋น์ค์์ ๋ฌด์ค๋จ ๋ฐฐํฌ, Blue, Green ์ ํจํด์ ํ์ฉํ๋ ์นด๋๋ฆฌ์์ ๋น๋, ๊ทธ๋ฆฌ๊ณ ์ ์ผ ์ ์ฉํ๋ค๊ณ ํ ์ ์๋ ์ด๋ฏธ์ง ์ฐจ์์์์ ํ๋ก๊ทธ๋จ ํ๊ฒฝ ๋ฐฐํฌ๋ฅผ ๊ฐ๋ฅ์ผ ํ๋๋ฐ, ์ด ํ๋ก์ ํธ๋ ๊ทธ๋ฌํ ์ ์ ์์ฃผ ์ ์ด๋ฆฐ ์์์ ์ด ๋๋ ํ๋ก์ ํธ์๋ค๊ณ ์๊ฐํ๋ค.
