Skip to content

New infrastructure Design doc

wy.choi edited this page Aug 18, 2024 · 2 revisions

๋””์ž์ธ ๋…(Design doc)์ด๋ž€?


  • Design docs๋Š” Google์˜ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ๋ฌธํ™”์˜ ํ•ต์‹ฌ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋กœ, ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ์š” ์ €์ž๊ฐ€ ์ฝ”๋”ฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ž‘์„ฑํ•˜๋Š” ๋น„๊ต์  ๋น„๊ณต์‹์ ์ธ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.
    • ๊ณ ์ˆ˜์ค€์˜ ๊ตฌํ˜„ ์ „๋žต๊ณผ ์ฃผ์š” ์„ค๊ณ„ ๊ฒฐ์ •์„ ๋ฌธ์„œํ™”ํ•˜๋ฉฐ, ํŠนํžˆ ๊ทธ๋Ÿฌํ•œ ๊ฒฐ์ • ์‹œ ๊ณ ๋ ค๋˜์—ˆ๋˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.
    • ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด์˜ ์ง๋ฌด๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, Design doc๊ณผ ๊ฐ™์€ ๋น„์ •ํ˜• ํ…์ŠคํŠธ๊ฐ€ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ๋Š” ์ฝ”๋“œ๋ณด๋‹ค ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ฌธ์ œ ํ•ด๊ฒฐ ๋„๊ตฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Design doc์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ผ์ดํ”„์‚ฌ์ดํด์—์„œ์˜ ์—ญํ• 

  • ์›๋ž˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ๋ฌธ์„œํ™” ์™ธ์—๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณ€๊ฒฝ์ด ์•„์ง ์ €๋ ดํ•  ๋•Œ ์„ค๊ณ„ ์ด์Šˆ๋ฅผ ์กฐ๊ธฐ์— ์‹๋ณ„
    • ์กฐ์ง ๋‚ด์—์„œ ์„ค๊ณ„์— ๋Œ€ํ•œ ํ•ฉ์˜ ๋„์ถœ
    • ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(cross-cutting concern) ๊ณ ๋ ค ๋ณด์žฅ
    • ์‹œ๋‹ˆ์–ด ์—”์ง€๋‹ˆ์–ด์˜ ์ง€์‹์„ ์กฐ์ง์œผ๋กœ ์ „ํŒŒ
    • ์„ค๊ณ„ ๊ฒฐ์ •์— ๋Œ€ํ•œ ์กฐ์ง์  ๊ธฐ์–ต์˜ ๊ธฐ๋ฐ˜ ํ˜•์„ฑ
    • ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์ž์˜ ๊ธฐ์ˆ  ํฌํŠธํด๋ฆฌ์˜ค์—์„œ ์š”์•ฝ ์•„ํ‹ฐํŒฉํŠธ ์—ญํ• 

Design doc์˜ ๋ผ์ดํ”„์‚ฌ์ดํด

  1. Creation and rapid iteration: ๋ฌธ์„œ ์ž‘์„ฑ ๋ฐ ๋™๋ฃŒ์™€์˜ ์‹ ์†ํ•œ ๋ฐ˜๋ณต์„ ํ†ตํ•ด ์•ˆ์ •์ ์ธ ๋ฒ„์ „ ๋„์ถœ (์ง„ํ–‰ ์ค‘)
  2. Review: ๋” ๋„“์€ ์ฒญ์ค‘๊ณผ ๊ณต์œ ๋˜์–ด ๋ฆฌ๋ทฐ๋จ
  3. Implementation and iteration: ๊ตฌํ˜„ ์ค‘ ์„ค๊ณ„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐœ์ƒ ์‹œ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
  4. Maintenance and learning: ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ ‘๊ทผ์„ฑ ์ข‹์€ ์ง„์ž…์  ์—ญํ• 

Overview


Context and scope:

์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ์ด ๊ตฌ์ถ•๋˜๋Š” ๋ฐฐ๊ฒฝ๊ณผ ์‹ค์ œ๋กœ ๊ตฌ์ถ•๋˜๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์š”

