---

๐Ÿš€ ์•„ํ‚คํ…์ฒ˜

๋ณ€ํ™”, ์ •๋ฆฌ, ์ˆœํ™˜, ์ธก์ •

Created: 2020, 05 07 >Updated: 2026, 05 31

์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๋ชฉํ‘œ

์ธํ”„๋ผ ๊ตฌ์ถ• ๋ฐ ๋ฐฐํฌ๋ฅผ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ, ํ”ผ๋“œ๋ฐฑ์„ ์ž˜ ๋ฐ›์•„ ์ ์ง„์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ฒ ๋‹ค.

์ข‹์€ ์•„ํ‚คํ…ํŠธ๋Š” ์„ธ๋ถ€์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์˜ค๋žซ๋™์•ˆ ๋ฏธ๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ •์ฑ…์„ ์„ค๊ณ„ํ•œ๋‹ค.

  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜

  • ๊ฐœ๋ฐœ์—์„œ ์ค‘์š”ํ•œ ๋•๋ชฉ์€ ๋ณ€๊ฒฝ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ทธ ๋ถ€๋ถ„๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๋„๋ก ์„ค๊ณ„ํ•ด๋†“๋Š” ๊ฒƒ๊ณผ ์ผ๊ด€์„ฑ

    • ๋ง๋ถ™์ด์ž๋ฉด ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ œ์•ฝ์—†์ด ํŽธํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ๋ณ€๊ฒฝ์ด ์‰ฌ์šด ๊ฒƒ
  • ๋ณ€ํ•˜๋Š” ๊ฒƒ์€ ์ตœ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋ฏธ๋ฃฌ๋‹ค

  • ์™„๋ฒฝ๋ณด๋‹ค๋Š” ์•ˆ์ •

  • ๋ชจ๋“  ๊ฒƒ์€ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„

  • ํ™˜๊ฒฝ์— ๋งž์ถ”๋Š” ๊ฒƒ์ด ๊ฐ•๋ ฅํ•œ ๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค

์•„ํ‚คํ…์ฒ˜ ํ•„์ˆ˜ ๊ณ ๋ ค์‚ฌํ•ญ

  • ๋ณ€ํ•˜์ง€ ์•Š์„ ๊ฒƒ๊ณผ ๋ณ€ํ•  ๊ฒƒ์„ ์ •ํ•ด๋†“๊ณ  ์กฐ์ •ํ•œ๋‹ค.
    • ๋ณ€๊ฒฝํ•˜๊ธฐ ์‰ฌ์šด ํ™˜๊ฒฝ์ด ๋˜๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค
  • ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋ฅผ ๋งŒ๋“ ๋‹ค
    • ์–ด๋–ค ํ•ญ๋ชฉ์„ ๋ด์•ผ ์ด๊ฒƒ์ด ์ž˜ ์ง„ํ–‰๋˜๋Š”์ง€๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค
    • ๋ณ€ํ™”์˜ ๊ธฐ๋ก์„ ์ฑ™๊ฒจ์•ผ ํ•œ๋‹ค (following changed thing)
  • ๋ฐฑ์—… ์ž˜ ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐฑ์—… ์ „๋žต์„ ์„ธ์›Œ์•ผ ํ•œ๋‹ค
  • ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ฒ€์ฆํ•˜๋ฉฐ ๋„์ž…ํ•˜๊ธฐ
  • ์žฌ์‚ฌ์šฉ์„ฑ
  • ์‹คํŒจ๋ฅผ ๋นจ๋ฆฌ ํ•œ๋‹ค. ์‹คํŒจ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•œ๋‹ค.

ํ…Œํฌ๋‹ˆ์ปฌ ๊ณ ๋ ค์‚ฌํ•ญ

  • local loading file time > 0.4s
  • external network time > 0.4s. - total 0.8s
  • ๋ฐฐํฌ์šฉ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ ๋‹ค.
    • ๋ฐฐํฌ์šฉ ์ด๋ฏธ์ง€๋Š” ํ•ญ์ƒ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋นŒ๋“œ๋ผ์•ผ ํ•œ๋‹ค. ๋ฎ๊ณ  ๋ฎ๋Š” ๋ฐฉ์‹์€ ๋ถˆํ™•์‹ค์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  • ๋„๋ฉ”์ธ์„ ์ƒ๊ฐํ•˜์ž. ๋„๋ฉ”์ธ์ด ๋””์ž์ธ์„ ๋งŒ๋“ ๋‹ค.
  • auto scaling
  • auto recovery
  • ๊ณ ํšจ์œจ ์ €๋น„์šฉ
  • ๋ฎ๋Š” ๋ฐฉ์‹์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋ณด๋‹ค ๋ถ™์ด๋Š” ๋ฐฉ์‹์ธ ์–ด๋Œ‘ํ„ฐ ๋ฐฉ์‹์ด ์ข‹๋‹ค
  • ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ํšจ์œจ์„ ์ตœ๋Œ€๋กœ ํ•˜๋˜ ์‚ฌ๋žŒ๋“ค์€ ์ซ™๋น ์ง„ ๊ฒƒ๋ณด๋‹ค ๋„‰๋„‰ํ•œ ๊ฒƒ์„ ๋” ์ข‹์•„ํ•˜๋Š” ์ ์„ ์ƒ๊ฐํ•œ๋‹ค
  • User experience searchable website
  • ์„œ๋น„์Šค๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜์ง€๋ง๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค
  • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ์ง€ ๋ง๊ณ  ๋ชจ๋“ˆ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค
  • ์ƒˆ๋กœ์šด ํˆด์ด ๊ด€๋ฆฌ์ ์€ ์ค„์ด๊ณ , ํŽธ์˜๊ธฐ๋Šฅ์€ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
  • ๋ณต์žก๋„๋Š” ๋‚ฎ์ถ”๊ณ  ์‹ถ๊ณ  ์„œ๋น„์Šค๋Š” ๋งŽ์ด ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค
  • SOLID - Open Closed Principle
    • ๋ณ€ํ™”๋ฅผ ์ตœ์†Œํ™” ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€ํ™” ์˜ˆ์ƒ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์„ ์„ค๊ณ„์‹œ ๋‚˜๋ˆ ๋†“์•„์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ธ๋ฐ ๊ทธ ๊ธฐ์ค€์„ ์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋А๋ƒ๊ฐ€ ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค
  • Devops#server architecture to using some company service
  • ํ”ผ์ฒ˜ ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ
    • ํ”ผ์ฒ˜ํ”Œ๋ž˜๊ทธ๋Š” aws parameter store๋ฅผ ์‚ฌ์šฉํ•ด์„œ api๋กœ ๊ด€๋ฆฌํ•ด๋„ ๋˜๊ฒ ๋‹ค ๋žŒ๋‹ค๋กœ๋„ ํ•ด๋„ ๋˜๊ณ  ์™€์šฐ
  • SSOT
    • SPOF
    • SSOT๋กœ CoCํ•˜๊ฒŒ SPOF์—†์ด
  • ์„œ๋น„์Šค๊ฐ€ ์ปค์ ธ๊ฐ์— ๋”ฐ๋ผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ
    • ๊นƒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ > gitlab์ด ์ž์ฒด ์„œ๋ฒ„ ๊ตฌ์ถ• ๊ฐ€๋Šฅํ•˜๋‹ค
    • ci ํˆด
    • ์„œ๋น„์Šค๋กœ ์ œ๊ณต๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋“ค
    • ์ตœ์†Œํ•œ ์ด์ค‘ํ™”๊ฐ€ ๋˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค

Check Point

