οΌ»λ…μ„œκΈ°λ‘οΌ½ 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 2, 3μž₯

πŸ“– 제λͺ© : 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 : 2, 3μž₯
πŸ™‹β€β™‚οΈ μ €μž : μ•Œλ ‰μŠ€ 쉬
μ‹œμŠ€ν…œ 섀계 κ΄€λ ¨ 면접을 보면 β€œμ΄ μ„œλΉ„μŠ€μ— ν•„μš”ν•œ μ„œλ²„ μˆ˜λŠ” λͺ‡ λŒ€μΌκΉŒ?” β€œν•˜λ£¨μ— μ–Όλ§ˆλ‚˜ λ§Žμ€ μš”μ²­μ΄ λ“€μ–΄μ˜¬κΉŒ?” β€œμ €μž₯곡간은 μ–Όλ§ˆλ‚˜ ν•„μš”ν• κΉŒ?” 같은 μ§ˆλ¬Έμ„ λ°›κ²Œ 될 수 μžˆλ‹€. 이런 μ§ˆλ¬Έλ“€μ€ μ •ν™•ν•œ 숫자λ₯Ό μš”κ΅¬ν•˜λŠ” 게 μ•„λ‹ˆλΌ, μ–Όλ§ˆλ‚˜ ν•„μš”ν•  지λ₯Ό λŒ€λž΅μ μœΌλ‘œ κ³„μ‚°ν•΄λ³΄λŠ” λŠ₯λ ₯을 λ³΄λ €λŠ” μ˜λ„λ‹€. 이 좔둠을 개랡적인 규λͺ¨ 좔정이라고 ν•œλ‹€. μ‰½κ²Œ λ§ν•΄μ„œ β€˜λŒ€μΆ© λ¨Έλ¦Ώμ†μœΌλ‘œ 계산해봀을 λ•Œ λŒ€λž΅ μ–΄λŠ 정도인지 감 μž‘κΈ°β€™λ₯Ό ν•  수 μžˆλŠ”μ§€κ°€ ν¬μΈνŠΈλ‹€. μ˜ˆμ‹œμ™€ ν•¨κ»˜ μ–΄λ–»κ²Œ 계산해야 ν•  지 μ•Œμ•„λ³΄μž.
그리고 3μž₯μ—μ„œλŠ” μ‹œμŠ€ν…œ 섀계 면접은 μ™œ λ³΄λŠ” 것인지에 λŒ€ν•΄ 생각해볼 수 μžˆλ‹€.

πŸ“Œ2μž₯. νŠΈμœ„ν„° QPS와 μ €μž₯μ†Œ μš”κ΅¬λŸ‰μ„ μΆ”μ •ν•΄λ³΄μž

μ „μ œ 쑰건

  • μ›”κ°„ μ‚¬μš©μž 수 : 3μ–΅ λͺ…
  • 50%의 μ‚¬μš©μžκ°€ 맀일 νŠΈμœ„ν„°λ₯Ό μ‚¬μš©
  • μ‚¬μš©μž 1λͺ…λ‹Ή 평균 2개의 νŠΈμœ— μž‘μ„±
  • λ―Έλ””μ–΄ 포함 νŠΈμœ—μ€ 10%
  • λ°μ΄ν„°λŠ” 5λ…„κ°„ 보관

QPS 계산

  1. 일일 μ‚¬μš©μž 수(DAU) = 3μ–΅ x 50% = 1.5μ–΅
  2. ν•˜λ£¨ νŠΈμœ— 수 = 1.5μ–΅ x 2 = 3μ–΅ νŠΈμœ—
  3. QPS(μ΄ˆλ‹Ή μš”μ²­ 수) = 3μ–΅ / 24μ‹œκ°„ / 3600초 = 3,500QPS
  4. μ΅œλŒ€ QPS(ν”Όν¬νƒ€μž„) = 2배둜 μž‘μ•„ 7,000 QPS

    ❓ μ΅œλŒ€ QPSλŠ” μ™œ 2배둜 μž‘μ•˜μ„κΉŒ?
    ν•˜λ£¨ 평균 QPS만으둜 μ‹œμŠ€ν…œμ„ μ„€κ³„ν•˜λ©΄ 피크 νƒ€μž„μ— μ„œλ²„κ°€ ν„°μ§ˆ μœ„ν—˜μ΄ 크기 λ•Œλ¬Έμ—, 보톡 κΈ°μ—…μ—μ„œλŠ” 2~3배둜 μ΅œλŒ€ QPSλ₯Ό μΆ”μ •ν•œλ‹€. μ±…μ—μ„œλŠ” κ°„λ‹¨ν•œ μ˜ˆμ‹œλ₯Ό μœ„ν•΄ 2배둜 μ„€μ •ν–ˆμ§€λ§Œ, μ‹€μ œ λŒ€κ·œλͺ¨ μ„œλΉ„μŠ€μ—μ„œλŠ” 5λ°°κΉŒμ§€ 버퍼λ₯Ό 두기도 ν•œλ‹€.