์„ฑ๋Šฅ ๋ฌธ์ œ

  • ๋ฆฌ์†Œ์Šค ๊ฒฝ์Ÿ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, CI/CD ํŒŒ์ดํ”„๋ผ์ธ์ด ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋ฉด ํ•˜๋‚˜์˜ ๋จธ์‹ ์— ๋ฆฌ์†Œ์Šค๋ฅผ CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ I/O ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‘๊ณ  ๊ฒฝ์Ÿํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋กœ ์ธํ•ด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šค์ผ€์ผ๋ง ํ•œ๊ณ„
    • ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ํŠน์ • ์‹œ์ ์—์„œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•œ๊ณ„์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ์Šค์ผ€์ผ๋ง(scale-in, out, up, down)์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • [solution]
    • ๋ฆฌ์†Œ์Šค ๊ฒฝ์Ÿ & ์Šค์ผ€์ผ๋ง ํ•œ๊ณ„
      • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, DB, CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ปจํ…Œ์ด๋„ˆํ™”
        • ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์ธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ, ๋ฆฌ์†Œ์Šค ๊ฒฝ์Ÿ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • EKS (Elastic Kubernetes Service) ๋„์ž…
        • ๋ณต๊ตฌ ์ž๋™ํ™”: ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•˜๊ณ , ์ž˜๋ชป๋œ ์ƒํƒœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
        • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ EKS์— ๋ถ„์‚ฐ ๋ฐฐํฌํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
        • ์Šค์ผ€์ผ๋ง์˜ ๊ฒฝ์šฐ, pod์˜ ์ธ์Šคํ„ด์Šค ์ˆ˜, ๋ฉ”๋ชจ๋ฆฌ, cpu ์–‘ ๋“ฑ์„ helm chart๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
        • ์‚ฌ์šฉ์ž๋Š” helm chart์— ๊ฐ’์„ ๋ฐ˜์˜ํ•˜๊ณ  gocd๋“ฑ์˜ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ–‰ํ•˜์—ฌ ์Šค์ผ€์ผ๋ง์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์šฉ์„ฑ ๋ฌธ์ œ

  • ๋‹จ์ผ ์žฅ์• ์ 
    • ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ํ•˜๋‚˜์˜ EC2 ์ธ์Šคํ„ด์Šค์— ์ง‘์ค‘๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์ธ์Šคํ„ด์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ๋™์‹œ์— ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค์—์„œ ํ˜ธ์ŠคํŒ…ํ•  ๊ฒฝ์šฐ, ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ์ „๋žต์ด ๋ณต์žกํ•ด์ง€๊ณ  ๋ณต๊ตฌ ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹ค์šดํƒ€์ž„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • [solution]
    • ๋‹จ์ผ ์žฅ์• ์ง€์ 
      • Multi Availability Zone์œผ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ์— ๋ฐฐํฌํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฐ€์šฉ ์˜์—ญ์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
      • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ (ALB/NLB/HAProxy): ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ์— ๋ถ„์‚ฐ๋œ ์ธ์Šคํ„ด์Šค๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ
      • RDS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™ ๋ฐฑ์—…, ์Šค๋ƒ…์ƒท ๋ฐ ๋ฉ€ํ‹ฐ AZ ๋ฐฐํฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • Datalake, Olap ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์žฅ๊ธฐ์ ์ธ ๋ฐ์ดํ„ฐ ๋ณด๊ด€๊ณผ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.(too much ๋Š๋‚Œ)

์œ ์ง€๋ณด์ˆ˜ ๋ฌธ์ œ

  • ์šด์˜ ์ฒด์ œ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ
    • ์ธ์Šคํ„ด์Šค์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, CI/CD ๋„๊ตฌ ๋ชจ๋‘์— ๋Œ€ํ•ด ํŒจ์น˜์™€ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„์žฌ ๊ตฌ์กฐ์—์„œ ๋‹ค์šดํƒ€์ž„์ด ํ•„์—ฐ์ ์ด๋ฉฐ, ์—…๋ฐ์ดํŠธ๊ฐ€ ์„œ๋กœ ์ถฉ๋Œํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ ๊ด€๋ฆฌ
    • ๋ชจ๋“  ์„œ๋น„์Šค์˜ ๋กœ๊ทธ๊ฐ€ ๊ฐ™์€ ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋˜๋ฏ€๋กœ ๋กœ๊ทธ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ , ๋””์Šคํฌ ๊ณต๊ฐ„์„ ๋น ๋ฅด๊ฒŒ ์†Œ๋ชจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • [solution]
    • ์šด์˜ ์ฒด์ œ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ
      • ์œ„์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ AZ๋ฅผ ํ™œ์šฉํ•˜๋ฉฐ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋กœ๊ทธ ๊ด€๋ฆฌ
      • Filebeat(or Kafka) + Logstash(or Vector) + ElasticSearch + Kibana๋กœ ๋ชจ๋“  ์„œ๋น„์Šค์˜ ๋กœ๊ทธ๋ฅผ ์ค‘์•™ ์ง‘์ค‘์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.(๋ชจ๋“  ๋กœ๊ทธ๋Š” es์—์„œ ๊ฒ€์ƒ‰/๊ด€๋ฆฌ)

