• Aiden's Lab แ„‚แ…ฒแ„‰แ…ณแ„…แ…ฆแ„แ…ฅ
  • Posts
  • ๐Ÿ”ญแ„แ…ฅแ†ซแ„แ…ฆแ„‹แ…ตแ„‚แ…ฅ แ„‹แ…ตแ„†แ…ตแ„Œแ…ต, แ„’แ…ญแ„‹แ…ฒแ†ฏแ„‰แ…ฅแ†ผแ„‹แ…ณแ†ฏ แ„‚แ…ฉแ‡แ„‹แ…ตแ„…แ…งแ„†แ…งแ†ซ แ„‹แ…ฅแ„„แ…ฅแ‡‚แ„€แ…ฆ แ„’แ…ขแ„‹แ…ฃ แ„’แ…กแ†ฏแ„แ…ก? - แ„ƒแ…ฅแ„‹แ…ฎแ†จ แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„แ…ฅแ†ซแ„แ…ฆแ„‹แ…ตแ„‚แ…ฅ แ„‹แ…ตแ„†แ…ตแ„Œแ…ต แ„†แ…กแ†ซแ„ƒแ…ณแ„‚แ…ณแ†ซ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ

๐Ÿ”ญแ„แ…ฅแ†ซแ„แ…ฆแ„‹แ…ตแ„‚แ…ฅ แ„‹แ…ตแ„†แ…ตแ„Œแ…ต, แ„’แ…ญแ„‹แ…ฒแ†ฏแ„‰แ…ฅแ†ผแ„‹แ…ณแ†ฏ แ„‚แ…ฉแ‡แ„‹แ…ตแ„…แ…งแ„†แ…งแ†ซ แ„‹แ…ฅแ„„แ…ฅแ‡‚แ„€แ…ฆ แ„’แ…ขแ„‹แ…ฃ แ„’แ…กแ†ฏแ„แ…ก? - แ„ƒแ…ฅแ„‹แ…ฎแ†จ แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„แ…ฅแ†ซแ„แ…ฆแ„‹แ…ตแ„‚แ…ฅ แ„‹แ…ตแ„†แ…ตแ„Œแ…ต แ„†แ…กแ†ซแ„ƒแ…ณแ„‚แ…ณแ†ซ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธ

แ„แ…ฅแ†ซแ„แ…ฆแ„‹แ…ตแ„‚แ…ฅ แ„‹แ…ตแ„†แ…ตแ„Œแ…ตแ„…แ…ณแ†ฏ แ„’แ…ญแ„‹แ…ฒแ†ฏแ„‰แ…ฅแ†ผ แ„€แ…ชแ†ซแ„Œแ…ฅแ†ทแ„‹แ…ฆแ„‰แ…ฅ 'แ„Œแ…กแ†ฏ' แ„†แ…กแ†ซแ„ƒแ…ณแ„‚แ…ณแ†ซ แ„‡แ…กแ†ผแ„‡แ…ฅแ†ธแ„‹แ…ณแ†ฏ แ„‹แ…กแ†ฏแ„‹แ…กแ„‡แ…ฉแ†ธแ„‚แ…ตแ„ƒแ…ก.

๐Ÿ’ซํšจ์œจ์„ฑ ๊ด€์ ์—์„œ ์ž˜ ๋งŒ๋“  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ž€ ๋ฌด์—‡์ผ๊นŒ?

์ง€๋‚œ ๊ธ€์—์„œ ๋ณด์•ˆ ๊ด€์ ์—์„œ ์ž˜ ๋งŒ๋“  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค๋Š”๋ฐ์š”.

์ด๋ฒˆ์—” ํšจ์œจ์ ์ธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ํšจ์œจ์„ฑ ๊ด€์ ์—์„œ ์š”๊ตฌ๋˜๋Š” ์‚ฌํ•ญ์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ํฌ๊ธฐ ๊ฒฝ๋Ÿ‰ํ™”

  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ์ตœ์†Œํ™”

  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ์ตœ์ ํ™”

์ด๋ฏธ์ง€ ํฌ๊ธฐ ๊ฒฝ๋Ÿ‰ํ™”๋Š” ๊ทธ ๋œป์ด ๊ธˆ๋ฐฉ ์ดํ•ด๊ฐ€ ๋˜๋Š”๋ฐ... ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋Š” ๋ญ˜๊นŒ์š”?