μ €μž₯μ†Œ μš”κ΅¬λŸ‰

  • νŠΈμœ— 1개 평균 크기 : 140bytes
  • λ―Έλ””μ–΄ 크기 : 평균 1MB
  • λ―Έλ””μ–΄ μ €μž₯μ†Œ μš”κ΅¬λŸ‰ : 1.5μ–΅ x 2 x 10% x 1MB = 30TB/일
  • 5λ…„κ°„ λ―Έλ””μ–΄λ₯Ό λ³΄κ΄€ν•˜κΈ° μœ„ν•œ μ €μž₯μ†Œ μš”κ΅¬λŸ‰ : 30TB x 365 x 5 = μ•½ 55PB

    ❓ μ΄λ ‡κ²Œ κ³„μ‚°ν•˜λ©΄ μ—¬μœ  μ €μž₯μ†Œ 곡간이 없을 것 같은데?
    μ±…μ—μ„œλŠ” μΆ”μ • 방법을 μ•Œλ €μ£ΌκΈ° μœ„ν•΄ β€œλŒ€λž΅μ μΈ 계산 μ˜ˆμ‹œβ€λ₯Ό λ“  것 κ°™λ‹€. μ‹€μ œ μ‹œμŠ€ν…œμ—μ„œλŠ” μ—¬μœ  μ €μž₯μ†Œκ°€ λ°˜λ“œμ‹œ ν™•λ³΄λ˜μ–΄μ•Ό ν•œλ‹€. μŠ€ν† λ¦¬μ§€ λΉ„μš©λ³΄λ‹€ μ„œλΉ„μŠ€ 쀑단 λΉ„μš©μ΄ 훨씬 크기 λ•Œλ¬Έμ΄λ‹€. μ‹€μ œ μ„œλΉ„μŠ€μ—μ„œλŠ” μΆ”μ •μΉ˜ + 20~50%의 μ—¬μœ λΆ„μ„ λ‘λŠ” κ²½μš°κ°€ 일반적이고, AWSλ‚˜ Azure λ“±μ—μ„œλŠ” Auto Scale도 κ°€λŠ₯ν•˜λ‹€. 였래된 λ°μ΄ν„°λŠ” μƒλŒ€μ μœΌλ‘œ μ €λ ΄ν•œ μž₯κΈ° λ³΄κ΄€μš© μŠ€ν† λ¦¬μ§€λ‘œ μ΄μ „μ‹œν‚€λŠ” 것도 λΉ„μš© 절감 방법이닀.


βœ”οΈμΆ”μ • κ²°κ³Όλ₯Ό λ©΄μ ‘κ΄€μ—κ²Œ 말할 λ•Œ μ£Όμ˜ν•  점

  • 정닡보닀 계산 과정을 λ³΄λŠ” 게 λͺ©μ μ΄λ―€λ‘œ, μΆ”λ‘  과정을 μ„€λͺ…ν•  것.
  • 계산 κ²°κ³Όκ°€ μ–΄λ ΅λ‹€λ©΄ λ„ˆλ¬΄ μ„Έμ„Έν•œ κ³„μ‚°λ³΄λ‹€λŠ” κ·Όμ‚¬μΉ˜λ‘œ λΉ λ₯΄κ²Œ μΆ”μ •ν•΄μ„œ 말할 것.
  • λ‹¨μœ„λŠ” κΌ­ λΆ™μ—¬μ„œ 말할 것(MB, ms λ“±)
  • QPS(μ΄ˆλ‹Ή μš”μ²­ 수), μ΅œλŒ€ QPS, μ €μž₯μ†Œ μš”κ΅¬λŸ‰, μΊμ‹œ μš©λŸ‰ 등을 κ³„μ‚°ν•΄λ³΄λΌλŠ” 질문이 자주 λ‚˜μ˜€λ―€λ‘œ κ³„μ‚°ν•΄λ³΄λŠ” μŠ΅κ΄€μ„ λ“€μ΄μž.

πŸ“Œ3μž₯. μ‹œμŠ€ν…œ 섀계 면접이 μžˆλŠ” μ΄μœ λŠ” 무엇인가?

