๐ŸŽฏ Computer Science์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“— Today I Learned

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค

์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ ˆ์ฐจ๋‚˜ ๊ณผ์ •์œผ๋กœ, ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ธฐํš, ์„ค๊ณ„, ๊ตฌํ˜„, ํ…Œ์ŠคํŠธํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๋Š” ์ผ๋ จ์˜ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์š”๊ตฌ์‚ฌํ•ญ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„

  • ์š”๊ตฌ์‚ฌํ•ญ ์ˆ˜์ง‘

    • ์‹œ์žฅ ์กฐ์‚ฌ, ์ดํ•ด ๊ด€๊ณ„์ž ์ธํ„ฐ๋ทฐ, ์„ค๋ฌธ ์กฐ์‚ฌ, ๋ฌธ์„œ ๋ถ„์„
  • ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„๋ฅ˜

    • ๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ, ๋น„๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ
  • ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„

  • ๋ฌธ์„œํ™”

  • ์š”๊ตฌ์‚ฌํ•ญ ๊ฒ€์ฆ ๋ฐ ํ™•์ธ

์‹œ์Šคํ…œ ์„ค๊ณ„

  • ์ƒ์œ„ ์„ค๊ณ„

    • ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„

    • ๋ชจ๋“ˆํ™”

    • ๋ฐ์ดํ„ฐ ์„ค๊ณ„

    • ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„

  • ํ•˜์œ„ ์„ค๊ณ„

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„

    • ํด๋ž˜์Šค ์„ค๊ณ„

    • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„

    • ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ๋กœ๊น… ๋ฐฉ์‹

  • ํ•ต์‹ฌ ์„ค๊ณ„ ์›์น™

    • ๋ชจ๋“ˆํ™”

    • ์บก์Аํ™”

    • ์žฌ์‚ฌ์šฉ์„ฑ

    • ํ™•์žฅ์„ฑ

    • ์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„

    • ๋‹จ์ˆœ์„ฑ

  • ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜

    • MVC(Model-View-Controller) ํŒจํ„ด
      ์ถœ์ฒ˜: mdn
  • ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜

    • ์žฅ์ 

      • ๊ฐ„๋‹จํ•œ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ

      • ์†์‰ฌ์šด ๋””๋ฒ„๊น…

      • ์šฉ์ดํ•œ ํ…Œ์ŠคํŠธ

    • ๋‹จ์ 

      • ๊ฐœ๋ฐœ ์†๋„ ์ €ํ•˜

      • ๋ฐฐํฌ์˜ ์–ด๋ ค์›€

      • ํ™•์žฅ์„ฑ ์ œํ•œ

      • ์‹ ๋ขฐ์„ฑ

      • ๊ธฐ์ˆ  ์ฑ„ํƒ์˜ ์žฅ๋ฒฝ

  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

    • ์žฅ์ 

      • ๋†’์€ ์•ˆ์ •์„ฑ

      • ์œ ์—ฐํ•œ ํ™•์žฅ

      • ๋ฐฐํฌ ์šฉ์ด์„ฑ

      • ๊ธฐ์ˆ ์  ์œ ์—ฐ์„ฑ

    • ๋‹จ์ 

      • ๋ณต์žก์„ฑ ์ฆ๊ฐ€

      • ๋„คํŠธ์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œ

      • ๋””๋ฒ„๊น…๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ์–ด๋ ค์›€

      • ๋ฐฐํฌ ๋ณต์žก์„ฑ

    ์ถœ์ฒ˜: openlegacy

๊ตฌํ˜„

  • ์ฝ”๋”ฉ
  • ํ†ตํ•ฉ
  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ
  • ๋ฆฌํŒฉํ† ๋ง
  • ์„ฑ๋Šฅ ์ตœ์ ํ™”
  • ๋ณด์•ˆ ๊ตฌํ˜„
  • ๋ฌธ์„œํ™”
  • ๋ฒ„์ „ ๊ด€๋ฆฌ

ํ…Œ์ŠคํŠธ

  • ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ˆ˜๋ฆฝ
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘์„ฑ
  • ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์„ค์ •
  • ํ…Œ์ŠคํŠธ ์‹คํ–‰
  • ๊ฒฐํ•จ ๊ด€๋ฆฌ
  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์˜ ํ‰๊ฐ€ ๋ฐ ๋ณด๊ณ 