์ง€๊ธˆ ๋‚ฏ์„ค๊ฒŒ ๋А๊ปด์ ธ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ด์ œ๋ถ€ํ„ฐ ์ปดํŒฉํŠธํ•˜๊ฒŒ ์งš์–ด๋“œ๋ฆฌ๋Š” ํ•ต์‹ฌ ๋‚ด์šฉ๋งŒ ํ™•์ธํ•˜์‹œ๋ฉด ๊ธˆ๋ฐฉ ๊ฐ์„ ์žก์œผ์‹ค ํ…Œ๋‹ˆ๊นŒ์š”.

๐Ÿ“š์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋ž€?

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ƒํƒœ๊ฐ€ ํ•˜๋‚˜์”ฉ ์Œ“์—ฌ์„œ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ๋น ๋ฅธ ์ดํ•ด๋ฅผ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ Dockerfile ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณผ๊ฒŒ์š”.

FROM golang:1.23
WORKDIR /src
COPY <<EOF /src/main.go
package main

import "fmt"

func main() {
  fmt.Println("hello, world")
}
EOF

RUN go build -o /bin/hello ./main.go

๊ธฐ๋ณธ์ ์ธ Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์ •์˜๋œ Dockerfile์ธ๋ฐ์š”. ์ด๋ ‡๊ฒŒ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  1. ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์˜ ์ดˆ๊ธฐ ์ƒํƒœ

  2. 1๋ฒˆ ์ƒํƒœ ์œ„์— Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ(/src/main.go)๋ฅผ ๋ณต์‚ฌํ•œ ์ƒํƒœ

  3. 2๋ฒˆ ์ƒํƒœ ์œ„์— Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•ด์„œ ๊ฒฐ๊ณผ๋ฌผ์ด ์ƒ์„ฑ๋œ ์ƒํƒœ

์ด๋ ‡๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ๊ฐ์˜ ์ƒํƒœ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ๋Š” ์ฝ๊ธฐ ์ „์šฉ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ ˆ์ด์–ด๊ฐ€ ์Œ“์ด๋Š” ๊ฑด๋ฐ, ์ด๊ฑด ์ฐธ๊ณ ๋งŒ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์œ„์—์„œ ์‚ดํŽด๋ณธ ์ƒํƒœ๋“ค์„ ์ž์„ธํžˆ ๋ณด๋ฉด ํ•œ ๊ฐ€์ง€ ๊ณตํ†ต์ ์ด ์žˆ๋Š”๋ฐ์š”. ๋ฐ”๋กœ FROM, COPY, RUN๊ณผ ๊ฐ™์€ Dockerfile์˜ ์ง€์‹œ์–ด๊ฐ€ ์žˆ๋Š” ๊ณณ์—์„œ ์ƒํƒœ ๋ณ€ํ™”, ์ฆ‰ ๋ ˆ์ด์–ด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋œ ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ์ด์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  1. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์†๋„ ํ–ฅ์ƒ

    • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ ˆ์ด์–ด๋Š” ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    • ๊ทธ๋ž˜์„œ ๋งŒ์•ฝ ์œ„์—์„œ ์‚ดํŽด๋ณธ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๋„๋ก ์ˆ˜์ •๋˜๋”๋ผ๋„, ๊ธฐ์กด ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์˜ ๋ ˆ์ด์–ด๊ฐ€ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋˜์–ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋” ๋นจ๋ฆฌ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  2. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ €์žฅ ๊ณต๊ฐ„ ๊ฐ์†Œ

    • ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ ˆ์ด์–ด๋Š” ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์šฐ๋ฆฌ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ๋•Œ(Pull), ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ ˆ์ด์–ด ์ค‘์— ์ด๋ฏธ ๋กœ์ปฌ์— ์กด์žฌํ•˜๋Š” ๋ ˆ์ด์–ด๋Š” ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์ƒˆ๋กœ ํ•„์š”ํ•œ ๋ ˆ์ด์–ด๋งŒ ๋กœ์ปฌ์— ์ €์žฅํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ข€ ๋” ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์•„๊นŒ ์‚ดํŽด๋ณธ Dockefile ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ Docker build ๋ช…๋ น์–ด๋กœ ์ด๋ฏธ์ง€ ๋นŒ๋“œํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š”๋ฐ์š”.