ํ”„๋กœ์ ํŠธ ์ „ ํ•œ๋ฒˆ์”ฉ ์ ๊ฒ€ํ•˜๊ธฐ

  • ์ˆ˜์‹œ ๋ฐฐํฌ vs ์ •๊ธฐ ๋ฐฐํฌ
    • ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธ ๊ฐ€๋Šฅ
    • ์—๋Ÿฌ ํ™•๋ฅ  ์ฆ๊ฐ€ - ๋น ๋ฅธ ๋กค๋ฐฑ์œผ๋กœ ์œ„ํ—˜๋„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Œ
    • vs
    • ๋„ˆ๋ฌด ํฐ ๋ฐฐํฌ ๋‹จ์œ„๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ
    • ํ…Œ์ŠคํŠธ ์ƒํƒœ์˜ ๊ฒฐ๊ณผ์™€ ์‹ค์ œ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ
    • ๋ฐฐํฌ์ผ์ž์— ์—๋Ÿฌ ์ง‘์ค‘
  • ๊ฐ•์ œ์„ฑ์„ ์–ผ๋งŒํผ ํ• ์ง€, ์ž์œจ์„ฑ์„ ์–ผ๋งŒํผ ํ• ์ง€
  • ์—…๋ฌด๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•  ๋ฐฉ๋ฒ•
    • ์—…๋ฌด๋ฅผ ๋ฐ›์œผ๋ฉด ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•˜๋ฉด ์ข‹์„์ง€? ๊ด€๊ณ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๋Š”๋ฐ..
  • ์ฝ”๋“œ์™€ ์„ค์ •์„ ๋ถ„๋ฆฌํ•œ๋‹ค. divide code / config file
    • CoC ๋ฅผ ์œ„ํ•ด ์„ค์ •์„ ์‰ฝ๊ฒŒ ํ•  ๋ฐฉ๋ฒ•
      • ์‚ฌ์šฉ์ž ์ŠคํŽ™์„ ์ฝ์–ด์„œ ์—†์œผ๋ฉด ์„œ๋ฒ„ ์ŠคํŽ™์„ ์‚ฌ์šฉํ•œ๋‹ค.
      • ์„œ๋ฒ„ ์ŠคํŽ™์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.
      • nagios๋„ ์ด๋ ‡๊ฒŒ ๋˜์žˆ์—ˆ๊ณ , vim์ด๋‚˜ zsh๋“ฑ ์ปค๋งจ๋“œ๋ผ์ธ ํˆด๋“ค๋„ ์ด๋ ‡๊ฒŒ ๋˜์žˆ๋‹ค. odoo๋„ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ ์˜ค๋ฒ„๋ผ์ด๋“œ ๋˜๊ฒŒ ํ•ด๋†จ์ง€๋งŒ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ๊ฑด๋“œ๋ฆด ์ˆ˜๋Š” ์žˆ์—ˆ๋‹ค.
  • ์ž์ฃผ ๋ณ€ํ•˜๋Š” ๊ฒƒ๊ณผ ์ž์ฃผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ณ ๋ คํ•˜๊ธฐ
    • ์ž์ฃผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์‹ ๊ฒฝ ์•ˆ์จ๋„ ๋˜๋„๋ก ํ•˜๊ธฐ
  • ๊ณ„์‚ฐ ์ค‘์‹ฌ ๊ตฌ์กฐ(cpu) vs ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ๊ตฌ์กฐ
  • ๋””๋ ‰ํ† ๋ฆฌ ๋‹จ์œ„๋ฅผ ๊ธฐ๋Šฅ๋ณ„๋กœ ํ• ์ง€, ์—ญํ• ๋ณ„๋กœ ํ• ์ง€
  • ์ฝ”๋“œ ๋ถ„๋ฆฌ ๊ธฐ์ค€
    • ํšŒ์‚ฌ์—์„œ๋Š” ๋ ˆ์ด์–ด๋ณ„๋กœ ๋‚˜๋ˆด๋‹ค
    • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ๋Š” ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆˆ๋‹ค
  • monorepo vs microrepo
  • ๊นŠ์ด vs ๋„“์ด
  • ํŒ€ ๊ตฌ์กฐ์— ๋”ฐ๋ฅธ๋‹ค
    • ํ”„๋กœ์ ํŠธ๋ณ„ ํŒ€ vs TF ํŒ€ vs ์—ญํ• ๋ณ„ ํŒ€ vs ๊ธฐ๋Šฅ๋ณ„ ํŒ€
  • ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ค‘์ฒฉ์‹œ์ผœ ํ•œ ๋ ˆํฌ ์•ˆ์— ๋‘˜์ง€
    • ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ค‘์ฒฉ๋˜๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„๋ฆฌ ์‹œ์ผœ ๋ ˆํฌ๋ฅผ ๋‚˜๋ˆŒ์ง€
  • ํšŒ์‚ฌ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž์ฒด์ ์œผ๋กœ ๊ตฌ์ถ•ํ•œ ๊ฒƒ์„ ์“ฐ๋А๋ƒ, ์ž˜ ๊ฐ€์ ธ๋‹ค ์“ฐ๋А๋ƒ
  • ํ•˜๋‚˜์˜ ํˆด๊ณผ ์ข…์†์„ฑ
    • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์“ฐ๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทผ๋ฐ ๊ทธ๋Ÿฌ๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ์ข…์†์„ฑ์ด ์‹ฌํ•˜๊ฒŒ ๊ฑธ๋ฆฐ๋‹ค
  • ๊ฐœ๋ฐœ์€ docker compose๋กœ ์šด์˜์€ kubernetes๋กœ ํ•˜๋„๋ก ์‚ฌ๋žŒ๋“ค์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š”๊ฐ€?
  • ๊ฐ์ฒด๊ฐ€ 2๊ฐœ ์ด์ƒ ์ƒ๊ธฐ๋ฉด ์ค‘๊ฐ„์— ๋ฒ„ํผ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ์ •์ ์ด๋‹ค. ๊ทผ๋ฐ DB์™€ ์›น์€ ํ•˜๋‚˜๋กœ ๋ด์•ผํ•˜๋ ค๋‚˜

์„ค๊ณ„

  • ์„œ๋น„์Šค ์œ ํ˜• - ์–ด๋–ค ๋„๋ฉ”์ธ์—์„œ ์–ด๋–ค ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ํ•˜๋Š”์ง€, ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ํŠน์„ฑ
  • ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ
  • ๋ฐ์ดํ„ฐ ์–‘ ์ธก์ •
  • IaC

ํšŒ์‚ฌ ์ธํ”„๋ผ ์ตœ์ดˆ ์„ธํŒ… ์‹œ

๋‚ด๊ฐ€ ์Šคํƒ€ํŠธ์—…์„ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด?

  • ์‹œ์Šคํ…œ ์ธํ”„๋ผ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค (๋ชจ๋‹ˆํ„ฐ๋ง, ๋กœ๊น…, CDํˆด)
  • ์ง€ํ‘œ, ํ†ต๊ณ„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค - GA, Log Analysis Report
  • ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ•œ๋‹ค
  • ํ™˜๊ฒฝ ๋ถ„๋ฆฌ - ์Šคํ…Œ์ด์ง€/์šด์˜
  • ํ”ผ์ฒ˜ ํ”Œ๋ž˜๊ทธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ์œ ์ € ๊ด€๋ฆฌ๋ฅผ ์ธํ”„๋ผ๋กœ ํ• ์ง€ ์„œ๋น„์Šค๋ณ„๋กœ ํ• ์ง€

์•„ํ‚คํ…์ฒ˜

์ผ๊ด€์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

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

์ค‘์‹ฌ๋งŒ ๋‚จ๊ธด๋‹ค

๊ฐœ๋ฐœ ๋กœ์ง, ์ค‘์•™ ๋ฌธ์„œ ๊ด€๋ฆฌ ์„œ๋น„์Šค, ์ฝ”๋“œ ์ €์žฅ์†Œ, ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ

์ธํ”„๋ผ ๊ฐœ๋ฐœ์ž์˜ ๊ด€์ ์—์„œ 3 ์š”์†Œ

์ธํ”„๋ผ - ๋ฐ์ดํ„ฐ - ์„œ๋น„์Šค

์„œ๋น„์Šค ์•ˆ์—๋Š” ๋ฐฑ์—”๋“œ, ํ”„๋ก ํŠธ, ๋””์ž์ธ, ๊ธฐํƒ€ ๋“ฑ๋“ฑ์ด ๋˜ ๋”ฐ๋กœ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ธํ”„๋ผ์—๋Š” ์‹œํ๋ฆฌํ‹ฐ, ๋กœ๊น… ๋“ฑ๋“ฑ์ด ์žˆ๊ณ , ๋ชจ๋“  ์š”์†Œ์— QA์™€ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜

  • ๋„ทํ”Œ๋ฆญ์Šค ๋ชจ๋ธ - ์ „์ฒด๊ฐ€ ํ•˜๋‚˜๋กœ ๋ฌถ์—ฌ์žˆ๋‹ค
  • ๋„ค์ด๋ฒ„ ๋ชจ๋ธ - ๊ฐ ์—ญํ• ๋ณ„๋กœ ๋ถ„๋ฆฌ๋˜์žˆ๋‹ค
  • ๋ฆฌ๋””๋ถ์Šค ๋ชจ๋ธ - ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌถ์—ฌ์žˆ๋‹ค

๊ทธ๋™์•ˆ์˜ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋ธ

  • 3 layer
  • MVC - MVVC - MTV
  • ๋„คํŠธ์›Œํฌ ๋ ˆ์ด์–ด
  • 12 Factor app
  • MSA
  • DDD
  • JAM stack
  • Clean Architecture
  • SOA

๊ทธ๋ฆฌ๊ณ 

SOA, MSA, DDD

service oriented architecture

  • ์ค‘๊ฐ„์— enterprise service bus๋ฅผ ๋‘ฌ์„œ ์„œ๋น„์Šค ๊ฐ„ ๊ณต์œ ๋ฅผ ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ๋‹น์‹œ ์‹œ๋Œ€์ƒ ํŒ€ ๊ตฌ์กฐ๊ฐ€ ๋ณ€ํ™”์— ์žฌ๋น ๋ฅด๊ฒŒ ๋Œ€์‘ํ•˜์ง€ ๋ชปํ–ˆ๊ณ , MSA์™€ ๋น„์Šทํ•œ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์กŒ์œผ๋‚˜ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • MSA์˜ ํ•ต์‹ฌ์€ ํ†ต์‹  ์ฒ˜๋ฆฌ์ด๊ณ , ์ด ์ฒ˜๋ฆฌ ํ๋ฆ„์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์„œ๋น„์Šค ๋ฉ”์‹œ๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋Š” ์„œ๋น„์Šค์˜ ์ˆ˜๊ฐ€ ๋งŽ๊ณ , ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค

์ข‹์€ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์„ฑ๊ณต์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋‚˜์˜๋ฉด ๋งํ•œ๋‹ค

  • ๋‚˜์˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ๋˜์•ผํ•œ๋‹ค
  • ์™„๋ฒฝ๋ณด๋‹ค๋Š” ์•ˆ์ •
  • DDD๋Š” ์‰ฝ๊ฒŒ ์„ค๋ช…๊ฐ€๋Šฅํ•œ๊ฐ€? ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ผ๋„ ์‰ฝ๊ฒŒ ์„ค๋ช…๋˜๋ฉด ๋œ๋‹ค. ์‰ฝ๊ฒŒ์„ค๋ช…๋˜์ง€ ์•Š์œผ๋ฉด ๋‚˜์˜๋‹ค
  • ๊ฐ์ฒด์ง€ํ–ฅ์„ ๋„˜์–ด ์ธ๊ฐ„์ง€ํ–ฅ ์ธ๊ฐ„์ค‘์‹ฌ
  • ๋‚˜์˜๋ฉด ์•ˆ๋œ๋‹ค๋Š”๊ฑธ ์ƒ๊ฐํ•˜์ง€๋งŒ ์•ˆํ‹ฐํŒจํ„ด์„ ํ”ผํ•˜๋Š” ๋ฐฉ์–ด์  ์ ‘๊ทผ๋ณด๋‹ค๋Š” ์ข‹์€๊ฑธ ์ฐพ๋Š” ๊ณต๊ฒฉ์  ์ ‘๊ทผ์„ ํ•˜๊ณ ์‹ถ๋‹ค
  • ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ๋‹ค ์ •ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ดํ•ด๊ด€๊ณ„์ž์™€ ๋จผ์ € ์š”๊ตฌ์‚ฌํ•ญ์„ ์ •์˜ํ•˜๊ณ  ํŒ€์›๋“ค๊ณผ ๊ธฐ์ˆ ์  ๋ฌธ์ œํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์˜๋…ผํ•˜๊ณ  ํŒจํ„ด์„ ๊ฐ™์ด ์ฐพ๊ณ  ์ •ํ•˜๊ฒŒ ๋˜๋Š” ๊ฑด๊ฐ€๋ณด๋‹ค. ์ถฉ์„ญํŒ€์žฅ๋‹˜์˜ ์ฟฐ์Šค๋ฅผ ์ด๋„๋Š”๊ฒŒ ์•„ํ‚คํ…์ฒ˜์˜ ๋ชจ์Šต์„ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ค€๊ฑฐ ๊ฐ™๋‹ค ์ž˜ ๊ธฐ์–ตํ•ด์•ผํ• ๋“ฏ
  • ํ‘ธ์‹œ ๊ฐœ๋ฐœํ–ˆ๋˜๊ฒŒ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ค‘๊ฐ„์— ๋ฐ˜๋ฐœ์ด ์ƒ๊ธด ์‚ฌ๋ก€์ธ๊ฑฐ ๊ฐ™๋‹ค ํ‘ธ์‹œ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„๋“ฏ. Nhn์— ์ˆ˜๋งŽ์€ ์š”์ฒญ์„ ๋ณด๋‚ธ๊ฒƒ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด api ๊ฐœ๋ฐฉ์„ ์š”์ฒญํ•˜๊ณ  ์‚ฌ์šฉํ•œ ๊ฒƒ๊นŒ์ง€

๊ฐœ๋ฐœ์ž์—์„œ ์•„ํ‚คํ…ํŠธ๋กœ - ๋งˆ์ดํด ํ‚ฌ๋ง

์•„ํ‚คํ…์ฒ˜

์ •์ฑ…๊ณผ ์„ธ๋ถ€์‚ฌํ•ญ์œผ๋กœ, ๋ฃฐ๊ณผ ๊ฐ€์ด๋“œ๋ฅผ ๊ตฌ๋ถ„. ์•„ํ‚คํ…์ฒ˜์˜ ๋ชฉํ‘œ๋Š” ์ •์ฑ…๊ณผ ์„ธ๋ถ€์‚ฌํ•ญ์„ ์ ์ ˆํžˆ ๊ตฌ๋ถ„ํ•ด ์„ธ๋ถ€์‚ฌํ•ญ์˜ ๊ฒฐ์ •์€ ์ตœ๋Œ€ํ•œ ๋ฏธ๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ

  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜

์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•์˜ ๋ชฉํ‘œ์ ์€ ์—†๋‹ค ์ข‹์€ ๊ธฐ์ค€์ ์„ ๋งŒ๋“ค์–ด์„œ ๊ทธ ๊ธฐ์ค€์ ์„ ๊ณ„์† ๊ฐœ์„ ํ•ด๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์ตœ์„ 

ํฐ ๊ทธ๋ฆผ > ์ž‘์€ ๊ทธ๋ฆผ

์„ ํƒ๊ณผ ์ง‘์ค‘, ์œ ์—ฐํ•˜๊ณ  ์œตํ•ฉ์ ์ธ ํ™˜๊ฒฝ - ๋‘ ๊ฐ€์น˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ž˜ ์œตํ•ฉํ•  ์ˆ˜ ์žˆ์„๊นŒ

  • ๋ถ„์‚ฐํ™” ํ•˜๋Š” ๊ฒƒ์ด ์‹œ๋Œ€์˜ ํ๋ฆ„
  • ์‹ฌํ”Œํ•˜๊ฒŒ ์œ ์ง€. 0์—์„œ 10์€ ์‹ฌํ”Œ์ด ์•„๋‹ˆ๋‹ค. 100์—์„œ 10์ด ์‹ฌํ”Œ
  • ์ œํ•œ์ด ํ•„์š”ํ•˜๋‹ค

์„ค์ •๊ฐ€๋Šฅํ•ด์•ผํ•˜๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘

log data ๋‚˜ db table ๋“ฑ์„ ์ดˆ๊ธฐ์— ์„ค๊ณ„ํ•ด์„œ ์ญ‰ ์จ์•ผํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๋ณ€๊ฒฝ์— ์œ ์—ฐํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค ๋ณ€๊ฒฝ์—๋Š” ๊ทผ๊ฑฐ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ• ๋•Œ๋Š” ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์‰ฝ์ง€ ์•Š๋‹ค ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•œ ๊ฒƒ๋“ค์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ

๊ด€๋ฆฌ์š”์†Œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์ผ๊ด€์„ฑ์ด ๊นจ์ง€๊ธฐ ์‰ฝ๋‹ค ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๊ณ ์ณ์•ผํ•˜๋Š” ์ง€์ ์ด ๋Š˜์–ด๋‚œ๋‹ค

ํ•œ ๋ถ€๋ถ„์˜ ๋ณ€ํ™”๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ํ•œ ๋ถ€๋ถ„์˜ ๋ณ€ํ™”๊ฐ€ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

์ฝ”๋“œ๋ ˆ์ด์•„์›ƒ

  • controller, Service, Domain, entity
  • controller์—์„œ๋Š” 1๋‹จ๊ณ„ if์™€ ๋ช…๋ฃŒํ•œ ํ•จ์ˆ˜๋“ค๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค
  • service์—๋Š” ๊ฐ„๋‹จํ•œ ์œ ๋‹›ํ•จ์ˆ˜๋ฅผ ๋ฌถ์€ ๋กœ์ง๋งŒ ์žˆ๋‹ค
  • domain์—๋Š” ๊ฐ„๋‹จํ•œ ์œ ๋‹›ํ•จ์ˆ˜๋“ค๋งŒ ์žˆ๋‹ค
  • entity๋Š” ๋ฆฌํ„ด๊ฐ’๊ณผ ๋“ฑ๋“ฑ์„ ๊ฐ์‹ธ์ฃผ๋Š” ๋ž˜ํผ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค
  • controller์™€ service ์‚ฌ์ด์— ์„ธ์„ธํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋กœ์ง์€ facade์— ๋“ค์–ด๊ฐ„๋‹ค

์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์ž˜ ๋˜๊ฒŒ ํ•˜๋ ค๋ฉด?

  • ์ •ํ™•ํ•œ ์ •์ฑ…์„ ํ†ตํ•ด ์—ญํ• ์„ ๋ถ„๋ฆฌ, ์œ„์ž„ํ•œ๋‹ค

์ž๋™ํ™”

์ž๋™ํ™”๋Š” ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๊ธฐ ์‰ฝ๋‹ค ์กฐ์‹ฌํžˆ ๋„์ž…ํ•ด์•ผํ•œ๋‹ค

๋ฉ”ํƒ€์ ์œผ๋กœ

ํ๋ฆ„๋งŒ ๋งŒ๋“ค๊ณ  ์„ธ๋ถ€์‚ฌํ•ญ์€ ์ž๋™ํ™”ํ•ด์„œ ์•Œ์•„์„œ ์ผํ•˜๊ฒŒ ํ•œ๋‹ค

service output์ด feedback์ด ๋˜๋„๋ก

  • ํ…Œ์ŠคํŠธ ๋ฌธ์„œ ์ž๋™ํ™”
  • ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฌธ์„œํ™”
  • api ๋ฌธ์„œํ™”

