๐Ÿณ Inception: ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ๊ตฌํ˜„

Inception์€ ํ˜„๋Œ€์ ์ธ ์›น ์„œ๋น„์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ  ๋ฐฐํฌํ•˜๋ฉฐ ์šด์˜ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์•„ํ‚คํ…์ฒ˜ ๊ด€์ ์˜ ์งˆ๋ฌธ์„ ๋˜์ง„๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์˜ ๋ณธ์งˆ์€ ๋‹จ์ˆœํžˆ Docker ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ๋„˜์–ด, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์—ญํ• ์„ ๊ฐ€์ง„ ์—ฌ๋Ÿฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋…๋ฆฝ์ ์ธ ์ปจํ…Œ์ด๋„ˆ(Container)๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ์ด๋“ค์„ ์œ ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ์™„์„ฑ๋œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(Microservices Architecture)์˜ ๊ธฐ๋ณธ ์›๋ฆฌ๋ฅผ ์ฒด๋“ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Inception์€ NGINX(์›น ์„œ๋ฒ„), WordPress(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜), MariaDB(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๋ผ๋Š” ๊ณ ์ „์ ์ธ 3-Tier ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ๋กœ ๊ตฌํ˜„ํ•˜๋ฉฐ, ๊ฐœ๋ฐœ๊ณผ ์šด์˜์˜ ๊ฒฝ๊ณ„๋ฅผ ํ—ˆ๋ฌด๋Š” DevOps ๋ฌธํ™”์˜ ์ฒซ๊ฑธ์Œ์„ ๊ฒฝํ—˜ํ•˜๊ฒŒ ํ•˜๋Š”, ๋งค์šฐ ์‹ค์šฉ์ ์ด๊ณ  ์ค‘์š”ํ•œ ๊ณผ์ œ์ด๋‹ค.

๋ณธ ๊ณผ์ œ๋ฅผ ํ†ตํ•ด์„œ, ๊ธฐ๋ณธ์ ์ธ ํ˜„๋Œ€ ์„œ๋น„์Šค๋“ค์˜ ๊ธฐ๋ณธ ๊ณจ์ž๋ฅผ ์ธ์ง€ํ•˜๊ณ , ๋‚˜์•„๊ฐ€์„  ์‹ค์ œ ๋ผ์ด๋ธŒ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์„œ๋น„์Šค๋“ค์„ ์œ„ํ•œ ์ฒญ์‚ฌ์ง„์„ ๊ทธ๋ ค๋ณด๋Š” ์—ฐ์Šต, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹ค์Œ ๊ณ ์ง€์— ์žˆ๋Š” ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์•„์ฃผ ์ข‹์€ ์‹œ์ž‘์ง€์ ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ณผ์ œ๋ผ ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.


๐Ÿ“œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„: ๋ชจ๋†€๋ฆฌ์‹์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ

์ „ํ†ต์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋“  ๊ธฐ๋Šฅ(์›น ์„œ๋ฒ„, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ)์ด ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค ์•ˆ์— ๋ญ‰์ณ์žˆ๋Š” ๋ชจ๋†€๋ฆฌ์‹(Monolithic) ์•„ํ‚คํ…์ฒ˜๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. Inception์€ ์ด์™€ ๋‹ฌ๋ฆฌ ๊ฐ ๊ณ„์ธต์„ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์–ป๋Š”๋‹ค.

  • ๋А์Šจํ•œ ๊ฒฐํ•ฉ (Loose Coupling): ๊ฐ ์„œ๋น„์Šค๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ, ๋ฐฐํฌ, ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ๋‹ค. NGINX์˜ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด WordPress ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
  • ๊ธฐ์ˆ  ์Šคํƒ์˜ ์œ ์—ฐ์„ฑ: ๊ฐ ์„œ๋น„์Šค๋Š” ์ž์‹ ์˜ ์—ญํ• ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋…๋ฆฝ์ ์ธ ํ™•์žฅ์„ฑ (Scalability): ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆด ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์›น ์„œ๋ฒ„ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋Š˜๋ฆฌ๋Š” ๋“ฑ, ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์„ ํƒ์ ์œผ๋กœ ํ™•์žฅํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

๐Ÿ› ๏ธ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์—ญํ• 

Inception ์•„ํ‚คํ…์ฒ˜์˜ ๊ฐ ์„œ๋น„์Šค๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ์ฑ…์ž„์„ ๊ฐ€์ง„๋‹ค.

  1. NGINX (์›น ์„œ๋ฒ„ / ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ):
    • ์—ญํ• : ์ „์ฒด ์„œ๋น„์Šค์˜ ์ง„์ž…์ (Entry Point). ์™ธ๋ถ€์˜ ๋ชจ๋“  HTTPS(443 ํฌํŠธ) ์š”์ฒญ์„ ๊ฐ€์žฅ ๋จผ์ € ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • ํ•ต์‹ฌ ๊ธฐ๋Šฅ:
      • TLS ์ข…๋ฃŒ (TLS Termination): ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด SSL/TLS ์•”ํ˜ธํ™”๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ NGINX ์‚ฌ์ด์˜ ํŠธ๋ž˜ํ”ฝ์€ ์•”ํ˜ธํ™”๋˜์ง€๋งŒ, NGINX์™€ ๋‚ด๋ถ€ WordPress ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ด๋ฃจ์–ด์ ธ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ธ๋‹ค.
      • ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ (Reverse Proxy): ์ •์  ์ฝ˜ํ…์ธ (HTML, CSS, ์ด๋ฏธ์ง€) ์š”์ฒญ์€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋™์ ์ธ PHP ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์˜ WordPress ์ปจํ…Œ์ด๋„ˆ(wordpress:9000)๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ ์กด์žฌ๋ฅผ ์•Œ ํ•„์š” ์—†์ด NGINX์™€๋งŒ ํ†ต์‹ ํ•˜๊ฒŒ ๋œ๋‹ค.
  2. WordPress (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„):
    • ์—ญํ• : ์‹ค์ œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • ํ•ต์‹ฌ ๊ธฐ๋Šฅ:
      • PHP-FPM (FastCGI Process Manager): NGINX๋กœ๋ถ€ํ„ฐ FastCGI ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™: ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ MariaDB ์ปจํ…Œ์ด๋„ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•œ๋‹ค. ์ด ์•„ํ‚คํ…์ฒ˜์—์„œ WordPress ์ž์ฒด๋Š” ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ ๋น„์ €์žฅ(Stateless) ์„œ๋ฒ„๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๋ชจ๋“  ์˜๊ตฌ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์œ„์ž„ํ•œ๋‹ค.
  3. MariaDB (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„):
    • ์—ญํ• : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ƒํƒœ ์ €์žฅ(Stateful) ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. WordPress์˜ ๊ฒŒ์‹œ๊ธ€, ์‚ฌ์šฉ์ž ์ •๋ณด, ์„ค์ • ๋“ฑ์ด ๋ชจ๋‘ ์ด๊ณณ์— ์ €์žฅ๋œ๋‹ค.

๐Ÿš€ Docker๋ฅผ ์ด์šฉํ•œ ์ธํ”„๋ผ ๊ตฌ์ถ• ๋ฐ ๊ด€๋ฆฌ

์ด๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜๋Š” Docker์˜ ํ•ต์‹ฌ ๋„๊ตฌ๋“ค์„ ํ†ตํ•ด ์ฝ”๋“œ๋กœ ์ •์˜๋˜๊ณ  ๊ด€๋ฆฌ๋œ๋‹ค.

  1. Dockerfile: ์„œ๋น„์Šค์˜ ์ฒญ์‚ฌ์ง„ (Infrastructure as Code) Dockerfile์€ ๊ฐ ์„œ๋น„์Šค(NGINX, WordPress, MariaDB)๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๋นŒ๋“œํ• ์ง€ ์ •์˜ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ด๋‹ค. ๊ธฐ๋ณธ OS ์ด๋ฏธ์ง€(debian:bullseye) ์œ„์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ , ์„ค์ • ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋ฉฐ, ์‹คํ–‰ ๋ช…๋ น์„ ์ง€์ •ํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ •์ด ์ฝ”๋“œ๋กœ ๋ช…์‹œ๋œ๋‹ค. ์ด๋Š” ์ˆ˜๋™ ์„ค์ •์˜ ์˜ค๋ฅ˜๋ฅผ ์—†์• ๊ณ , ์–ธ์ œ ์–ด๋””์„œ๋“  ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ธํ”„๋ผ ์ฝ”๋“œํ™”(Infrastructure as Code, IaC)์˜ ํ•ต์‹ฌ ์‹ค์ฒœ๋ฒ•์ด๋‹ค.

  2. Docker Compose: ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ docker-compose.yml ํŒŒ์ผ์€ ์ด ๋ชจ๋“  ์„œ๋น„์Šค์™€ ๊ทธ๋“ค์˜ ๊ด€๊ณ„๋ฅผ ์„ ์–ธ์ (Declarative)์œผ๋กœ ์ •์˜ํ•˜๋Š” ๋ช…์„ธ์„œ์ด๋‹ค. services, networks, volumes ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ์„ฑ๋œ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ •์˜ํ•œ๋‹ค. docker-compose up ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋„คํŠธ์›Œํฌ๋ฅผ ์„ค์ •ํ•˜๋ฉฐ, ๋ณผ๋ฅจ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ „์ฒด ์Šคํƒ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. depends_on ์˜ต์…˜์€ ์„œ๋น„์Šค ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ •์˜ํ•˜์—ฌ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•œ๋‹ค. ์ด ๋ถ€๋ถ„์—์„œ Dockerfile ๊ณผ์˜ ์—ญํ• ์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•œ ์ดํ•ด๋„๊ฐ€ ์—†์œผ๋ฉด, ๊ผฌ์ด๊ฑฐ๋‚˜, ๋ช…๋ น์–ด๋ฅผ ๋ฎ์–ด์”Œ์›Œ Dockerfile ์˜ ๋ ˆ์ด์–ด ๊ตฌ์„ฑ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  3. Docker Volumes: ๋ฐ์ดํ„ฐ ์˜์†์„ฑ ๋ณด์žฅ ์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ญ์ œ์™€ ์ƒ์„ฑ์„ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์‹œ์ ์ธ(Ephemeral) ์กด์žฌ์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ์ค‘์š” ์ •๋ณด๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ณด์กด๋˜์–ด์•ผ ํ•œ๋‹ค. Docker ๋ณผ๋ฅจ์€ ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ์ด๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ํŠน์ • ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋‹จ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณผ๋ฅจ์€ ์ž„์‹œ์  ์ €์žฅ์†Œ๋กœ ์„ค์ •๋˜๊ณ , ๋‹น์—ฐํžˆ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜ ํ•˜๋ฉด ์ €์žฅ๋˜์ง€ ๋ชปํ•œ๋‹ค. ์ด๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ณผ๋ฅจ์„ ์™ธ๋ถ€๋กœ ๋งŒ๋“ค์–ด ์ด๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋Š” ํ˜ธ์ŠคํŠธ์— ์•ˆ์ „ํ•˜๊ฒŒ ๋‚จ์•„, ๋ฐ์ดํ„ฐ์˜ ์˜์†์„ฑ(Persistence)์„ ๋ณด์žฅํ•ด์ค€๋‹ค.

  4. 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 ์˜ ํŒจํ„ด์„ ํ™œ์šฉํ•˜๋Š” ์นด๋‚˜๋ฆฌ์•„์‹ ๋นŒ๋“œ, ๊ทธ๋ฆฌ๊ณ  ์ œ์ผ ์œ ์šฉํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€ ์ฐจ์›์—์„œ์˜ ํ”„๋กœ๊ทธ๋žจ ํ™˜๊ฒฝ ๋ฐฐํฌ๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•˜๋Š”๋ฐ, ์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ทธ๋Ÿฌํ•œ ์ ์„ ์•„์ฃผ ์ž˜ ์‚ด๋ฆฐ ์‹œ์ž‘์ ์ด ๋˜๋Š” ํ”„๋กœ์ ํŠธ์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.