์Šคํฌ๋ฆฐ์ƒท์— ๋นจ๊ฐ„ ์ƒ์ž๋กœ ํ•˜์ด๋ผ์ดํŠธํ•œ ๋ถ€๋ถ„์„ ๋ณด๋ฉด, ์‹ค์ œ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ ๋ช…์‹œ๋œ ์ง€์‹œ์–ด๋“ค์ด ์‹คํ–‰๋˜๋ฉด์„œ ๊ฐ๊ฐ์˜ ๋ ˆ์ด์–ด๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ ˆ์ด์–ด์— ๋Œ€ํ•ด ํ•ต์‹ฌ ๋‚ด์šฉ๋งŒ ์‚ดํŽด๋ดค๋Š”๋ฐ์š”. ์ด์ œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ํšจ์œจ์„ฑ์„ ์ฑ™๊ธธ ์ˆ˜ ์žˆ๋Š” ํŒ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์งˆ์ ์ธ ๋‚ด์šฉ์œผ๋กœ๋งŒ ๊ตฌ์„ฑํ–ˆ์œผ๋‹ˆ ๊ผญ ํ™•์ธํ•ด๋ณด์„ธ์š”.

โœจ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ํšจ์œจ์„ฑ์„ ์ฑ™๊ธฐ๋Š” ํŒ

1๏ธโƒฃ ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ๊ธฐ๋ฒ• ํ™œ์šฉํ•˜๊ธฐ

ํ•˜๋‚˜์˜ Dockerfile์—์„œ ์—ฌ๋Ÿฌ ๋นŒ๋“œ ๋‹จ๊ณ„๋ฅผ ์ •์˜ํ•˜์—ฌ ์ตœ์ข… ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ด๋Š” ๊ธฐ๋ฒ•์„ ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋งŽ์ด ํ™œ์šฉ๋˜๋Š” ํŒจํ„ด์€, ์ฒซ ๋ฒˆ์งธ ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ๋‚˜ ์˜์กด์„ฑ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์ตœ์ข… ๋‹จ๊ณ„์—์„œ๋Š” ์ตœ์†Œํ•œ์˜ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์œ„์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์— ํ•„์š”ํ•œ ๊ฒฐ๊ณผ๋ฌผ๋งŒ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ฆ‰, ๋นŒ๋“œ์—๋งŒ ํ•„์š”ํ•œ ๋Œ€์šฉ๋Ÿ‰ ํŒจํ‚ค์ง€๋‚˜ ํŒŒ์ผ์ด ์ตœ์ข… ์ด๋ฏธ์ง€์— ํฌํ•จ๋˜์ง€ ์•Š์•„ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ๋Œ€ํญ ๊ฐ์†Œํ•˜๋Š” ๊ฒƒ์ด์ฃ .

์ข€ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก Dockerfile ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๋Š” ์ด๋ฏธ์ง€์— ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•œ ๊ฒƒ์ธ๋ฐ์š”.

์ฒซ ๋ฒˆ์งธ ์Šคํ…Œ์ด์ง€์—์„œ Go ์–ธ์–ด๋กœ ๊ฐœ๋ฐœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ(์ตœ์ข…) ์Šคํ…Œ์ด์ง€์—์„œ ๋˜๋‹ค๋ฅธ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์— ์ด์ „ ์Šคํ…Œ์ด์ง€์—์„œ ๋นŒ๋“œ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ๋ณต์‚ฌํ•˜์—ฌ ์ตœ์ข… ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

# ์ฒซ ๋ฒˆ์งธ ์Šคํ…Œ์ด์ง€: Go ๋ฐ”์ด๋„ˆ๋ฆฌ ๋นŒ๋“œ (์ด๋ฏธ์ง€์— Builder๋ผ๋Š” ์ด๋ฆ„์„ ์ง€์ •)
FROM golang:1.23 AS builder
WORKDIR /src
COPY <<EOF /src/main.go
package main

import "fmt"

func main() {
  fmt.Println("hello, world")
}
EOF

RUN go build -o /bin/hello ./main.go