์—…๋ฌด์ž๋™ํ™” ํ•œ๋ฒˆ์— ์™œ ์•ˆ๋˜๋Š”๊ฐ€

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

์ž๋™ํ™”์˜ ๋ฌธ์ œ์  (์ž๋™ํ™”๋ณด๋‹ค๋Š” ์ผ๊ด„์ ์šฉ์˜ ๋ฌธ์ œ์  ์ผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค)

์ž๋™์ด ์ž๋™์œผ๋กœ ์ž˜ ๋™์ž‘์•ˆํ•˜๋Š” ๊ฑธ ์ž์ฃผ ๋ณด๊ณ  ์Šค๋งˆํŠธ๊ฐ€ ์Šค๋งˆํŠธํ•˜์ง€ ์•Š์•˜๊ณ  ํ•œ๋ฒˆ์—๊ฐ€ ํ•œ๋ฒˆ์— ๋˜์ง€ ์•Š์•˜๋‹ค ์ „์ฒด๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์งœ์„œ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ๊ฒƒ๋„ ํ•ญ์ƒ ์‹คํŒจํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋‚˜์˜จ๋‹ค.

AI์™€ ์ž๋™ํ™”

  • ์‚ฌ๋žŒ์ด ํ•˜๋ฉด ๋ˆ„๋ฝ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค
  • ์Šคํฌ๋ฆฝํŠธ๋กœ ํ•˜๋ฉด ๊ธฐ๊ณ„์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์ •ํ•ด์ง„ ํผ์ด ์•„๋‹ˆ๋ฉด ์ด์ƒํ•œ๊ฑธ ๋ง‰ ๊ฐ€์ ธ์˜จ๋‹ค
  • AI๋กœ ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋งค๋ฒˆ ๋‹ค๋ฅด๊ณ  ์ •ํ™•ํ•˜์ง€ ์•Š๋‹ค

CSP

Communicating Sequential Processes golang์˜ groutine์˜ ๋™์ž‘ ๋ฐฉ์‹์ด์ž, ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋˜์žˆ๋Š” ์ž์›๋“ค์ด ์„œ๋กœ ํ†ต์‹ ํ•  ๋•Œ ํšจ๊ณผ์ ์ธ ๋ชจ๋ธ. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์ˆ˜๋งŽ์€ ์„œ๋น„์Šค๋“ค ๊ฐ„์˜ ์—ฐ๊ฒฐ๊ณผ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ hashicorp์˜ ์„ ํƒ

๊ด€๋ จ ๋ฐฑ๋งํฌ


ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ

์ตœ์†Œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋จผ์ € ์ค€๋น„ํ•ด๋†“๊ณ  ๊ฑฐ๊ธฐ์— ํ•„์š”์— ๋”ฐ๋ผ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ์ผ์ • ๋ฒ”์œ„ ์ด์ƒ ์ปค์ง€๋ฉด ๋‹ค์Œ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ค€๋น„ํ•œ๋‹ค.

component

๊ธฐ๋ณธ

  • db
  • backend: lambda
  • frontend: nettlify/now/surge
  • file: s3
  • image: cloudinary
  • con: ifttt
  • ํ/์บ์‹œ: redislabs
  • design: figma
  • domain
  • dns
  • MQ

์ถ”๊ฐ€

  • ์˜คํ† ์Šค์ผ€์ผ๋ง 2~8๊ฐœ ํŒŒ๋“œ๋กœ ์œ ์ง€
  • ingress - ๋‚ด๋ถ€ ์•„์ดํ”ผ ์ „๋‹ฌ์šฉ
    • tls์ธ์ฆ์„œ, failover, ๋กœ๊น…, ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์ž๋™dns, ssl, ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ: CloudFlare Proxy -> AWS L4 NLB
  • cdn
  • secret - kubeseal
  • clickhouse - ๋ถ„์„๋ฐ์ดํ„ฐ
  • ๋ชจ๋“  ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ•œ ๊ณณ์— ์ €์žฅํ•ด๋†“๊ณ  ๋Œ์–ด๋‹ค์“ฐ๊ธฐ?
  • ์˜ค๋ฅ˜ ์ถ”์ 
  • profiling - cProfile, snakeviz
  • ์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ถ„์‚ฐ - haproxy and zookeeper
  • ๋Œ€๊ธฐ์—ด
  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ํ›„ ํ—ฌ์Šค์ฒดํฌ ํ•ด์„œ ์ด์ƒ ๋ฐœ์ƒ์‹œ ์ž๋™ ์žฌ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
  • ์„œ๋ฒ„ ์ฆ์„ค ํ™•์žฅ ์šฉ์ด
  • ๋‹ค์šด๋˜๋„ ๋Œ€์‘ ๊ฐ€๋Šฅ(failover)
  • when would you use request/reply and publish/subscribe
    • ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ ์•„ํ‚คํ…์ฒ˜

Security

  • how to manage ssh key?
    1. make every each computer
    2. keep other storage

Tool#์„œ๋ฒ„ ๋ณด์•ˆ ์„ค์ •

jwt, oauth, session

  • token can make easy check current users count?

double check, error handling, logging, security

reference

SSH

ssh ์ ‘์† ํ›„ ์ƒ๊ธฐ๋Š” ํŒŒ์ผ

  • .known_hosts
  • .authorized_keys
  • authorized_keys์—๋Š” pubํ‚ค๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. ์„œ๋ฒ„์ธก์—.

SSH ์™€ TLS๋ฅผ ๊ฐ™์€ ์›๋ฆฌ๋กœ ์ƒ๊ฐํ–ˆ๋‹ค.

  • ssh์—๋„ public_key์™€ private_key๊ฐ€ ์žˆ์ง€ ์•Š์€๊ฐ€
  • TLS์—๋Š” crt์™€ key๊ฐ€ ์žˆ๋‹ค,
  • TLS = RSA + ๋Œ€์นญํ‚ค
  • HTTPS๋Š” HTTP + TLS
  • ํ•ด์‹œ ํ•จ์ˆ˜ MD5, SHA <-> ๋Œ€์นญํ‚ค AES, ๊ณต๊ฐœํ‚ค RSA

SSL/TLS

  • HTTP๋ฅผ HTTPS๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š”๊ฒŒ TLS ์—ฐ๋™ํ•˜๋Š” ๊ฑฐ
  • SSL์€ ์ฒ˜์Œ ๋‚˜์™”์„ ๋•Œ ์ด๋ฆ„. ํ˜„์žฌ๋Š” TLS๋ผ๊ณ  ๋ถˆ๋ฆผ
  • SSL3.0 ์ด TLS1.0๊ณผ ๊ฐ™์Œ
  • TLS 1.2๊ฐ€ 2008๋…„ ๋ฒ„์ „์ด๊ณ  TLS1.3์ด 2018๋…„์— ๋‚˜์˜ด
  • ๋นจ๋ผ์ง€๊ณ , ๋‹จ์ˆœํ™”๋˜์—ˆ๋‹ค.
  • nginx๋‚˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ TLS1.3์ด ์ง€์›๋˜์–ด์•ผ ํ•œ๋‹ค

RSA

RSA๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด๋„ ์›๋ž˜์˜ ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†๋Š” ์†Œ์ˆ˜์˜ ์†Œ์ธ์ˆ˜๋ถ„ํ•ด์˜ ์–ด๋ ค์›€์„ ํ†ตํ•ด ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ์„ฑ์„ ๊ฐ€์ง„๋‹ค. ์ด๊ฒŒ TLS์—์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”๊ฑฐ์ง€? ๋น„๋ฐ€ํ‚ค๊ฐ€ ์›๋ž˜์˜ ๊ฐ’์ด๊ณ  ๊ณต๊ฐœํ‚ค๊ฐ€ ๊ฒฐ๊ณผ๊ฐ’์ธ๊ฐ€?

๊ณต๊ฐœํ‚ค, ๋Œ€์นญํ‚ค

  • ๊ณต๊ฐœํ‚ค๋Š” ๋น„๋ฐ€ํ‚ค๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์ ์—์„œ์˜ ์žฅ์ ์ด ์žˆ๋‹ค.
  • ๋Œ€์‹  ๊ณต๊ฐœํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค?
  • ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ๊ฒƒ์€ ๋Œ€์นญํ‚ค๊ฐ€ ์—†์œผ๋ฉด ๋ณผ ์ˆ˜ ์—†๋‹ค.
  • ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹๋งŒ์œผ๋กœ๋Š” ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋‹ค.
    • ๋Œ€์นญํ‚ค๊ฐ€ ํ•ด๋…์„ ํ•ด์•ผํ•˜๋Š”๋ฐ, ์„œ๋ฒ„๋Š” ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ชฝ์ด๋‹ˆ๊นŒ.
  • ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™” ๋œ ๊ฒƒ์„ ๋ณตํ˜ธํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์€ ํŒŒ์ผ์˜ ์•ˆ์ „์„ ๋ณด์žฅํ•ด์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ํŒŒ์ผ์˜ ์‹ ์›์„ ํ™•์ธํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

TLS