ํ…Œ์ŠคํŠธ ์ข…๋ฅ˜

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ
  • ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ
  • ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ
  • ํšŒ๊ท€ ํ…Œ์ŠคํŠธ
  • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ
  • ๋ณด์•ˆ ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ํ”„๋ ˆ์ž„์›Œํฌ

  • JUnit
  • Selenium
  • Cypress
  • JMeter

๋ฐฐํฌ

  • ๋ฆด๋ฆฌ์Šค ์ค€๋น„
  • ๋ฐฐํฌ ๊ณ„ํš ์ˆ˜์ž…
  • ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ
  • ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒ€์ฆ
  • ๋ฌธ์„œํ™” ๋ฐ ๊ต์œก
  • ์šด์˜ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ๋ฐฉ์‹

  • ํŒŒ์ผ ๋ณต์‚ฌ

  • ๊ฐ€์ƒ ์„œ๋ฒ„ ์ด๋ฏธ์ง€ ์ƒ์„ฑ

  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ƒ์„ฑ

๋ฐฐํฌ ์ „๋žต

  • ๋กค๋ง ์—…๋ฐ์ดํŠธ
  • ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ
  • ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ
    ์ถœ์ฒ˜: cloud native

์ง€์†์  ํ†ตํ•ฉ

๋‹จ๊ณ„

  • ์†Œ์Šค์ฝ”๋“œ ๋ณ€๊ฒฝ

  • ์ฝ”๋“œ ํ†ตํ•ฉ

  • ์ž๋™ํ™”๋œ ๋นŒ๋“œ

  • ํ…Œ์ŠคํŠธ ์‹คํ–‰

  • ๊ฒฐ๊ณผ ๋ณด๊ณ 

์ง€์†์  ๋ฐฐํฌ

๋‹จ๊ณ„

  • CI ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ
  • ์ž๋™ ๋ฐฐํฌ
  • ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ rollback

๋„๊ตฌ

  • Jenkins
  • Circle CI
  • Teamcity
  • Github Action

๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊น…

  • ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ

    • Saas: New Relic, Datadog

    • ํด๋ผ์šฐ๋“œ: AWS Cloudwatch

    • ์˜คํ”ˆ์†Œ์Šค: Prometheus, Grafana, Zabbix

  • ์—๋Ÿฌ ๋ชจ๋‹ˆํ„ฐ๋ง

    • Sentry, Rollbar
  • ๋กœ๊น…

    • ํด๋ผ์šฐ๋“œ: AWS Cloudwatch Logs

    • ์˜คํ”ˆ์†Œ์Šค: Loki

์œ ์ง€๋ณด์ˆ˜

  • ๋ฒ„๊ทธ ์ˆ˜์ •
  • ์„ฑ๋Šฅ ์ตœ์ ํ™”
  • ๊ธฐ๋Šฅ ๊ฐœ์„  ๋ฐ ์ถ”๊ฐ€
  • ๊ธฐ์ˆ  ๋ถ€์ฑ„ ๊ด€๋ฆฌ
  • ์šด์˜ ํ™˜๊ฒฝ ๊ด€๋ฆฌ
  • ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก 

ํญํฌ์ˆ˜ ๋ชจ๋ธ

  • ์š”๊ตฌ์‚ฌํ•ญ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„

    • ๊ณ ๊ฐ ๋ฐ ์ดํ•ด๊ด€๊ณ„์ž์™€ ์†Œํ†ตํ•˜์—ฌ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ๋ฌธ์„œํ™”
  • ์‹œ์Šคํ…œ ์„ค๊ณ„

    • ์‹œ์Šคํ…œ์˜ ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ์™€ ๊ตฌ์„ฑ ์š”์†Œ ์„ค๊ณ„
  • ๊ตฌํ˜„

    • ์„ค๊ณ„ ๋ฌธ์„œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹ค์ œ ์ฝ”๋“œ ์ž‘์„ฑ
  • ํ…Œ์ŠคํŒ…

    • ๊ตฌํ˜„๋œ ์‹œ์Šคํ…œ์˜ ํ’ˆ์งˆ์„ ๊ฒ€์ฆํ•˜๊ณ  ์˜ค๋ฅ˜ ํ™•์ธ
  • ๋ฐฐํฌ

    • ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ์‹œ์Šคํ…œ์„ ์‹ค์ œ ์šด์˜ํ™˜๊ฒฝ์— ๋ฐฐํฌ
  • ์œ ์ง€๋ณด์ˆ˜

    • ๊ณ ๊ฐ์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ณ , ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ˆ˜์ •
  • ์žฅ์ 

    • ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ๊ณ , ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.

    • ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๊ณ , ๊ฐ ๋‹จ๊ณ„์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์˜ ๋น„์šฉ๊ณผ ๊ธฐ๊ฐ„์„ ์‰ฝ๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ๋ฌธ์„œํ™”๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ์–ด ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋‹จ์ 

    • ๊ตฌํ˜„ ๋‹จ๊ณ„๊ฐ€ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋‹ค๋ฉด ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์œ ์—ฐ์„ฑ์ด ๋ถ€์กฑํ•˜๋‹ค.

    • ๋ชจ๋“  ๋‹จ๊ณ„๊ฐ€ ์™„๋ฃŒ๋œ ํ›„์—์•ผ ์ž‘์—… ๊ฒฐ๊ณผ๋ฌผ์ด ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ๊ฐ€์‹œ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค.

    • ์™„๋ฃŒ๋œ ๋‹จ๊ณ„์˜ ์ž‘์€ ๋ณ€๊ฒฝ์ด๋‚˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์ „์ฒด ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž… ๋ชจ๋ธ