# ์ตœ์ข… ์Šคํ…Œ์ด์ง€: ์ตœ์†Œ ์ด๋ฏธ์ง€์— ์ด์ „ ์Šคํ…Œ์ด์ง€์—์„œ ๋นŒ๋“œ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ๋ณต์‚ฌ
# (์ด์ „ ์Šคํ…Œ์ด์ง€์—์„œ ์ง€์ •ํ•œ Builder ์ด๋ฏธ์ง€์˜ /bin/hello ๊ฒฝ๋กœ ๋‚ด ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ)
FROM alpine:latest
COPY --from=builder /bin/hello /bin/hello
CMD ["/bin/hello"]

COPY --from๋ผ๋Š” Dockerfile ์ง€์‹œ์–ด๊ฐ€ ๋‚ฏ์„ค ์ˆ˜๋„ ์žˆ๋Š”๋ฐ์š”. ์ œ๊ฐ€ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ „ ์Šคํ…Œ์ด์ง€์˜ ์ด๋ฏธ์ง€(์˜ˆ์ œ์—์„œ๋Š” golang:1.23 ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์œ„์— ๊ตฌ์„ฑ๋œ builder๋ผ๋Š” ์ด๋ฆ„์˜ ์ด๋ฏธ์ง€)์—์„œ Go ๋ฐ”์ด๋„ˆ๋ฆฌ ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ–ˆ์ฃ ?

builder ๋‚ด Go ๋ฐ”์ด๋„ˆ๋ฆฌ ๋นŒ๋“œ์˜ ๊ฒฐ๊ณผ๋ฌผ์ด ๋“ค์–ด์žˆ๋Š” ๊ฒฝ๋กœ(์œ„ ์˜ˆ์ œ์—์„œ๋Š” /bin/hello)์˜ ๋‚ด์šฉ์„ ์ตœ์ข… ์Šคํ…Œ์ด์ง€์˜ alpine:latest ์ด๋ฏธ์ง€ ๋‚ด ๋™์ผํ•œ ์œ„์น˜(/bin/hello)์— ๋ณต์‚ฌ(COPY)ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ตœ์ข… ์ด๋ฏธ์ง€์—๋Š” ์ด์ „ ์Šคํ…Œ์ด์ง€์—์„œ ๋นŒ๋“œํ•œ ๊ฒฐ๊ณผ๋ฌผ๋งŒ ๋ฐ›์•„์˜ค๋Š” ๊ฑฐ์ฃ .

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ์ข… ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉด์„œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋™์ž‘์— ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ œ์™ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ๊ณต๊ฒฉ ํ‘œ๋ฉด๋„ ์ค„์ด๋Š” ํšจ๊ณผ๋„ ๊ฐ™์ด ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํšจ์œจ๊ณผ ๋ณด์•ˆ์„ฑ์„ ๋ชจ๋‘ ์ฑ™๊ธธ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๋• ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ ๊ธฐ๋ฒ•์„ ๊ผญ ๊ณ ๋ คํ•ด๋ด์•ผ๊ฒ ์ฃ ?

2๏ธโƒฃ .dockerignore ํŒŒ์ผ ํ™œ์šฉํ•˜๊ธฐ

.dockerignore ํŒŒ์ผ์€ Docker ๋นŒ๋“œ ์‹œ Docker ๋ฐ๋ชฌ์œผ๋กœ ์ „์†ก๋˜๋Š” ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ(์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋˜๋Š” ํ™˜๊ฒฝ)์—์„œ ์ œ์™ธํ•  ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ์ต์ˆ™ํ•œ .gitignore ํŒŒ์ผ๊ณผ ๋น„์Šทํ•œ ์–‘์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”๋ฐ์š”.

.dockerignore ํŒŒ์ผ๋กœ . git ํด๋”๋‚˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ „์šฉ ํŒŒ์ผ ๋“ฑ ์ด๋ฏธ์ง€ ๋นŒ๋“œ์— ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ์—์„œ ์ œ์™ธ์‹œํ‚ค๋ฉด ๋” ๋น ๋ฅด๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์ฃ .