public ๊ณผ private.

  • private ๋Š” ๋ชฉ์ ์ง€. ํ•œ ๊ณณ์—์„œ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋‹ค
  • public ์€ ์ ‘์†์ž. ๋ชจ๋‘๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ๊ฐ–๋Š”๋‹ค

ci ์ด์šฉ ์‹œ๋‚˜ pushํ•  ๋•Œ ssh permission์„ ํ™•์ธํ•˜๋ ค๋Š” ๋ชฉ์ ์ธ๊ฐ€?

  • ci ํˆด์—์„œ ์„œ๋ฒ„๋Š” ci ์„œ๋ฒ„๊ฐ€ ๋˜๋Š” ๊ฒƒ์ธ๊ฐ€? ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‚ด๊ฐ€ ๋˜๊ณ ?
    • ci ํˆด์ด ์ ‘์†์ž๊ณ , github ์ €์žฅ์†Œ๊ฐ€ ์„œ๋ฒ„๊ฐ€ ๋˜์–ด์„œ, ์„œ๋ฒ„์—์„œ pubํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์ ‘์†์ž๊ฐ€ private key๋ฅผ ๊ฐ€์ง„๋‹ค
    • ์„œ๋ฒ„๊ฐ€ ์ ‘์†์ž๊ณ , ๋‚˜๋Š” ๋ชฉ์ ์ง€
  • ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์—์„œ๋Š” ๋…ธํŠธ๋ถ์—์„œ ์ƒ์„ฑํ•œ ssh ๋ฅผ cloud instance์— ๋„˜๊ธฐ๊ณ  ๋‚ด๊ฐ€ ๋‹ค์‹œ public์ด ๋˜์–ด์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€?
    • ec2์—์„œ pemํ‚ค๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์€ ec2๊ฐ€ ๋ชฉ์ ์ง€๊ณ  ๋‚ด๊ฐ€ ์ ‘์†์ž
    • private๋Š” ๋ฏธ๋ฆฌ aws์— ์˜ฌ๋ ค๋†“๊ณ  ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ๋‹ค ์“ฐ๋„๋ก ํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค
    • aws ์—์„œ๋„ pubํ‚ค๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ด๊ณ , ๋น„๋ฐ€ํ‚ค๋Š” ๋…ธํŠธ๋ถ์— ๋‘”๋‹ค
  • ํฌ๋งท์„ ๋Œ€๋น„ํ•ด์„œ ssh key๋ฅผ ํŒŒ์ผ๋กœ ๊ฐ–๊ณ  ์žˆ์œผ๋ ค๊ณ  ํ•˜๋Š”๋ฐ private key๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด๋„ ๋˜๋‚˜?
  • ๊ณต๊ฐœํ‚ค๋ฅผ ์„œ๋ฒ„์— ๋“ฑ๋กํ•ด์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋น„๋ฐ€ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋‹ค?
  • authorized_keys์— ๊ณต๊ฐœ ํ‚ค๋ฅผ ๋ณต์‚ฌํ•ด ๋„ฃ์œผ๋ฉด, ์ ‘์†ํ•˜๋Š” ๊ณณ์—์„œ ๋น„๋ฐ€ํ‚ค๋ฅผ ๋ฌผ์–ด๋ณธ๋‹ค
  • .pem ํŒŒ์ผ์€ ๋ญ์ง€ = ํ˜•ํƒœ๋งŒ ๋‹ค๋ฅธ private key์™€ ๊ฐ™์€ ์šฉ๋„
  • 2025-Archive#๋‚ด๊ฐ€ ์˜คํ•ดํ•œ SSH key

GPG - ๊ฐœ์ธ์šฉ ๋ฉ”์‹œ์ง€๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์“ด๋‹ค

  • ๋‚ด ๊ณต๊ฐœํ‚ค๋Š” ๋งˆ๊ตฌ ๋ฟŒ๋ฆฐ๋‹ค

  • ๊ทธ๋Ÿฌ๋ฉด ๋‚ด ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋‚ด ๋น„๋ฐ€ํ‚ค๋กœ๋งŒ ์—ด ์ˆ˜ ์žˆ๋‹ค.

  • ๋‚ด ๊ณต๊ฐœํ‚ค๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ณ  ๋‚ด ์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜๋Š” ์—†๋‚˜? ์ˆ˜์‹ ์šฉ์ธ๊ฐ€?

  • ์ฃผ์ธ์žฅ์˜ ์‚ฌ์ดํŠธ์— ๊ณต๊ฐœํ‚ค๊ฐ€ ์˜ฌ๋ ค์ ธ ์žˆ์–ด๋„ ๊ทธ๊ฒƒ์ด ์กฐ์ž‘๋œ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ CA ์—…์ฒด์—์„œ ์ด๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค.

  • SSH์—์„œ pubํ‚ค๋Š” gpgํ‚ค์ฒ˜๋Ÿผ ๋งˆ๊ตฌ ๊ณต์œ ํ•ด๋„ ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ์ง€ ์•Š๋‚˜? pubํ‚ค๋งŒ ์žˆ์œผ๋ฉด ์„œ๋ฒ„์— ๋งˆ์Œ๋Œ€๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ

    • pubํ‚ค๊ฐ€ ์„œ๋ฒ„๊ฐ€ ๊ฐ–๋Š” ํ‚ค๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” private key๋ฅผ ๊ฐ–๋Š”๋‹ค.
    • ๊ทธ๋ž˜์„œ pubํ‚ค๊ฐ€ ๋งŽ์ด ํผ์ง€๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ๋งŽ์€ ๊ณณ์„ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

๋น„๋ฐ€ํ‚ค๋„ ์–ด์ฐจํ”ผ ํ‚ค๋ฅผ ์ง€์ผœ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ•˜๋‚˜์˜ ๋น„๋ฐ€ํ‚ค๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ์ง€ํ‚ค๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™๋‹ค. ๊ทผ๋ฐ ๋น„๋ฐ€ํ‚ค๋ฅผ ๊ณต์œ ํ•œ ์ ์ด ์žˆ๋ƒ ์—†๋ƒ์˜ ์ฐจ์ด๋กœ ๋ณด์•ˆ์„ฑ์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

  • HTTPS๋„ ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์ฒ˜๋Ÿผ ์•”ํ˜ธํ™”๋ฅผ ๊ฐœ์ธํ‚ค๋กœ ํ•˜๋ฉด ๋น„๋ฐ€ํ‚ค๋กœ ๋ณตํ˜ธํ™”๋ฅผ ํ•ด์•ผํ•˜๋Š” ๋ฐฉ์‹์ธ๊ฐ€?
  • ๊ณต๊ฐœํ‚ค๋Š” ๋ˆ„๊ตฌ๋‚˜ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋น„๋ฐ€ํ‚ค๋กœ ์•”ํ˜ธํ™” ํ•œ ๊ฒƒ์„ ๊ณต๊ฐœํ‚ค๋กœ ๋ˆ„๊ตฌ๋‚˜ ์—ด ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‚ด์šฉ์ด ์ง€์ผœ์ง€์ง€๋Š” ์•Š์„ ๊ฒƒ ๊ฐ™๋‹ค.
    • ๊ทธ๋ž˜์„œ End-2-End ์•”ํ˜ธํ™”๋„ ์‹ ๊ฒฝ ์จ์•ผ ํ•œ๋‹ค.
    • HTTPS์—์„œ ์ธ์ฆ์„œ๋กœ ์‹ ์›์„ ํ™•์ธํ•˜๊ณ , ๊ทธ ํ†ต์‹ ์—์„œ ํ™•์ธํ•œ ๋žœ๋ค๊ฐ’์œผ๋กœ ๋‹ค์‹œ ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ ํ‚ค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•œ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฒ˜์Œ ์ ‘์†ํ•  ๋•Œ ๋ณด๋‚ด์ค€ ๊ณต๊ฐœํ‚ค๋กœ ๋žœ๋คํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ์„œ๋ฒ„์— ์ฃผ๊ณ , ๊ทธ ํ‚ค๋กœ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•œ๋‹ค. ์ฆ‰, ์ฒ˜์Œ ๋งŒ๋“ค์—ˆ๋˜ ์ธ์ฆ์„œ๋Š” ์‹ ์›ํ™•์ธ์šฉ์ด๋‹ค.
    • ์‹ ์› ํ™•์ธ์€ ์ œ 3์ž๊ฐ€ ํ•œ๋‹ค. (CA ์—…์ฒด)
    • ์ฆ‰, HTTPS๋Š” ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹๊ณผ ๋Œ€์นญํ‚ค(์•”ํ˜ธ) ๋ฐฉ์‹์„ ๋ชจ๋‘ ์“ด๋‹ค.
    • https://bravenamme.github.io/2019/12/03/https-2/
  • ๋น„๋ฐ€ํ‚ค๋ฅผ ์„œ๋ฒ„๊ฐ€ ๊ฐ–๊ณ , ๊ณต๊ฐœํ‚ค๋Š” ์•„๋ฌด๋‚˜ ๊ฐ–๋Š”๋‹ค. ๊ทผ๋ฐ CI์—์„œ ๋น„๋ฐ€ํ‚ค๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด์•ผํ•˜์ง€? ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ๋น„๋ฐ€ํ‚ค๋ฅผ ๊ฐ–๋Š”๋‹ค.
    • ci ์„œ๋ฒ„๊ฐ€ ๋น„๋ฐ€ํ‚ค๋ฅผ ๊ฐ–๋Š” ๊ฒฝ์šฐ๋Š”?
    • ๋น„๋ฐ€ํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ–๋Š”๋‹ค. CI secret์— ๋น„๋ฐ€ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด builder์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. pubํ‚ค๋Š” ์–ด๋–ป๊ฒŒ ๋“ฑ๋กํ–ˆ๋”๋ผ? ๋‹ค์‹œ ๋™์˜์ƒ ๋ด์•ผ๊ฒ ๋‹ค.
      • pubํ‚ค๋ฅผ deploy key์— ๋„ฃ๊ณ  private key๋ฅผ secret์— ๋„ฃ์—ˆ๋‹ค. github๋„ ์ด๋ ‡๊ฒŒ ๋˜๋‚˜? ๋˜๋„ค