β€œλ„λ¦¬ μ•Œλ €μ§„ μ†Œν”„νŠΈμ›¨μ–΄ Xλ₯Ό μ„€κ³„ν•΄λ³΄μ„Έμš”β€ λΌλŠ” μ§ˆλ¬Έμ„ λ°›μ•˜λ‹€κ³  치자. μ‹€μ œλ‘œ μ§€κΈˆ λ‹Ήμž₯, 앉은 μžλ¦¬μ—μ„œ λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ„ ν•œ μ‚¬λžŒμ΄ μ„€κ³„ν•˜κΈ°λ₯Ό μ›ν•˜λŠ” κ²ƒμΌκΉŒ? μ–΄λ–€ 면접관도 정닡을 κΈ°λŒ€ν•˜μ§€ μ•ŠλŠ”λ‹€. μ• μ΄ˆμ— 이 λ¬Έμ œμ—λŠ” 정해진 정닡도 μ—†λ‹€. 이 λ©΄μ ‘ μžλ¦¬μ—μ„œ λ©΄μ ‘μžκ°€ 보여야 ν•˜λŠ” 덕λͺ©μ€ μ•„λž˜μ™€ κ°™λ‹€.

  • λ‚΄κ°€ 이런 사고λ₯Ό 거쳐 μ„€κ³„ν•œλ‹€λŠ” 것을 보여주기
  • 섀계 κ³Όμ •μ—μ„œ λ‚΄λ¦° 결정듀에 λŒ€ν•œ λ°©μ–΄ λŠ₯λ ₯ 보여주기
  • λ©΄μ ‘κ΄€μ˜ ν”Όλ“œλ°±μ„ 건섀적인 λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆλŠ” 자질이 μžˆμŒμ„ 보여주기

μ„€κ³„μ˜ μˆœμˆ˜μ„±μ— λ„ˆλ¬΄ μ§‘μ°©ν•œ λ‚˜λ¨Έμ§€ νƒ€ν˜‘μ  결정을 λ„μ™Έμ‹œν•˜κ³  μ˜€λ²„ μ—”μ§€λ‹ˆμ–΄λ§μ„ ν•˜μ§€λŠ” μ•Šμ•˜λŠ”μ§€, λ„ˆλ¬΄ νŽΈν˜‘ν•˜κ±°λ‚˜ μ™„κ³ ν•˜κ²Œ ꡴지 μ•Šμ•˜λŠ”μ§€λ„ 잘 생각해보아야 ν•œλ‹€.

효과적인 면접을 μœ„ν•œ 4단계 접근법

βœ”οΈ1. 문제 이해 및 섀계 λ²”μœ„ ν™•μ •

빨리 λŒ€λ‹΅ν•œλ‹€κ³  λ‹€ 쒋은 것이 μ•„λ‹ˆλ‹€. 정닡이 μ—†λŠ” μ§ˆλ¬Έμ—μ„œλŠ” λ”μš± κ·Έλ ‡λ‹€. 깊이 μƒκ°ν•˜κ³ , μš”κ΅¬μ‚¬ν•­κ³Ό 가정듀을 λΆ„λͺ…νžˆ ν•œ 후에 λŒ€λ‹΅ν•˜μž. μ œν’ˆ μ‚¬μš©μž μˆ˜λŠ” μ–Όλ§ˆλ‚˜ λ˜λŠ”μ§€, νšŒμ‚¬μ˜ 규λͺ¨λŠ” μ–Όλ§ˆμ΄κ³  μ•žμœΌλ‘œ μ–Όλ§ˆλ‚˜ 더 컀지리라고 μ˜ˆμƒν•˜λŠ”μ§€, ν˜„μž¬ μ‚¬μš© κ°€λŠ₯ν•œ κΈ°μˆ μŠ€νƒμ€ 무엇이 μžˆλŠ”μ§€ λ“± 상황 섀정에 ν•„μš”ν•œ μΆ”κ°€ μ •λ³΄λŠ” μ–Όλ§ˆλ“ μ§€ μžˆλ‹€.

βœ”οΈ2. 개랡적인 μ„€κ³„μ•ˆ μ œμ‹œ 및 λ™μ˜ κ΅¬ν•˜κΈ°

2μž₯μ—μ„œ 읡힌 개랡적 섀계λ₯Ό ν™œμš©ν•˜μž. 졜초 청사진을 μ œμ‹œν•˜κ³  μ˜κ²¬μ„ κ΅¬ν•˜λ©΄ μ’‹λ‹€. 면접관을 νŒ€μ›μ²˜λŸΌ λŒ€ν•˜κ³  μ˜κ²¬μ„ λ¬Όμ–΄λ³΄λŠ” 것도 도움이 λœλ‹€. ν›Œλ₯­ν•œ 면접관듀은 μ§€μ›μžλ“€κ³Ό λŒ€ν™”ν•˜κ³  섀계 과정에 κ°œμž…ν•˜κΈ°λ₯Ό 즐긴닀.

βœ”οΈ3. 상세 섀계