๋˜ํ•œ ์ตœ์ข… ์ด๋ฏธ์ง€์— ์ตœ์†Œํ•œ์˜ ํ•„์ˆ˜ ๋ฐ์ดํ„ฐ๋งŒ ํฌํ•จ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์ด๋ฏธ์ง€์˜ ๋ณด์•ˆ์„ฑ๋„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ, .dockerignore ํŒŒ์ผ ์—ญ์‹œ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ์ตœ์†Œํ™”

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ์ตœ์†Œํ™”๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋ถˆํ•„์š”ํ•œ ๋ ˆ์ด์–ด๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ ˆ์ด์–ด๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋นŒ๋“œ ์†๋„๋Š” ๋А๋ ค์ง€๊ณ  ์ €์žฅ ๊ณต๊ฐ„์€ ๋Š˜์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ •์˜ํ•˜๋‹ค๋ณด๋ฉด ๋นŒ๋“œ ๊ณผ์ •์—์„œ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” apt-get update ๋ช…๋ น์–ด๋‚˜ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” apt-get install ๋ช…๋ น์–ด, ๋ถˆํ•„์š”ํ•œ ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” rm ๋ช…๋ น์–ด๊นŒ์ง€ ๋ชจ๋‘ Dockerfile์˜ RUN ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ์š”.

์ด๋•Œ ๊ฐ ๋ช…๋ น์–ด๋ฅผ ๋ณ„๋„์˜ RUN ์ง€์‹œ์–ด๋กœ ์‹คํ–‰ํ•˜๋ฉด ๊ทธ๋งŒํผ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋Š” ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ์„ค์น˜ ๊ณผ์ •์— ํ•„์š”ํ•œ ๋ช…๋ น์–ด๋“ค์ด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ๊ฐ์˜ RUN ์ง€์‹œ์–ด๋กœ ์ •์˜๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

RUN apt-get update
RUN apt-get install -y mysql-client
RUN rm -rf /var/lib/apt

๊ทธ๋Ÿฌ๋ฉด ํŒจํ‚ค์ง€ ์„ค์น˜ ๊ณผ์ •์—์„œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๊ฐ€ ์ด 2๊ฐœ ์ƒ์„ฑ๋˜๋Š”๋ฐ์š”.

์ด๋•Œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ์ตœ์†Œํ™”๋ฅผ ์œ„ํ•ด ์ˆœ์„œ๋Œ€๋กœ &&๋กœ ๋ฌถ์–ด ํ•˜๋‚˜์˜ RUN ์ง€์‹œ์–ด ์•ˆ์—์„œ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RUN apt-get update && apt-get install -y mysql-client && rm -rf /var/lib/apt

์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•˜๋ฉด ํŒจํ‚ค์ง€ ์„ค์น˜ ๊ณผ์ •์— ํ•„์š”ํ•œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋ฅผ 1๊ฐœ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์–ด ๋นŒ๋“œ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

4๏ธโƒฃ ์ž์ฃผ ๋ณ€๊ฒฝ๋  ๊ฒƒ ๊ฐ™์€ ์ง€์‹œ์–ด๋Š” Dockerfile ์•„๋ž˜์— ์ •์˜ํ•˜๊ธฐ

์ง€๊ธˆ๊นŒ์ง€ ์•Œ์•„๋ณธ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋นŒ๋“œ ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์ด ํ•œ ๊ฐ€์ง€ ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋กœ Dockerfile์— ์ •์˜ํ•˜๋Š” ์ง€์‹œ์–ด์˜ ์ˆœ์„œ๋ฅผ ์ด๋ฏธ์ง€ ๋นŒ๋“œ์— ์œ ๋ฆฌํ•˜๊ฒŒ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Dockerfile์˜ ์ง€์‹œ์–ด ์ˆœ์„œ์™€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋นŒ๋“œ์™€ ์–ด๋–ค ๊ด€๊ณ„๊ฐ€ ์žˆ๋ƒ๊ณ ์š”? ๋ฐฉ๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ดค๋˜ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณด๋ฉด ๊ธˆ๋ฐฉ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋Š” ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ณผ์ •์—์„œ Dockerfile์˜ ์ง€์‹œ์–ด๋“ค์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค๊ณ  ํ–ˆ์ฃ ? ์ด๊ฑธ ๋ฐ”๊ฟ”์„œ ์ด์•ผ๊ธฐํ•˜๋ฉด, ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ๋ ˆ์ด์–ด๋Š” ์ด์ „ ๋ ˆ์ด์–ด ์œ„์— ์ƒˆ๋กœ์šด ํŒŒ์ผ ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ ์ด๋ฅผ ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