๋‚˜์„ ํ˜• ๋ชจ๋ธ

๋‹จ๊ณ„์  ๊ฐœ๋ฐœ ๋ชจ๋ธ

์• ์ž์ผ ํ”„๋กœ์„ธ์Šค ๋ชจ๋ธ

  • ํŠน์ง•

    • ๋ฐ˜๋ณต์ ์ด๊ณ  ์ ์ง„์ ์ธ ๊ฐœ๋ฐœ
    • ์ง€์†์ ์ธ ๊ณ ๊ฐ ์ฐธ์—ฌ
    • ํŒ€์˜ ์ž์œจ์„ฑ๊ณผ ์ž๊ธฐ ์กฐ์งํ™”
    • ์ง€์†์ ์ธ ๊ฐœ์„ ๊ณผ ์ ์‘
  • ๋Œ€ํ‘œ์ ์ธ ์‹ค์ฒœ ๋ฐฉ๋ฒ•

    • ์Šคํฌ๋Ÿผ

    • ์นธ๋ฐ˜

    • ์ต์ŠคํŠธ๋ฆผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (XP)

      • ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ (TDD)
      • ์ง€์†์  ํ†ตํ•ฉ (CI)
      • ์งง์€ ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ

์›น ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ
    • MySQL, PostgreSQL, Oracle, SQL Server
  • ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐ ๋Œ€์‹  document, key-value, graph์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ
    • MongoDB, Cassandra, Redis, DynamoDB

์บ์‹ฑ

์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋‘๊ณ  ๋™์ผํ•œ ์š”์ฒญ์ด ์™”์„ ๋•Œ ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ 

  • ๊ฐ์ฒด ์บ์‹ฑ
    • ์‚ฌ์šฉ์ž ์„ธ์…˜
    • ๋‰ด์Šค ๊ธฐ์‚ฌ
    • ์žฅ๋ฐ”๊ตฌ๋‹ˆ
  • ํŽ˜์ด์ง€ ์บ์‹ฑ
    • ๋‰ด์Šค ๋ฉ”์ธ ํŽ˜์ด์ง€
    • ๊ฒŒ์‹œ๊ธ€ ํŽ˜์ด์ง€
  • ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ

์บ์‹œ ๋ฌดํšจํ™” ์ „๋žต

  • ๋ช…์‹œ์  ๋ฌดํšจํ™”
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ์˜ ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ
  • ๋งŒ๋ฃŒ์‹œ๊ฐ„(TTL) ๊ธฐ๋ฐ˜ ๋ฌดํšจํ™”
    • ์บ์‹œ๋œ ๊ฐ์ฒด์— TTL์„ ์„ค์ •ํ•˜์—ฌ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋ฌดํšจํ™”
  • ๋ฒ„์ „ ๊ธฐ๋ฐ˜ ๋ฌดํšจํ™”
    • ์บ์‹œ ๋ฐ์ดํ„ฐ์— ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•˜์—ฌ ๋ฌดํšจํ™”๋ฅผ ๊ด€๋ฆฌ
profile
๐ŸŒฑ๊ฐœ๋ฐœ ๊ธฐ๋ก์žฅ

0๊ฐœ์˜ ๋Œ“๊ธ€