HTTPS

  • ์„œ๋ฒ„๊ฐ€ ์ž์‹ ์ž„์„ ์ฆ๋ช…ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š”?
    • ํด๋ผ์ด์–ธํŠธ๋Š” ์–ด์ฐจํ”ผ ๋ถˆ๋Ÿ‰ํ•œ ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€๋„ ์ž‘์—…์ด ์ •์ƒ์ ์œผ๋กœ ๋ ํ…๋ฐ.
    • ์ค‘๊ฐ„์— ๊ธธ์„ ๊บพ์–ด์„œ ์ž์‹ ์—๊ฒŒ ๊ฒฐ์ œํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ๋ง‰์„ ์ˆ˜ ์žˆ๊ฒ ๋‹ค.
    • ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ ํƒˆ์ทจ๋ฅผ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์—ญํ• ์ด ์ฃผ ์—ญํ• ์ธ๊ฐ€?
    • ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๊ฑฐ๋‚˜ ์ด์ƒํ•œ ๋ฐ๋กœ ์š”์ฒญํ•˜๋Š” ๊ฑธ ๋ง‰๊ณ  (cors)
    • ๋‚ด๊ฐ€ ๋“ค์–ด์˜จ ์‚ฌ์ดํŠธ๊ฐ€ ๋‚ด๊ฐ€ ๋“ค์–ด๊ฐ€๋ คํ–ˆ๋˜ ๊ทธ ์„œ๋ฒ„๊ฐ€ ๋งž๋Š”์ง€ ์ธ์ •๋ฐ›๊ธฐ ์œ„ํ•ด
  • HTTPS๋Š” ๊ตญ๊ฐ€์—์„œ ๋ง‰๊ธฐ ํž˜๋“  ์ด์œ ๋Š”?

OAuth

๋ธŒ๋ผ์šฐ์ €, ์‚ฌ์šฉ์ž, ์„œ๋ฒ„, Oauth ์ œ๊ณต์ž

์„œ๋ฒ„๋Š” ๋ธŒ๋ผ์šฐ์ €์— Oauth๋ฅผ ํ‘œ์‹œํ•œ๋‹ค ์‚ฌ์šฉ์ž๋Š” ๋ธŒ๋ผ์šฐ์ €์— Oauth ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ฃผ๋ฉด์„œ ์‹ ํ˜ธ๋ฅผ ์ค€๋‹ค ์„œ๋ฒ„๋Š” Oauth ์ œ๊ณต์ž์—๊ฒŒ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ค€๋‹ค Oauth ์ œ๊ณต์ž๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ธ๋‹ค ์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„์— ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ธ๋‹ค ์„œ๋ฒ„๋Š” Oauth ์ œ๊ณต์ž์—๊ฒŒ ์ฝ”๋“œ์™€ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋ณด๋‚ธ๋‹ค Oauth ์ œ๊ณต์ž๋Š” ํ™•์ธ ํ›„ ์„œ๋ฒ„์— ํ† ํฐ์„ ์ค€๋‹ค

์‚ฌ์šฉ์ž -> ์„œ๋ฒ„ -> Oauth (์‚ฌ์šฉ์ž ์ •๋ณด) ์‚ฌ์šฉ์ž <--------- Oauth (์ฝ”๋“œ) ์‚ฌ์šฉ์ž -> ์„œ๋ฒ„ -> Oauth (์‚ฌ์šฉ์ž ์ •๋ณด + ์ฝ”๋“œ) ์„œ๋ฒ„ <- Oauth (์ธ์ฆ ํ›„ ํ† ํฐ ์ œ๊ณต)

์„œ๋ฒ„๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์›๋ž˜ ํ•˜๋˜ ์ผ์„ ๊ทธ๋Œ€๋กœ ํ•  ์ˆ˜ ์žˆ๋‚˜?

oauth2.0

  • ๋กœ๊ทธ์ธ
  • ํ† ํฐ ํš๋“
  • ํ† ํฐ ๋ฐ ์•„์ด๋””๋กœ ๋‚ด๋ถ€ ์ €์žฅ
  • ํ† ํฐ์„ ์‚ฌ์šฉ์ž ํ—ค๋”์— ๊ฐ–๋„๋ก ํ•˜๊ธฐ

ํ† ํฐ ํ™•์ธ ์‚ฌ์šฉ์ž ํ™•์ธ ์š”์ฒญ ๋™์ž‘ ์‹คํ–‰

user ์„ธ์…˜ ๊ด€๋ฆฌ

ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋ฅผ ์Šค์ผ€์ผ ์•„์›ƒํ•ด์„œ ์—ฌ๋Ÿฌ ๋Œ€๋กœ ๋งŒ๋“ค์–ด๋†“์œผ๋ฉด ์œ ์ € ์ •๋ณด๊ฐ€ ์–ด๋А ๊ณณ์—๋Š” ์žˆ๊ณ , ์–ด๋””์—๋Š” ์—†๋Š” ์ƒํ™ฉ์ด ๋ฒŒ์–ด์ง„๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ช‡๊ฐœ ์žˆ๋Š”๋ฐ.

sticky

  • ์œ ์ €๊ฐ€ ์ฒ˜์Œ ์ ‘์†ํ•œ ์„œ๋ฒ„์— ๊ณ„์† ์ ‘์†ํ•˜๋„๋ก ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„๊ฐ€ ๋ป—์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ ์‹คํŒจ์ง€์ ์ด ๋œ๋‹ค.

clustering

  • ๊ฐ ์„œ๋ฒ„๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•ด์„œ ๋™๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ์‹
  • ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ํ•˜๋Š”๋ฐ ์ž์›์ด ๋งŽ์ด ์†Œ๋น„๋  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋กœ ์„ธ์…˜ ์„œ๋ฒ„๋ฅผ ๋‘๋Š” ๋ฐฉ์‹

  • ์ ‘์† ์‹œ ์„ธ์…˜ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ์‹
  • ๊ด€๋ฆฌ ์ง€์ ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
  • OAuth๊ฐ€ ์ด๋ฅผ ๋Œ€์‹ ํ•ด์ค€๋‹ค.
    • ๋Œ€์‹  ์œ ์ € ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•ด์„œ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์„œ๋น„์Šค ๊ฐœ์„ ์„ ์œ„ํ•ด.

https://chagokx2.tistory.com/93

reference


Micro Service Architecture

MSA ๋Š” ์ž‘์€ ๊ทœ๋ชจ์—์„œ๋Š” ๊ณผํ•œ ๋А๋‚Œ์ด ์žˆ๋‹ค ๋ชจ๋†€๋ฆฌ์Šค๋กœ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ๊ฐ€ ๋  ๊ฒƒ์„ MSA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ด€๋ฆฌํฌ์ธํŠธ๊ฐ€ ์—„์ฒญ ๋งŽ์•„์ง„๋‹ค

  • every node make end-point, http, grpc
    • need documentation
  • flexible micro service. it can be split and compose
  • logging and visualization
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ์ง€์ ์„ ๋ฐ”๋กœ ํ™•์ธํ•  ๋ฐฉ๋ฒ•์€?

๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋“ฏ์ด ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ ์ƒ์˜ ์†ํ•ด๊ฐ€ ์žˆ๋‹ค ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜๋Š” ๊ด€๋ฆฌํ•  ์ง€์ ์ด ๋Š˜์–ด๋‚˜๋Š” ๋‹จ์ ์ด ์žˆ์ง€ ์•Š๋‚˜

  • ๋ฉ”์‹œ์ง€ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ ํ†ต์‹ 

  • ์‚ฌ๊ฐ€ ํŒจํ„ด - ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•ด

  • ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„

  • ์ด๋ฒคํŠธ ์†Œ์‹ฑ ํŒจํ„ด

  • API

  • ์„œ๋น„์Šค ๋ฉ”์‹œ

  • ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

  • ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ

  • ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค

  • API gateway, ์„œ๋น„์Šค ๋ฉ”์‹œ, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ์ฐจ์ด๋Š”?

    • ์„œ๋น„์Šค ๋ฉ”์‹œ ์•ˆ์— ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ๊ฐ€ ๋ณดํ†ต ๋‚ด์žฅ๋˜์žˆ๋‹ค
    • api gateway๋Š” ์™ธ๋ถ€์—์„œ์˜ ์ ‘์†, ์„œ๋น„์Šค ๋ฉ”์‹œ๋Š” ๋‚ด๋ถ€์˜ ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ

์™œ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์ธ๊ฐ€

  • ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ•„์—ฐ์ ์œผ๋กœ ์„œ๋น„์Šค ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ํ•„์š”ํ•˜๊ณ , ๋น„๋™๊ธฐ ํ†ต์‹ ๊ณผ ๋™๊ธฐ ํ†ต์‹ ์„ ์ž˜ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

    • ๋™๊ธฐ๋Š” API๋ฅผ ์ด์šฉํ•ด์„œ, ๋น„๋™๊ธฐ๋Š” ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์ด์šฉํ•ด์„œ.
    • ๊ฐ ์„œ๋น„์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์‹œ์ง€ ํ์— ๋ฐœํ–‰ํ•˜๊ณ  ๊ตฌ๋…ํ•˜๋Š” ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ณต์œ , ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ์ผ์ผ์ด ๊ด€๋ฆฌํ•˜๊ธฐ ๋ณด๋‹ค ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ์ž์œ ๋กญ๊ฒŒ ์ƒ์„ฑ๊ณผ ์šด์˜์ด ๋˜๊ฒŒ ํ•ด์•ผ๊ฒ ๋‹ค

  • ๋‹จ์ผ๊ณ ์žฅ์ ์ด ์—†๋„๋ก ๋…ธ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘์–ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค.

  • ํฐ ํŒ€์„ ์ž‘์€ ํŒ€์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ํŒ€ ๊ฐ„ ๋Œ€ํ™”์— ์žฅ๋ฒฝ์ด ์ƒ๊ธฐ๊ณ , ์•ˆ๊ฐœ๊ฐ€ ์ƒ๊ธด๋‹ค. ๋‹ค๋ฅธ ํŒ€์˜ ์˜์—ญ์—๋Š” ์•ˆ๋“ค์–ด๊ฐ€๋ ค๊ณ  ํ•˜๊ณ , ๊ทธ ์ชฝ์—์„œ ์ผ์–ด๋‚œ ์ผ์ด ์ „๋‹ฌ์ด ์•ˆ๋  ๋•Œ๊ฐ€ ๋งŽ์•„์ง„๋‹ค. ์–ด๋–ป๊ฒŒ ์ด ์žฅ๋ฒฝ์„ ์—†์•จ ์ˆ˜ ์žˆ์„๊นŒ

  • ํ•ต๊ฐ€์กฑ์— ์ด์–ด 1์ธ๊ฐ€๊ตฌ๊ฐ€ ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ๋Œ€๊ฐ€์กฑ์ผ ๋•Œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋˜ ๊ฒƒ๋“ค์ด ์ด์ œ๋Š” ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

  • ์ˆ˜ํ‰์ ์ธ ์—ฐ๊ฒฐ๋ง์ด ๋งŒ๋“ค์–ด์ ธ์„œ ์ •๋ณด๊ณต์œ ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผํ•œ๋‹ค. ํšŒ์‚ฌ์—์„œ ํŒ€์žฅ์ด ์žˆ๊ณ  ํŒ€์žฅํšŒ์˜๋ฅผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๋А๋‚Œ์ด์ง€๋งŒ ์ˆ˜ํ‰์ ์ธ ๊ด€๊ณ„์˜ ์—ฐ๊ฒฐ๋ง์œผ๋กœ. (ํ˜„์žฌ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ด ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ? Web 2.0)

  • ์–ด์ฐจํ”ผ ํ•œ ์‚ฌ๋žŒ์ด ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค? ๊ทธ๋ž˜์„œ ๋ชจ๋†€๋ฆฌ์Šค์—์„œ ์„œ๋กœ ์—ฎ์—ฌ์žˆ๋˜ ๊ฒƒ์„ ๋งˆ์ดํฌ๋กœํ™”ํ•ด์„œ ํŽธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š”๊ฑฐ์ง€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋ฌดํ•œ์ • ๋งŽ์ด ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉ์ ์€ ์•„๋‹ ๊ฒƒ์ด๋‹ค. ํ•œ ์‚ฌ๋žŒ์ด ๋‹ค๋ฃจ๋Š” ์„œ๋น„์Šค๋ฅผ ์ œํ•œ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

์ ‘๊ทผ ํฌ์ธํŠธ

  • ๋‹จ์ผ ๊ณ ์žฅ ์ง€์ ์„ ์—†์•ค๋‹ค
  • ์˜์กด ์˜์—ญ์„ ๋ถ„๋ฆฌํ•œ๋‹ค
  • ๋น ๋ฅด๊ณ  ๊ฐ€๋ฒผ์šด ์‚ฌ์ด์ฆˆ๋ฅผ ์œ ์ง€ํ•œ๋‹ค

์ด๋ฅผ ์–ด๋ ต๊ฒŒ ํ•˜๋Š” ์š”์†Œ

  • API endpoint๊ฐ€ ๋งŽ์•„์ ธ์„œ ์ด๋ฅผ ์ผ์ผ์ด ๊ด€๋ฆฌํ•˜๊ธฐ ํž˜๋“ค์–ด API Gateway๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•˜๋ ค ํ•˜๋Š”๋ฐ ์ด API gateway๊ฐ€ ๋‹จ์ผ ๊ณ ์žฅ์ ์ด ๋˜๋ฒ„๋ฆฐ๋‹ค
  • ํฉ์–ด์ ธ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ํ•ฉ์ณ์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค
  • ์ฒ˜์Œ์—๋Š” ์ž‘์€ ์‚ฌ์ด์ฆˆ์ง€๋งŒ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ์‚ฌ์ด์ฆˆ๋Š” ํ•„์—ฐ์ ์œผ๋กœ ์ปค์ง„๋‹ค.

์ด์— ๋Œ€ํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋Œ€์‘๋ฐฉ๋ฒ•

  • sidecar ํŒจํ„ด์œผ๋กœ API gateway๋ฅผ ์—†์• ๊ณ  ๊ฐ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐ์ ์„ ๋ถ™์ธ๋‹ค
  • SAGA, CQRS
  • ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ง€๋ฉด ๋‹ค์‹œ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • ๋ฏธ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ„ ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ๊ณผ ์ž‘์—… ์ผ๊ด€์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•œ๋ฐ ์ด๋ฅผ ์ปค๋ฐ‹๊ณผ ์ ์šฉ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ณ  ์‚ฌ๊ฐ€ ํŒจํ„ด์„ ์ด์šฉํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค

๊ถ๊ธˆ

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ตฌ์กฐ์ฒ˜๋Ÿผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๋ถ„๋ฆฌํ•ด๋†“๊ณ  ์ค‘์•™์— ๋ชจ์•„์„œ ์ฒ˜๋ฆฌํ•˜๋‹ค๊ฐ€ ์š”์ฒญ์ด ์ž์ฃผ ์˜ค๊ฐ„๋‹ค ์‹ถ์œผ๋ฉด ์—ฐ๊ฒฐํ•˜๋Š” ๊ธธ์„ ์ถ”๊ฐ€?

ํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋‹จ์œ„๋ฅผ ๋กœ์ง - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - ์‚ฌ์ด๋“œ์นด๋กœ ๋†“๊ณ  ์‚ฌ์šฉ ์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํˆด์„ ์ƒ๊ฐํ•ด๋ณธ๋‹ค

์ค‘์•™์— ๋ฐ์ดํ„ฐ๋“ค์ด ํ•˜๋‚˜๋กœ ๋ฌถ์ธ๋‹ค ํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ์š”์ฒญ์ด ์˜ค๋ฉด ๊ทธ ์‘๋‹ต์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค ๋ฉ”์‹œ์ง€๋Š” ์ค‘์•™, ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ „๋‹ฌ๋˜๊ณ , ๊ด€๋ฆฌ์ž๋Š” ํ”ผ๋“œ๋ฐฑ์œผ๋กœ ์ค‘์•™์—๋Š” ์—…๋ฐ์ดํŠธ๋กœ ์ด์šฉ๋œ๋‹ค

kubernetes๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„œ๋น„์Šค๋กœ ์ชผ๊ฐœ๋ฉด microservice์ธ๊ฐ€? micro๋กœ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋ฉด microservice์ธ๊ฐ€? monolith์™€ ๊ตฌ๋ถ„๋˜๋Š” microservice์˜ ํŠน์ง•์€ ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ธ๋ฐ, micro๋Š” ์–ด๋–ค ๊ตฌ์„ฑ ๋ฐฉ์‹์ธ๊ฐ€

์œ ์ € ์ •๋ณด ์œ ์ง€ํ•ด์„œ ๊ณ„์† ๋ถˆ๋Ÿฌ์˜ค๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์€?