A-B-C-D๋กœ ์ด์–ด์ง€๋Š” ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋ฅผ ๊ฐ€์ง„ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณผ๊ฒŒ์š”.

๋งŒ์•ฝ D ๋ ˆ์ด์–ด์— ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ์ด ์žˆ์–ด ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ๋กœ ๋นŒ๋“œํ•œ๋‹ค๋ฉด, ๊ธฐ์กด์— ๊ฐ€์ง€๊ณ  ์žˆ๋˜ A, B, C ๋ ˆ์ด์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์žฌ์‚ฌ์šฉํ•˜๊ณ  D'๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ ˆ์ด์–ด๋งŒ ์ƒ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋งŒ์•ฝ C ๋ ˆ์ด์–ด์— ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ์ด ์žˆ๋‹ค๋ฉด, ๊ธฐ์กด์˜ A, B ๋ ˆ์ด์–ด๋งŒ ์žฌ์‚ฌ์šฉํ•˜๊ณ  C'์™€ D'๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ž์ฃผ ๋ณ€๊ฒฝ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ ˆ์ด์–ด์˜ ์ง€์‹œ์–ด๋ฅผ ์ตœ๋Œ€ํ•œ Dockerfile์˜ ํ•˜๋‹จ์— ๋‘ฌ์•ผ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๊นŒ '๐Ÿ“š์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋ž€?'์—์„œ ์‚ดํŽด๋ดค๋˜ ์˜ˆ์‹œ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์˜ ์ดˆ๊ธฐ ์ƒํƒœ (FROM)

  2. Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌ (COPY)

  3. Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•ด์„œ ๊ฒฐ๊ณผ๋ฌผ์ด ์ƒ์„ฑ (RUN)

์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€ ๋ ˆ์ด์–ด๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด๋ฏธ์ง€์˜ Dockerfile์— 'Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜'ํ•˜๋Š” ์ง€์‹œ์–ด(RUN)๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณผ๊ฒŒ์š”.

์ƒˆ๋กœ์šด ์ง€์‹œ์–ด๋Š” ์œ„ ์ง€์‹œ์–ด๋“ค ์ค‘ ์–ด๋А ์œ„์น˜์— ๋‘์–ด์•ผ ํ• ๊นŒ์š”?

์•„๋งˆ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ํŒจํ‚ค์ง€๋ณด๋‹ค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๊ฐ€ ๋” ์ž์ฃผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆœ์„œ๋กœ Dockerfile ์ง€์‹œ์–ด๋ฅผ ์ •์˜ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์˜ ์ดˆ๊ธฐ ์ƒํƒœ (FROM)

  2. Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜ (RUN)

  3. Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌ (COPY)

  4. Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•ด์„œ ๊ฒฐ๊ณผ๋ฌผ์ด ์ƒ์„ฑ (RUN)

์œ„ ์ˆœ์„œ๋ผ๋ฉด Go ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ๋กœ ๋นŒ๋“œํ•˜๋”๋ผ๋„ ๊ธฐ์กด 1๋ฒˆ๊ณผ 2๋ฒˆ ๋ ˆ์ด์–ด๋Š” ์žฌ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋นจ๋ฆฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ .

๐Ÿ‘์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ณด์•ˆ๊ณผ ํšจ์œจ์„ฑ์„ ์ฑ™๊ธฐ๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ๋“ค

์ง€๊ธˆ๊นŒ์ง€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ณด์•ˆ์„ฑ๊ณผ ํšจ์œจ์„ฑ์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค๋Š”๋ฐ์š”. ์ด๋ ‡๊ฒŒ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ '์ž˜' ๋งŒ๋“ค๋ฉด ์–ด๋–ค ์ด์ ์ด ์žˆ์„๊นŒ์š”? ์•„๋ž˜์™€ ๊ฐ™์ด 4๊ฐ€์ง€๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ณด์•ˆ ์‚ฌ๊ณ  ๋ฐœ์ƒ ์‹œ ํ”ผํ•ด ๊ฐ์†Œ

    • ๋งŒ์•ฝ ๋ณด์•ˆ ์‚ฌ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„, ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋‚ด์—์„œ์˜ ๊ถŒํ•œ์ด ๋†’์ง€ ์•Š๊ณ  ๊ณต๊ฒฉ ํ‘œ๋ฉด๋„ ์ ๊ธฐ ๋•Œ๋ฌธ์—, ๋ณด์•ˆ ์‚ฌ๊ณ ์˜ ํ”ผํ•ด๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  ๋น ๋ฅธ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

  2. ๋น„์šฉ ์ ˆ๊ฐ ๋ฐ ๋ฐฐํฌ ํšจ์œจ์„ฑ ์ฆ๊ฐ€

    • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ€๋ฒผ์›Œ์ ธ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋˜๊ณ , ์Šคํ† ๋ฆฌ์ง€์™€ ๋„คํŠธ์›Œํฌ ๋น„์šฉ๋„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Auto Scaling์ด ๋  ๋•Œ ์ธ์Šคํ„ด์Šค ๋ถ€ํŒ…๊ณผ ์„œ๋น„์Šค ์ค€๋น„ ์‹œ๊ฐ„์ด ๊ฐ์†Œํ•˜์—ฌ ๋ฐฐํฌ ํšจ์œจ์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ฐœ๋ฐœํŒ€๊ณผ ์šด์˜ํŒ€์˜ ์—…๋ฌด ํšจ์œจ์„ฑ ๊ฐœ์„ 

    • ๊ฐœ๋ฐœํŒ€์€ ๋กœ์ปฌ์—์„œ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ/ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    • ์šด์˜ํŒ€์€ ์ž‘๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ด๋ฏธ์ง€ ๋•๋ถ„์— ๋ฐฐํฌ์™€ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.

  4. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์ธ ์šด์˜ ๊ฐ€๋Šฅ

    • Serverless ํ™˜๊ฒฝ์—์„œ์˜ ์ฝœ๋“œ ์Šคํƒ€ํŠธ ์‹œ๊ฐ„ ๋‹จ์ถ•์— ๋„์›€์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ณ  ๋น„์šฉ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ญ๋งˆ๋ฌด๋ฆฌ

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ ๋“ฑ์„ ๋ฐ˜์˜ํ•œ ์ •๊ธฐ์ ์ธ ์žฌ๋นŒ๋“œ์™€ Dockerfile ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๋Š” ์ด๋ฏธ์ง€ ํ’ˆ์งˆ์„ ๊พธ์ค€ํžˆ ๋†’์ด๋Š” ๋ฐ์— ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ ํด๋ผ์šฐ๋“œ์™€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋Œ€์ค‘ํ™”๋œ ์š”์ฆ˜, ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ์ค‘์š”์„ฑ์€ ์•„๋ฌด๋ฆฌ ๊ฐ•์กฐํ•ด๋„ ๋ถ€์กฑํ•  ํ…๋ฐ์š”.

์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์— ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ํšจ์œจ์„ฑ ๊ด€์ ์—์„œ ๊ฐœ์„ ํ•  ์ ์€ ์—†๋Š”์ง€ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”?

IT ์—…๊ณ„์—์„œ ํšจ์œจ์„ฑ์€ ํ•„์ˆ˜์ธ ๋งŒํผ, ๊ฐœ์ธ์˜ ์„ฑ์žฅ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒ€์˜ ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ๋  ํ…Œ๋‹ˆ๊นŒ์š”!

References

โœจ์ด๋ฒˆ ๋‰ด์Šค๋ ˆํ„ฐ๋Š” ์–ด๋– ์…จ๋‚˜์š”?

์ด๋ฒˆ ๊ธ€์—์„œ ๋‹ค๋ฃฌ ์ฃผ์ œ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”! ๋‰ด์Šค๋ ˆํ„ฐ๋ฅผ ๋” ๋‚˜์€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ํผ์—์„œ ์งง์€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์žˆ์–ด์š”.

๐Ÿ‘‰ ํ”ผ๋“œ๋ฐฑ ๋ณด๋‚ด๊ธฐ (1~2๋ถ„ ์†Œ์š”)

์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ์†Œ์ค‘ํ•œ ์˜๊ฒฌ์— ํ•ญ์ƒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!