๋„คํŠธ์›Œํฌ ๋ฐ ์ ‘๊ทผ์„ฑ ๋ฌธ์ œ

  • ๋„คํŠธ์›Œํฌ ํ˜ผ์žก
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, CI/CD ๋„๊ตฌ ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ์ ‘๊ทผ ์œ„ํ—˜
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋  ๊ฒฝ์šฐ ๋ณด์•ˆ ์œ„ํ˜‘์ด ์ฆ๊ฐ€ํ•˜๋ฉฐ, ํ•„์š” ์—†๋Š” ์„œ๋น„์Šค๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • [solution]
    • ๋„คํŠธ์›Œํฌ ํ˜ผ์žก
      • VPC ๋‚ด์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ๊ด€๋ฆฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. VPC ๋‚ด์—์„œ ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ „์šฉ ๋„คํŠธ์›Œํฌ ๋งํฌ๋กœ ์„ค์ •ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๋ณต์žก์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค.
    • ์™ธ๋ถ€ ์ ‘๊ทผ ์œ„ํ—˜
      • ๋ณด์•ˆ ๊ทธ๋ฃน๊ณผ ๋„คํŠธ์›Œํฌ ACL์„ ์ ์ ˆํžˆ ์„ค์ •ํ•˜์—ฌ ์™ธ๋ถ€ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๊ณ  ํ•„์š”ํ•œ ํฌํŠธ๋งŒ ์—ด์–ด๋‘ก๋‹ˆ๋‹ค.

CI/CD ๋ฌธ์ œ

  • ๋นŒ๋“œ/๋ฐฐํฌ ์‹œ๊ฐ„ ์ฆ๊ฐ€
    • CI/CD ํŒŒ์ดํ”„๋ผ์ธ์ด ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋นŒ๋“œ์™€ ๋ฐฐํฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ์„ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์  ํ‚จ์Šค ์œ ์ง€ ๋ณด์ˆ˜์˜ ์–ด๋ ค์›€
    • ํ˜„์žฌ ์  ํ‚จ์Šค๋กœ CI/CD๋ฅผ ๋ชจ๋‘ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด ๊ฒฝ์šฐ, ์  ํ‚จ์Šค ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋ฉด ์ž์ฒด์ ์ธ ๋นŒ๋“œ/๋ฐฐํฌ๊ฐ€ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋˜ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋นŒ๋“œ/๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์ง€๋ณด์ˆ˜์™€ ํœด๋จผ ์—๋Ÿฌ์˜ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  • [solution]
    • ๋นŒ๋“œ/๋ฐฐํฌ ์‹œ๊ฐ„ ์ฆ๊ฐ€
      • ์œ„์™€ ๊ฐ™์ด eks๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŒŒ๋“œ ๊ฐ„ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒฉ๋ฆฌํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์  ํ‚จ์Šค ์œ ์ง€ ๋ณด์ˆ˜์˜ ์–ด๋ ค์›€
      • GOCD(UI๊ธฐ๋ฐ˜ ๋ฐฐํฌ ํˆด)๋ฅผ ๋„์ž…ํ•˜์—ฌ helm chart๋กœ ๋นŒ๋“œ/๋ฐฐํฌ/๋กค๋ฐฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์žฅ์•  ๊ฐ์ง€ ๋ฌธ์ œ

  • ๋ชจ๋‹ˆํ„ฐ๋ง ๋ณต์žก์„ฑ
    • ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ๊ฐ™์€ ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰๋  ๊ฒฝ์šฐ ๊ฐ ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์žฅ์•  ๊ฐ์ง€ ๋ฐ ๋Œ€์‘ ์ง€์—ฐ
    • ํ•œ ์„œ๋น„์Šค์˜ ์žฅ์• ๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น  ๋•Œ, ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ณ  ๋Œ€์‘ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • [solution]
    • ๋ชจ๋‹ˆํ„ฐ๋ง ๋ณต์žก์„ฑ
      • Prometheus์™€ Grafana๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์žฅ์• , ์ด์ƒ ๋ฉ”ํŠธ๋ฆญ ๋ฐœ๊ฒฌ ์‹œ ์Šฌ๋ž™์œผ๋กœ ๋ฉ”ํŠธ๋ฆญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
      • EKS์˜ ํ—ฌ์Šค ์ฒดํฌ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ํ™•์ธํ•˜๊ณ , ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด auto hilling์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Goals and non-goals: ์‹œ์Šคํ…œ์˜ ๋ชฉํ‘œ์™€ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ


์ฃผ์š” ๋ชฉํ‘œ(Goals)

  1. ๋ฆฌ์†Œ์Šค ๊ฒฝ์Ÿ ๋ฐ ์Šค์ผ€์ผ๋ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • EKS ๋„์ž…: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ EKS์— ๋ถ„์‚ฐ ๋ฐฐํฌํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๊ฒฝ์Ÿ์„ ์ค„์ด๊ณ  ์Šค์ผ€์ผ๋ง ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ.
  2. ๊ฐ€์šฉ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Multi-AZ ๋ฐฐํฌ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ์— ๋ฐฐํฌํ•ด ๋‹จ์ผ ์žฅ์•  ์ง€์ ์„ ์ œ๊ฑฐ.
    • ์ž๋™ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ: RDS๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ž๋™ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ์ „๋žต์„ ๊ตฌํ˜„.
  3. ์œ ์ง€๋ณด์ˆ˜ ๋ฌธ์ œ ๊ฐœ์„ 
    • ์ค‘์•™ ์ง‘์ค‘์‹ ๋กœ๊ทธ ๊ด€๋ฆฌ: Vector, ElasticSearch, Kibana๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์„œ๋น„์Šค์˜ ๋กœ๊ทธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ.
    • ์šด์˜ ์ฒด์ œ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์—…๋ฐ์ดํŠธ ๊ด€๋ฆฌ: ์—ฌ๋Ÿฌ AZ์™€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ™œ์šฉํ•ด ๋‹ค์šดํƒ€์ž„ ์—†์ด ์—…๋ฐ์ดํŠธ ๊ด€๋ฆฌ.
  4. ๋„คํŠธ์›Œํฌ ๋ฐ ์ ‘๊ทผ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • ๋„คํŠธ์›Œํฌ ํ˜ผ์žก ์™„ํ™”: VPC ๋‚ด ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ๋ฐ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ์ตœ์ ํ™”.
    • ๋ณด์•ˆ ๊ฐ•ํ™”: ๋ณด์•ˆ ๊ทธ๋ฃน๊ณผ ๋„คํŠธ์›Œํฌ ACL์„ ์„ค์ •ํ•˜์—ฌ ์™ธ๋ถ€ ์ ‘๊ทผ์„ ์ œ์–ด.
  5. CI/CD ๋ฌธ์ œ ํ•ด๊ฒฐ
    • ๋นŒ๋“œ/๋ฐฐํฌ ์ตœ์ ํ™”: EKS๋ฅผ ํ™œ์šฉํ•ด ํŒŒ๋“œ ๊ฐ„ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒฉ๋ฆฌํ•˜์—ฌ ๋นŒ๋“œ/๋ฐฐํฌ ์‹œ๊ฐ„์„ ๋‹จ์ถ•.
    • GOCD ๋„์ž…: Helm chart๋ฅผ ํ™œ์šฉํ•œ UI ๊ธฐ๋ฐ˜์˜ ๋นŒ๋“œ/๋ฐฐํฌ ๊ด€๋ฆฌ๋กœ ์  ํ‚จ์Šค ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€์„ ํ•ด๊ฒฐ.
  6. ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์žฅ์•  ๊ฐ์ง€ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • ๋ชจ๋‹ˆํ„ฐ๋ง ๋‹จ์ˆœํ™”: Prometheus์™€ Grafana๋กœ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์‹œ๊ฐํ™”.
    • ์ž๋™ ๋ณต๊ตฌ ๊ธฐ๋Šฅ: EKS์˜ ํ—ฌ์Šค ์ฒดํฌ ๋ฐ auto healing ๊ธฐ๋Šฅ์œผ๋กœ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ž๋™ ๋ณต๊ตฌ.

๋ชฉํ‘œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ(non-goals)

  1. ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๋ณด๊ด€ ๋ฐ ๋ณต๊ตฌ ์ „๋žต (e.g., Datalake, OLAP ๋„์ž…)
    • Datalake๋‚˜ OLAP์™€ ๊ฐ™์€ ์žฅ๊ธฐ์ ์ธ ๋ฐ์ดํ„ฐ ๋ณด๊ด€ ๋ฐ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฒˆ ์„ค๊ณ„์˜ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ ๋ณด๊ด€ ๋ฐ ๋ณต๊ตฌ๋Š” RDS์˜ ๊ธฐ๋ณธ ๋ฐฑ์—… ๋ฐ ์Šค๋ƒ…์ƒท ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜์ค€์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์„œ๋น„์Šค์˜ ์™„์ „ํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ์ „ํ™˜
    • ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜(์˜ˆ: AWS Lambda)๋กœ์˜ ์™„์ „ํ•œ ์ „ํ™˜์€ ๊ณ ๋ ค ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€์‹  EKS ๋ฐ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ชจ๋“  ๋กœ๊ทธ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์— ์˜์กด
    • ๋กœ๊ทธ ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด ElasticSearch์™€ Kibana๋ฅผ ํ™œ์šฉํ•˜์ง€๋งŒ, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์— ์˜์กดํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์™€ ๋กœ๊ทธ๋Š” ํ•„์š”ํ•œ ๋ฒ”์œ„์—์„œ๋งŒ ํด๋ผ์šฐ๋“œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

System-Context Diagram


์ด ์‹œ์Šคํ…œ์€ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์‹œ์Šคํ…œ์€ AWS ์ธํ”„๋ผ์—์„œ ๋™์ž‘ํ•˜๋ฉฐ, ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ๋Š” EKS(Elastic Kubernetes Service), RDS(Relational Database Service), CI/CD ํŒŒ์ดํ”„๋ผ์ธ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ, VPC ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ

  1. ํด๋ผ์ด์–ธํŠธ: ์‚ฌ์šฉ์ž๋Š” ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  2. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(ALB/NLB): ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ EKS ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
  3. EKS ํด๋Ÿฌ์Šคํ„ฐ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์ด ์ปจํ…Œ์ด๋„ˆ ํ˜•ํƒœ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  4. RDS: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ด€๋ฆฌ๋˜๋ฉฐ, Multi-AZ ๋ฐฐํฌ๋กœ ๋†’์€ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  5. VPC: ๋ณด์•ˆ ๋ฐ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊ฐ€ VPC ๋‚ด์—์„œ ์šด์˜๋ฉ๋‹ˆ๋‹ค.
  6. ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊ทธ ๊ด€๋ฆฌ: Prometheus, Grafana, ElasticSearch, Kibana๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊ทธ ๊ด€๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๋น„์šฉ ๊ณ„์‚ฐ


Cluster Spec

  • EKS ํด๋Ÿฌ์Šคํ„ฐ: 2๊ฐœ
  • ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ๋‹น ๋…ธ๋“œ ์ˆ˜: 3๋Œ€
  • ๋…ธ๋“œ ํƒ€์ž…: ๊ฐ€์žฅ ์ €๋ ดํ•œ EC2 ์ธ์Šคํ„ด์Šค ์œ ํ˜• (t3.micro๋ฅผ ์‚ฌ์šฉ)
  • ์ง€์—ญ: ์„œ์šธ ๋ฆฌ์ „, ap-northeast-2
  • ๊ฐ ๋…ธ๋“œ๋‹น EBS ์Šคํ† ๋ฆฌ์ง€: 20GB gp2

1. EKS ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋น„์šฉ

  • ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋น„์šฉ: ํด๋Ÿฌ์Šคํ„ฐ๋‹น $0.10/์‹œ๊ฐ„
  • ๋‘ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๋ฏ€๋กœ:
    • $0.10 x 24์‹œ๊ฐ„ x 30์ผ x 2 ํด๋Ÿฌ์Šคํ„ฐ = $144/์›”

2. EC2 ์ธ์Šคํ„ด์Šค ๋น„์šฉ (๋ณ€๊ฒฝ๋œ ์ธ์Šคํ„ด์Šค ๋น„์šฉ ์ ์šฉ)

  • t3.micro ์ธ์Šคํ„ด์Šค๋Š” $0.0104/์‹œ๊ฐ„
  • ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ์— 3๋Œ€์˜ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด 2๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜
  • EC2 ์ธ์Šคํ„ด์Šค ๋น„์šฉ:
    • $0.0104 x 3๋Œ€ x 24์‹œ๊ฐ„ x 30์ผ x 2 ํด๋Ÿฌ์Šคํ„ฐ = $44.928/์›”

3. EBS ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ

  • gp2 ์Šคํ† ๋ฆฌ์ง€๋Š” $0.114/GB(์›”)
  • ๊ฐ ๋…ธ๋“œ์— 20GB์˜ EBS ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ• ๋‹น
  • EBS ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ:
    • $0.114 x 20GB x 3๋Œ€ x 2 ํด๋Ÿฌ์Šคํ„ฐ = $13.68(์›”)

4. ์ด ์›”๊ฐ„ ๋น„์šฉ

์œ„์˜ ๊ณ„์‚ฐ์„ ์ข…ํ•ฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • EKS ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋น„์šฉ: $144/์›”
  • EC2 ์ธ์Šคํ„ด์Šค ๋น„์šฉ: $44.928/์›”
  • EBS ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ: $13.68/์›”

์ด ์˜ˆ์ƒ ๋น„์šฉ: $202.608/์›”

5. EKS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์ถ• ์‹œ ๋น„์šฉ (2๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ)

EKS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  EC2 ์ธ์Šคํ„ด์Šค์— ์ง์ ‘ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ:

  • EC2 ์ธ์Šคํ„ด์Šค ๋น„์šฉ: $0.0104/์‹œ๊ฐ„
    • 3๋Œ€์˜ t3.micro ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉ, 2๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜
    • $0.0104 x 3๋Œ€ x 24์‹œ๊ฐ„ x 30์ผ x 2 ํด๋Ÿฌ์Šคํ„ฐ = $44.928/์›”
  • EBS ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ: $0.114/GB/์›” (20GB EBS ๋ณผ๋ฅจ ์‚ฌ์šฉ)
    • $0.114 x 20GB x 3๋Œ€ x 2 ํด๋Ÿฌ์Šคํ„ฐ = $13.68/์›”

์ด ๋น„์šฉ: $58.608/์›”

6. ๋น„์šฉ ๋น„๊ต (์ตœ์ข… ์ •๋ฆฌ)

  • EKS ์‚ฌ์šฉ ์‹œ (2๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ) ์ด ๋น„์šฉ: $202.608/์›” (์•ฝ 27๋งŒ์›)
  • EKS ์‚ฌ์šฉ ์‹œ (1๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ) ์ด ๋น„์šฉ: $101.304/์›” (์•ฝ 13.5๋งŒ์›)
  • EKS ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๊ตฌ์ถ• ์‹œ (2๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ) ์ด ๋น„์šฉ: $58.608/์›” (์•ฝ 8๋งŒ์›)
  • EKS ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๊ตฌ์ถ• ์‹œ (1๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ) ์ด ๋น„์šฉ: $29.304/์›” (์•ฝ 4๋งŒ์›)

์ถ”๊ฐ€์ ์ธ ๊ณ ๋ ค ์‚ฌํ•ญ

  • ๋ฐ์ดํ„ฐ ์ „์†ก ๋น„์šฉ: ๊ฐ™์€ ๋ฆฌ์ „ ๋‚ด์—์„œ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์€ ๋ฌด๋ฃŒ์ด์ง€๋งŒ, ์ธํ„ฐ๋„ท์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ELB ๋น„์šฉ: ELB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ• ์ง‘์‚ฌ์˜๊ณ ๋ฏผ

  1. ์ง‘์‚ฌ์˜ ๊ณ ๋ฏผ ์„œ๋น„์Šค ์†Œ๊ฐœ
  2. ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ ๋ฐ ๊ธฐ๋Šฅ๋ช…์„ธ
  3. ํŒ€ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ
  4. Git Branch ์ „๋žต ๋ฐ Git Commit ์ปจ๋ฒค์…˜
  5. ์ง‘์‚ฌ์˜ ๊ณ ๋ฏผ ๋ฐฐํฌ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ

Team Zipgo

  1. ํ‚ฅ์˜คํ”„ ๋ฏธํŒ… - ์šฐ๋ฆฌ์˜ ์‹œ์ž‘!
  2. ๋‚˜ ์‚ฌ์šฉ์„ค๋ช…์„œ
  3. 5์ฐจ ๋ฐ๋ชจ ํ˜‘์—… ๊ฒฝํ—˜ ๊ณต์œ 

ํ”„๋ก ํŠธ์—”๋“œ

๋ฐฑ์—”๋“œ

Clone this wiki locally