전체 μ„€κ³„μ˜ 청사진이 λ§ˆλ ¨λ˜μ—ˆλ‹€λ©΄, ν•΄λ‹Ή 청사진에 λŒ€ν•œ λ©΄μ ‘κ΄€λ“€μ˜ μ˜κ²¬μ„ μ²­μ·¨ν•˜κ³  상세 μ„€κ³„μ—μ„œ 집쀑해야 ν•  뢀뢄듀을 확인해야 ν•œλ‹€. ν•΄μ‹œ ν•¨μˆ˜ 섀계λ₯Ό μ–΄λ–»κ²Œ ν•˜λŠ”μ§€, λ˜λŠ” μ§€μ—°μ‹œκ°„μ„ μ–΄λ–»κ²Œ λ‹¨μΆ•μ‹œν‚¬ 것인지 λ“± 면접관이 ν™•μΈν•˜κ³ μž ν•˜λŠ” λŠ₯λ ₯에 집쀑해야 ν•œλ‹€. λΆˆν•„μš”ν•œ λ””ν…ŒμΌμ— μ‹œκ°„μ„ λ‚­λΉ„ν•˜μ§€ μ•Šλ„λ‘ μ£Όμ˜ν•˜μž.

βœ”οΈ4. 마무리

  • μ•žμ„œ μ„€κ³„ν•œ λ‚΄μš©μ„ ν•œ 번 λ‹€μ‹œ μš”μ•½ν•΄μ£ΌλŠ” 것도 정리에 도움이 λœλ‹€.
  • μΆ”κ°€ κ°œμ„ μ , μ‹œμŠ€ν…œ 병λͺ© ꡬ간에 λŒ€ν•œ μ§ˆλ¬Έμ— β€˜κ°œμ„ μ μ΄ 없닀’, β€˜μ™„λ²½ν•˜λ‹€β€™ 같은 λŒ€λ‹΅μ€ ν•˜μ§€ μ•Šλ„λ‘ ν•˜μž. κ°œμ„ μ μ€ μ–Έμ œλ‚˜ μžˆλ‹€.
  • 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ 무슨 일이 μƒκΈ°λŠ” 지 λ”°μ Έλ³΄λŠ” 것도 ν₯미둜울 것이닀.
  • 운영 이슈(둜그, λͺ¨λ‹ˆν„°λ§, 배포)에 λŒ€ν•΄μ„œ λ…Όμ˜ν•΄ λ³Ό μˆ˜λ„ μžˆλ‹€.
  • λ―Έλž˜μ— λ‹₯μΉ  ν™•μž₯ μš”κ΅¬μ— μ–΄λ–»κ²Œ λŒ€μ²˜ν•  것인지도 ν₯미둜운 μ£Όμ œλ‹€.
  • ν•„μš”ν•˜μ§€λ§Œ 닀루지 λͺ»ν–ˆλ˜ μ„ΈλΆ€ κ°œμ„ μ‚¬ν•­μ— λŒ€ν•΄ 이야기 ν•΄λ³΄λŠ” 것도 μ’‹λ‹€.

πŸ“Œλ©΄μ ‘μ„ 보기 전에 기얡해두어야 ν•  것듀

λ§ν•˜κΈ°μ „μ— μƒκ°ν–ˆλ‚˜μš”

  • 재질문 ν•΄μ„œ μ˜λ„λ‚˜ μš”κ΅¬μ‚¬ν•­μ„ ꡬ체적으둜 ν™•μΈν•˜μž. λ‚΄κ°€ λ‚΄λ¦° 가정이 μ˜³λ‹€κ³  λ―Ώκ³  κ·Έλƒ₯ λ‹΅λ³€ν–ˆλŠ”λ° λ©΄μ ‘κ΄€μ˜ 질문 μ˜λ„μ™€ μ™„μ „νžˆ λ‹€λ₯Έ 닡변을 ν•˜κ²Œ 될 μˆ˜λ„ μžˆλ‹€.
  • μ •λ‹΅μ΄λ‚˜, μ΅œμ„ μ˜ λ‹΅μ•ˆμ€ μ—†λ‹€. μš”κ΅¬μ‚¬ν•­μ„ μ •ν™•νžˆ μ΄ν•΄ν•˜κ³  μƒκ°ν–ˆλŠ”μ§€ λ‹€μ‹œ ν™•μΈν•˜μž.
  • λ©΄μ ‘κ΄€κ³Ό μ†Œν†΅ν•˜μž. 정해진 λ‹΅λ§Œ 쀄쀄 μ–˜κΈ°ν•˜λŠ” 게 μ•„λ‹ˆλΌ λŒ€ν™”λ₯Ό 톡해 μ‚¬κ³ μ˜ 흐름을 이해할 수 μžˆλ„λ‘ ν•΄μ•Ό ν•œλ‹€.
  • κ°€λŠ₯ν•˜λ‹€λ©΄ μ—¬λŸ¬κ°€μ§€ 해법을 ν•¨κ»˜ μ œμ‹œν•˜μž.
  • μ€‘μš”ν•œ λ‚΄μš©μ„ λ¨Όμ € λ§ν•˜μž.