๋ชจ๋†€๋ฆฌ์Šค์—์„œ ํ•จ์ˆ˜ํ˜ธ์ถœ์„ ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ์ด ๋Œ€์ฒดํ–ˆ์„ ๋•Œ ๊ณ ์†์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ๊ฐ€? ๋ฐฐ๋ฏผ์€ ๋˜๊ธด ํ•˜๋‚˜๋ณด๋‹ค

  • ๊ฐ™์€ ๋„คํŠธ์›Œํฌ์— ์žˆ๋‹ค๋ฉด rpc๋กœ ์„œ๋น„์Šค๊ฐ€ ๋‚˜๋ˆ ์ ธ ์žˆ์œผ๋ฉด rpc๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ทจํ•ฉํ•ด api gateway๊ฐ€ ๋ชจ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ๋œ๋‹ค

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” RBAC๊ฐ€ ์–ด๋А ์ˆœ๊ฐ„์— ๋™์ž‘ํ•˜๋Š”๊ฑฐ์ง€?

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ library๋ฅผ ํ•œ๊ณณ์— ๋ชจ์•„์„œ ๋ณด์—ฌ์ฃผ๊ณ  ์‰ฝ๊ฒŒ ํ˜ธ์ถœํ•ด ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ?

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋‚ด ์ƒํ™œ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๋‹ค ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šคํ™”๋„ ๋ฌดํ•œ์ • ๋งŽ์ด ํ• ๊ฒŒ ์•„๋‹ˆ๋ผ ํƒˆ์ถœ์ง€์ ์„ ๋งŒ๋“œ๋Š”๊ฒŒ ์ข‹๊ฒ ๋‹ค. ํ•œ ํŒ€์ด ๊ฐ๋‹นํ•  ์„œ๋น„์Šค๋ฅผ ์ƒ๊ฐํ•ด์„œ

๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ ์„œ๋น„์Šค ๋ถ„์‚ฐ ํ™˜๊ฒฝ์„ ์ปจํŠธ๋กคํ•˜๋Š” ๊ฒŒ ํ•„์š”ํ•˜๋‹ค

๋ณต์žก์„ฑ๋„ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์žˆ๊ณ  ๋ถ„์‚ฐ์ด ๊ณง ๊ฐœ๋ณ„์ ์ธ ์ธ๊ฐ„ ์„ธ์ƒ๊ณผ ๋‹ฎ์€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์กฐ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๊ฒฝ๊ณ„์„ค์ • ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ ๋ชจ์•„์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฟ”๋ฟ”์ด ํฉ์–ด์ ธ์žˆ๋‹ค๊ณ  ๋А๋‚„ ์ˆ˜ ์žˆ๋‹ค ์‹ ๊ฒฝ์จ์•ผํ•  ์š”์†Œ๊ฐ€ ๋งŽ์•„์ง„๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค ๋„ทํ”Œ๋ฆญ์Šค๋Š” ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜์ง€?

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

์„œ๋น„์Šค๋ฉ”์‹œ

๊ทœ์น™๊ธฐ๋ฐ˜์˜ ๋ถ€ํ•˜๋ถ„์‚ฐ์œผ๋กœ ๋ฐฐํฌ(ํ…Œ์ŠคํŠธ์— ๋ฐฐํฌ)์™€ ๋ฆด๋ฆฌ์ฆˆ(ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌ)๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค

ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ๊ด€๋ฆฌ

  • ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ จ ์ง€ํ‘œ ์ˆ˜์ง‘ ๋ฐ ์ถ”์ 

CQRS

  • ์ฟผ๋ฆฌ์™€ ์ปค๋งจ๋“œ๋ฅผ ๋ถ„๋ฆฌํ–ˆ๋‹ค.
  • ์ฟผ๋ฆฌ๋Š” CRUD์˜ Read์˜ ๊ฐœ๋…์ด๊ณ 
  • ์ปค๋งจ๋“œ๋Š” ๋‚˜๋จธ์ง€ CUD์˜ ๊ฐœ๋…์ด๋‹ค.
  • Read๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋‚˜๋จธ์ง€ ๋ช…๋ น์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ณ , Read ์ž‘์—…์ด ๋‹ค๋ฅธ ์ž‘์—…๊ณผ ์‚ฌ์šฉ๋˜๋Š” ๋นˆ๋„์—๋„ ์ฐจ์ด๊ฐ€ ์žˆ๊ธฐ๋„ ํ•˜๋‹ค.
  • ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์—์„œ ํŠนํžˆ ๋‹ค๋ฅธ DB์—์„œ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์กฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ ‡๊ฒŒ ๋ถ„๋ฆฌํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค
  • ์ด ๊ฐœ๋…์—์„œ๋Š” ์• ์ดˆ์— ๋ชจ๋ธ, ์„œ๋น„์Šค ์ž์ฒด์—์„œ ์ฟผ๋ฆฌ์™€ ์ปค๋งจ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ๋งŒ๋“ค๋ผ๊ณ  ํ•œ๋‹ค

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

  • ์‚ฌ๊ฐ€
  • ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ
  • ์ฟผ๋ฆฌ
  • api

event driven architecture

  • in micro service, each service need send some event.
  • if not implement event, can parse some data?
  • http server <- event producer -> queue DB lambda
  • lambda can assign http or sqs. how to get data?

microservice experience

  • ๋ฐฐ๋ฏผ
    • ๊ฒฐ์ œ ์žฅ์•  ์‹œ ๊ฒฐ์ œ๋งŒ ์žฅ์• ๋‚˜๋Š” ํ™˜๊ฒฝ์„ ์›ํ–ˆ๋‹ค.
    • ๋ชจ๋†€๋ฆฌ์Šค ์„œ๋ฒ„ ํ…Œ์ด๋ธ”์ด 700๊ฐœ... >> ๋ถ„๋ฆฌ ํ›„์—๋„ ํ•œ ์„œ๋น„์Šค์— ํ…Œ์ด๋ธ”์ด ๋งŽ์ด ์žˆ์„ ๊ฒƒ
    • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋‹ˆ ํ›จ์”ฌ ํšจ์œจ์ด ์ฆ๊ฐ€ํ–ˆ๋‹ค.
  • 11๋ฒˆ๊ฐ€
    • Spring cloud ์ด์šฉ

junk food

๋„ทํ”Œ๋ฆญ์Šค๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ํ•˜๋ฉด์„œ ๋А๊ผˆ๋˜ ๊ฐœ๋ฐœ์˜ ์ฃผ์š” ๋ฌธ์ œ์ 

  • dependency
    • circuit breaker ๋กœ ์˜์กด์„ฑ ์žˆ๋Š” ์„œ๋ฒ„๊ฐ€ ์ฃฝ๋Š” ๊ฒƒ์— ๋Œ€์‘
  • Scale
    • EVCache
  • Variance
  • Change

architecture process organization

successtriangle
successtriangle
์ถœ์ฒ˜: https://kihoonkim.github.io/2018/03/25/Microservices%20Architecture/first-msa-retro/

When many people come to site. how to keep working server

  1. allow maximum people, others redirect to queue.
  2. scale out

์„€์‹œ

์—๋Ÿฌ ์ฒดํฌ, ๋กœ๊น…, ํ—ฌ์Šค์ฒดํฌ, ํšŒ๋กœ ์ฐจ๋‹จ ๋“ฑ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ๋งŒ๋“ค์–ด๋†“์€ ๊ฒƒ์„ ์ด์šฉํ•˜์ž๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์„€์‹œ๋ผ๋Š” ๊ฐœ๋…์ด ์ด๋ฏธ ์žˆ์—ˆ๋‹ค go-kit, micro ์ฐธ๊ณ 

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

๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค ๋ฉ”์‹œ๋Š” ์„€์‹œ์˜ ์ง„ํ™” ํ˜•ํƒœ๊ฐ€ ๋  ๊ฒƒ์ธ๋ฐ, ํ˜„์žฌ๋Š” ์ผ๋ถ€ ๊ธฐ๋Šฅ๋งŒ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๊ณ , ์•„์ง ์™„์ „ ๋Œ€์ฒด์ œ๋Š” ์•„๋‹ˆ๋‹ค istio, linkerd

istio์—์„œ ๋ถ„์‚ฐ ์ถ”์ ์„ ํ•˜๋ ค๋ฉด app: deployname ์„ ๋ผ๋ฒจ๋ง ํ•ด์ค˜์•ผ ํ•œ๋‹ค

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ๋‘ ์„œ๋น„์Šค์—์„œ ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ฉ์น ๊นŒ

๋‘ ์„œ๋น„์Šค๋ฉด ๊ทธ๋ƒฅ ํ˜ธ์ถœํ•˜๋Š”๋ฐ์„œ ๋ถ€๋ฅด๋ฉด ๋˜๊ฒ ์ง€๋งŒ rdbms์—์„œ ํ•˜๋˜ ์กฐ์ธ์ฒ˜๋Ÿผ ์ž์œ ์ž์žฌ๋กœ ํ•˜๊ธฐ์—๋Š” ์„ฑ๋Šฅ์ด ์•ˆ๋‚˜์˜จ๋‹ค

CQRS์˜ ์ฟผ๋ฆฌ๋ฅผ ์ด ์ƒํ™ฉ์— ์“ฐ๋˜๊ฐ€ ์•„๋‹ˆ๋ฉด ์ฟผ๋ฆฌ๋ฅผ ๋ชจ์•„์„œ rdbms๋กœ ๋ชจ์œผ๋Š” ์ถ”๊ฐ€์ ์ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐ?