ยท11 min read

๐Ÿš€ Simploy: ๋ฐฐํฌ๊ฐ€ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ ?

๋ณต์žกํ•œ ๋ฐฐํฌ ๊ณผ์ •์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์—์„œ ๋งŒ๋“  ์ดˆ๊ฐ„๋‹จ CI/CD ๋ฐฐํฌ ๋„๊ตฌ Simploy๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

#Simploy#CI/CD#๋ฐฐํฌ

ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š” :โ˜)

ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š” :โ˜)

๋ฐฐํฌ, ์™œ ์ด๋ ‡๊ฒŒ ๋ณต์žกํ•œ๊ฐ€?#

๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•œ ๋ฒˆ์ฏค ๊ฒช์–ด๋ดค์„ ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์™„์„ฑํ–ˆ๋Š”๋ฐ ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์„œ ๋ง‰๋ง‰ํ•œ ์ˆœ๊ฐ„ ๋ง์ด์—์š”. ํŠนํžˆ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋‚˜ ์†Œ๊ทœ๋ชจ ํŒ€์—์„œ ์ผํ•  ๋•Œ๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

๋Œ€ํ˜• CI/CD ๋„๊ตฌ๋“ค์€ ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•˜์ง€๋งŒ ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ๋ฌด๊ฒ์Šต๋‹ˆ๋‹ค. Jenkins๋Š” ์„ค์น˜๋ถ€ํ„ฐ ์„ค์ •๊นŒ์ง€ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ , GitHub Actions๋Š” private repository์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. GitLab CI๋Š” ์ข‹์ง€๋งŒ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—๋Š” ๊ณผํ•œ ๋А๋‚Œ์ด์ฃ .

๊ทธ๋ ‡๋‹ค๊ณ  ๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ ํŒŒ์ผ์„ ์ „์†กํ•˜๊ณ  ์„œ๋ฒ„์— ์ ‘์†ํ•ด์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋„ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ์ž˜๋ชป๋œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์„ ๋นผ๋จน๋Š” ๊ฒฝ์šฐ๋„ ์ข…์ข… ๋ฐœ์ƒํ•˜์ฃ .

์ด๋Ÿฐ ๊ณ ๋ฏผ ๋์— ์ €๋Š” Simploy๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "Simple Deploy"์˜ ์ค„์ž„๋ง๋กœ, ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐ„๋‹จํ•œ ๋ฐฐํฌ๋ฅผ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

Simploy๋ž€ ๋ฌด์—‡์ธ๊ฐ€?#

Simploy๋Š” ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋‚˜ ์†Œ๊ทœ๋ชจ ํŒ€์„ ์œ„ํ•œ ์ดˆ๊ฐ„๋‹จ CI/CD ๋ฐฐํฌ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์„ค์ • ์—†์ด SSH๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์„œ๋ฒ„์— ํŒŒ์ผ์„ ์ „์†กํ•˜๊ณ  ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ถ„๋ฆฌ์™€ ๋น„๋ฐ€ ์ •๋ณด ๊ด€๋ฆฌ๋„ ์ง€์›ํ•˜๋ฉด์„œ, ์ •๋ง ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋‹ด์•˜์Šต๋‹ˆ๋‹ค.

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

Simploy์˜ ์ฃผ์š” ํŠน์ง•#

1. ๊ทน๋„๋กœ ๊ฐ„๋‹จํ•œ ์„ค์ •#

Simploy์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์„ค์ •์˜ ๋‹จ์ˆœํ•จ์ž…๋‹ˆ๋‹ค. JSON ํ˜•ํƒœ์˜ ์„ค์ • ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์„œ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ YAML ๋ฌธ๋ฒ•์ด๋‚˜ ํŠน๋ณ„ํ•œ DSL์„ ๋ฐฐ์šธ ํ•„์š”๊ฐ€ ์—†์ฃ .

{
  "environments": {
    "dev": {
      "servers": [
        {
          "name": "web",
          "ssh": {
            "host": "${DEV_WEB_HOST}",
            "port": 22,
            "user": "${DEV_WEB_USER}",
            "password": "${DEV_WEB_PASSWORD}"
          },
          "localPath": ".",
          "remotePath": "/home/ubuntu/app",
          "transferIgnores": ["node_modules", ".git", ".env"],
          "shell": [
            "cd /home/ubuntu/app",
            "npm ci",
            "npm start"
          ]
        }
      ]
    }
  }
}

์ด ์„ค์ •๋งŒ ๋ด๋„ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ์˜ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„œ๋ฒ„์˜ ํŠน์ • ๊ฒฝ๋กœ๋กœ ์ „์†กํ•˜๊ณ , ๊ทธ ํ›„์— ํ•„์š”ํ•œ ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

2. ํ™˜๊ฒฝ ๋ถ„๋ฆฌ์™€ ๋‹ค์ค‘ ์„œ๋ฒ„ ์ง€์›#

์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐœ๋ฐœ, ์Šคํ…Œ์ด์ง•, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. Simploy๋Š” ์ด๋Ÿฐ ํ™˜๊ฒฝ ๋ถ„๋ฆฌ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

{
  "environments": {
    "dev": {
      "servers": [...]
    },
    "staging": {
      "servers": [...]
    },
    "production": {
      "servers": [...]
    }
  }
}

๊ฐ ํ™˜๊ฒฝ๋งˆ๋‹ค ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์„œ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„์— ๋™์‹œ์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์›น ์„œ๋ฒ„ ์—ฌ๋Ÿฌ ๋Œ€์— ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ณด์•ˆ์„ ๊ณ ๋ คํ•œ ๋น„๋ฐ€ ์ •๋ณด ๊ด€๋ฆฌ#

๊ฐœ๋ฐœํ•  ๋•Œ ๊ฐ€์žฅ ์‹ ๊ฒฝ ์“ฐ์ด๋Š” ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋น„๋ฐ€ ์ •๋ณด ๊ด€๋ฆฌ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋น„๋ฐ€๋ฒˆํ˜ธ, API ํ‚ค, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์† ์ •๋ณด ๋“ฑ์„ ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉํ•  ์ˆ˜๋Š” ์—†์œผ๋‹ˆ๊นŒ์š”.

Simploy๋Š” ์ด ๋ฌธ์ œ๋ฅผ simploy.private.json ํŒŒ์ผ๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์— ๋ชจ๋“  ๋น„๋ฐ€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋ฉด, ์ž๋™์œผ๋กœ .gitignore์— ์ถ”๊ฐ€๋˜์–ด์„œ Git ์ €์žฅ์†Œ์— ์‹ค์ˆ˜๋กœ ์ปค๋ฐ‹๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

{
  "DEV_WEB_HOST": "your.dev.server.com",
  "DEV_WEB_USER": "ubuntu",
  "DEV_WEB_PASSWORD": "your-secure-password",
  "PROD_DB_PASSWORD": "super-secret-password"
}

์„ค์ • ํŒŒ์ผ์—์„œ๋Š” $ ํ˜•ํƒœ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด์„œ, ๋น„๋ฐ€ ์ •๋ณด์™€ ์ผ๋ฐ˜ ์„ค์ •์„ ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ npx ์ง€์›#

์š”์ฆ˜ ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ๋ฅผ ๋ณด๋ฉด ์ „์—ญ ์„ค์น˜๋ฅผ ํ”ผํ•˜๊ณ  npx๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. Simploy๋„ ์ด๋Ÿฐ ํŠธ๋ Œ๋“œ๋ฅผ ๋ฐ˜์˜ํ•ด์„œ npx๋ฅผ ํ†ตํ•œ ์ฆ‰์‹œ ์‚ฌ์šฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

# ์ „์—ญ ์„ค์น˜
pnpm add -g simploy
simploy init
simploy deploy --env dev
 
# ๋˜๋Š” npx๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉ
npx simploy init
npx simploy deploy --env dev

์ „์—ญ ์„ค์น˜ ์—†์ด๋„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ, ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ์Šค๋งˆํŠธํ•œ ํŒŒ์ผ ์ „์†ก#

Simploy๋Š” ํŒŒ์ผ ์ „์†ก ์‹œ ์—ฌ๋Ÿฌ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. transferIgnores ์˜ต์…˜์œผ๋กœ ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ์ œ์™ธํ•  ์ˆ˜ ์žˆ๊ณ , remoteIgnoresWhenClean ์˜ต์…˜์œผ๋กœ ์„œ๋ฒ„์—์„œ ์‚ญ์ œํ•˜์ง€ ์•Š์„ ํŒŒ์ผ๋“ค์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "transferIgnores": ["node_modules", ".git", ".env", "*.log"],
  "remoteIgnoresWhenClean": [".env", "uploads/"]
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ์ „์†กํ•ด์„œ ์†๋„๋ฅผ ๋†’์ด๊ณ , ์„œ๋ฒ„์˜ ์ค‘์š”ํ•œ ํŒŒ์ผ๋“ค์€ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค#

๊ฐœ์ธ ๋ธ”๋กœ๊ทธ๋‚˜ ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ#

Next.js, Nuxt.js, React ๋“ฑ์œผ๋กœ ๊ฐœ๋ฐœํ•œ ๊ฐœ์ธ ์‚ฌ์ดํŠธ๋ฅผ VPS์— ๋ฐฐํฌํ•  ๋•Œ Simploy๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€ ๋ชจ๋“  ๊ณผ์ •์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ธ€ ํ•˜๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž… ๊ฐœ๋ฐœ#

๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž… ๊ฐœ๋ฐœ ์‹œ์—๋Š” ๋ณต์žกํ•œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค. Simploy๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๋ถ„ ๋งŒ์— ๋ฐฐํฌ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ , ํŒ€์›๋“ค๊ณผ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ#

ํ”„๋ฆฌ๋žœ์„œ๋‚˜ ์—์ด์ „์‹œ์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์„œ๋ฒ„์— ์ง์ ‘ ๋ฐฐํฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋งˆ๋‹ค ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด ๋‹ค๋ฅด์ง€๋งŒ, Simploy์˜ ์„ค์ • ํŒŒ์ผ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ๊ทœ๋ชจ ํŒ€ ํ”„๋กœ์ ํŠธ#

์Šคํƒ€ํŠธ์—…์ด๋‚˜ ์†Œ๊ทœ๋ชจ ํŒ€์—์„œ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ์ ์ด๋ผ ๋ณต์žกํ•œ DevOps ๋„๊ตฌ๋ฅผ ๋„์ž…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Simploy๋Š” ์ตœ์†Œํ•œ์˜ ์„ค์ •์œผ๋กœ ํŒ€ ์ „์ฒด๊ฐ€ ์ผ๊ด€๋œ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ• ๊ฐ€์ด๋“œ#

1. ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐํ™”#

# ์ „์—ญ ์„ค์น˜ (๊ถŒ์žฅ)
npm install -g simploy
 
# ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™”
simploy init

simploy init ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:

  • simploy.json: ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ
  • simploy.private.json: ๋น„๋ฐ€ ์ •๋ณด ํŒŒ์ผ (์ž๋™์œผ๋กœ .gitignore์— ์ถ”๊ฐ€)

2. ์„ค์ • ํŒŒ์ผ ํŽธ์ง‘#

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

3. ๋ฐฐํฌ ์‹คํ–‰#

# ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ๋ฐฐํฌ
simploy deploy --env dev
 
# ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋ฐฐํฌ
simploy deploy --env production

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

๋‹ค๋ฅธ ๋ฐฐํฌ ๋„๊ตฌ์™€์˜ ๋น„๊ต#

vs GitHub Actions#

  • GitHub Actions: ๊ฐ•๋ ฅํ•œ ์›Œํฌํ”Œ๋กœ์šฐ ์—”์ง„, ๋‹ค์–‘ํ•œ ํ†ตํ•ฉ ์ง€์›, ํ•˜์ง€๋งŒ private repo์—์„œ๋Š” ์œ ๋ฃŒ
  • Simploy: ๊ฐ„๋‹จํ•œ ์„ค์ •, ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ์™„์ „ ๋ฌด๋ฃŒ, ํ•˜์ง€๋งŒ ๊ธฐ๋Šฅ์ด ์ œํ•œ์ 

vs Jenkins#

  • Jenkins: ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅ, ํ•˜์ง€๋งŒ ์„ค์น˜/์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์Œ
  • Simploy: ์„ค์น˜ ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉ, ์ตœ์†Œํ•œ์˜ ์„ค์ •, ํ•˜์ง€๋งŒ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ๋ถ€์กฑ

vs Docker + Docker Compose#

  • Docker: ํ™˜๊ฒฝ ์ผ๊ด€์„ฑ, ํ™•์žฅ์„ฑ, ํ•˜์ง€๋งŒ ํ•™์Šต ๊ณก์„ ์ด ์žˆ๊ณ  ์„ค์ •์ด ๋ณต์žก
  • Simploy: ๊ธฐ์กด ์„œ๋ฒ„ ํ™˜๊ฒฝ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ, ์ฆ‰์‹œ ์ ์šฉ ๊ฐ€๋Šฅ, ํ•˜์ง€๋งŒ ํ™˜๊ฒฝ ์ผ๊ด€์„ฑ์€ ๋–จ์–ด์ง

์„ค์น˜ ๋ฐ ์‚ฌ์šฉ#

# ์ „์—ญ ์„ค์น˜
npm install -g simploy
 
# ๋˜๋Š” npx๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉ
npx simploy init
npx simploy deploy --env dev

GitHub: https://github.com/JunDev76/simploy
npm: https://www.npmjs.com/package/simploy

์—ฌ๋Ÿฌ๋ถ„์˜ ๋ฐฐํฌ ๊ณผ์ •์ด ์กฐ๊ธˆ์ด๋ผ๋„ ํŽธํ•ด์กŒ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•ด๋ณด์‹œ๊ณ  ํ”ผ๋“œ๋ฐฑ์ด๋‚˜ ๊ฐœ์„  ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ์‹œ๋ฉด ์–ธ์ œ๋“  GitHub์—์„œ ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”! ๐Ÿš€