λ„μ„œ

데이터 쀑심 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 섀계 - 01μž₯ μ‹ λ’°ν•  수 있고 ν™•μž₯ κ°€λŠ₯ν•˜λ©° μœ μ§€λ³΄μˆ˜ν•˜κΈ° μ‰¬μš΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ (1) 데이터 μ‹œμŠ€ν…œμ— λŒ€ν•œ 생각

@λ‚¨μ œμ΄ Β· 2024λ…„ 08μ›” 19일 Β· 2λΆ„
λ„μ„œλ°μ΄ν„° 쀑심 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 섀계01μž₯데이터 μ‹œμŠ€ν…œμ— λŒ€ν•œ 생각

κ°œμš”

였늘 λ‚  λ§Žμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 계산 쀑심 (compute-intensive) κ³ΌλŠ” λ‹€λ₯΄κ²Œ 데이터 쀑심 (data-intensive) 적이닀.

데이터 쀑심 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ κ³΅ν†΅μœΌλ‘œ ν•„μš”λ‘œ ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” ν‘œμ€€ ꡬ성 μš”μ†Œ(standard building block) 둜 λ§Œλ“ λ‹€.

ν‘œμ€€ ꡬ성 μš”μ†ŒλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • λ°μ΄ν„°λ² μ΄μŠ€
    • ꡬ동 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ λ‹€λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ‚˜μ€‘μ— λ‹€μ‹œ 데이터λ₯Ό 찾을 수 있게 데이터λ₯Ό μ €μž₯
  • μΊμ‹œ
    • 읽기 속도 ν–₯상을 μœ„ν•΄ κ°’λΉ„μ‹Ό μˆ˜ν–‰ κ²°κ³Όλ₯Ό κΈ°μ–΅
  • 검색 색인
    • μ‚¬μš©μžκ°€ ν‚€μ›Œλ“œλ‘œ 데이터λ₯΄ γ„Ήκ²€μƒ‰ν•˜κ±°λ‚˜ λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ 필터링할 수 있게 제곡
  • 슀트림 처리
    • 비동기 처리λ₯Ό μœ„ν•΄ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ λ©”μ‹œμ§€ 보내기
  • 일괄 처리
    • 주기적으둜 λŒ€λŸ‰μ˜ λˆ„μ λœ 데이터λ₯Ό 뢄석

μ• ν”Œλ¦¬μΌ€μ΄μ…˜λ§ˆλ‹€ μš”κ΅¬μ‚¬ν•­μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ λ˜ν•œ μ €λ§ˆλ‹€ λ‹€μ–‘ν•œ νŠΉμ„±μ„ 가지고 μžˆλ‹€.
캐싱을 μœ„ν•œ λ‹€μ–‘ν•œ μ ‘κ·Ό 방식과 검색 색인을 κ΅¬μΆ•ν•˜λŠ” μ—¬λŸ¬ 가지 방법 등이 μžˆλ‹€.
μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€ λ•Œ μ–΄λ–€ 도ꡬ와 μ–΄λ–€ μ ‘κ·Ό 방식이 μˆ˜ν–‰ 쀑인 μž‘μ—…μ— κ°€μž₯ μ ν•©ν•œμ§€ 생각해야 ν•œλ‹€.

이 책은 데이터 μ‹œμŠ€ν…œμ˜ 원칙(principle) κ³Ό μ‹€μš©μ„±(practivality), 그리고 이λ₯Ό ν™œμš©ν•œ 데이터 쀑심 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λŠ” 방법을 λͺ¨λ‘ λ‹΄κ³  μžˆλ‹€.


데이터 μ‹œμŠ€ν…œμ— λŒ€ν•œ 생각

일반적으둜 λ°μ΄ν„°λ² μ΄μŠ€, 큐, μΊμ‹œ 등을 맀우 λ‹€λ₯Έ 범주에 μ†ν•˜λŠ” λ„κ΅¬λ‘œ μƒκ°ν•œλ‹€.
λ°μ΄ν„°λ² μ΄μŠ€μ™€ λ©”μ‹œμ§€ νλŠ” ν‘œλ©΄μ μœΌλ‘œ λΉ„μŠ·ν•˜λ”λΌλ„ 맀우 λ‹€λ₯Έ μ ‘κ·Ό νŒ¨ν„΄μ„ κ°–κ³  μžˆμ–΄ μ„œλ‘œ λ‹€λ₯Έ μ„±λŠ₯ νŠΉμ„±μ΄ 있기 λ•Œλ¬Έμ— κ΅¬ν˜„ 방식이 맀우 λ‹€λ₯Έλ‹€.

그럼 λͺ¨λ“  것을 μ™œ 데이터 μ‹œμŠ€ν…œ μ΄λΌλŠ” 포괄적 μš©μ–΄λ‘œ λ¬Άμ–΄μ•Ό ν• κΉŒ?

데이터 μ €μž₯κ³Ό 처리λ₯Ό μœ„ν•œ μ—¬λŸ¬ μƒˆλ‘œμš΄ λ„κ΅¬λŠ” μ΅œκ·Όμ— λ§Œλ“€μ–΄μ‘Œλ‹€.
μƒˆλ‘œμš΄ 도ꡬ듀은 λ‹€μ–‘ν•œ μ‚¬μš© 사둀에 μ΅œμ ν™” λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 더 이상 적톡적인 λΆ„λ₯˜μ— λ”± λ“€μ–΄λ§žμ§€ μ•ŠλŠ”λ‹€.
λ©”μ‹œμ§€ 큐둜 μ‚¬μš©ν•˜λŠ” λ°μ΄ν„°μŠ€ν† μ–΄μΈ redis, λ°μ΄ν„°λ² μ΄μŠ€μ²˜λŸΌ 지속성을 보μž₯ν•˜λŠ” λ©”μ‹œμ§€ 큐인 μ•„νŒŒμΉ˜ μΉ΄ν”„μΉ΄κ°€ μžˆλ‹€.

점점 더 λ§Žμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 단일 λ„κ΅¬λ‘œλŠ” 더 이상 데이터 μ²˜λ¦¬μ™€ μ €μž₯ λͺ¨λ‘λ₯Ό λ§Œμ‘±μ‹œν‚¬ 수 μ—†λŠ” κ³Όλ„ν•˜κ³  κ΄‘λ²”μœ„ν•œ μš”κ΅¬μ‚¬ν•­μ„ κ°–λŠ”λ‹€.
λŒ€μ‹  μž‘μ—…μ€ 단일 λ„κ΅¬μ—μ„œ 효율적으둜 μˆ˜ν–‰ν•  수 μžˆλŠ” νƒœμŠ€ν¬λ‘œ λ‚˜λˆ„κ³  λ‹€μ–‘ν•œ 도ꡬ듀은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œλ₯Ό μ΄μš©ν•΄ μ„œλ‘œ μ—°κ²°ν•œλ‹€.

데이터 μ‹œμŠ€ν…œμ΄λ‚˜ μ„œλΉ„μŠ€λ₯Ό 섀계할 λ•Œ κΉŒλ‹€λ‘œμš΄ λ¬Έμ œκ°€ 많이 생긴닀.

  • λ‚΄λΆ€μ μœΌλ‘œ λ¬Έμ œκ°€ μžˆμ–΄λ„ 데이터λ₯Ό μ •ν™•ν•˜κ³  μ™„μ „ν•˜κ²Œ μœ μ§€ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ?
  • μ‹œμŠ€ν…œμ˜ 일뢀 μ„±λŠ₯이 μ €ν•˜λ˜λ”λΌλ„ ν΄λΌμ΄μ–ΈνŠΈμ— μΌκ΄€λ˜κ²Œ 쒋은 μ„±λŠ₯을 μ–΄λ–»κ²Œ μ œκ³΅ν•  수 μžˆμ„κΉŒ?
  • λΆ€ν•˜ 증가λ₯Ό 닀루기 μœ„ν•΄ μ–΄λ– ν—₯ 규λͺ¨λ₯Ό ν™•μž₯ν•  수 μžˆμ„κΉŒ?
  • μ„œλΉ„μŠ€λ₯Ό μœ„ν•΄ 쒋은 API λŠ” μ–΄λ–€ λͺ¨μŠ΅μΌκΉŒ?

λ“±μ˜ μ—¬λŸ¬ μš”μ†Œλ“€μ„ κ³ λ €ν•΄μ•Όν•œλ‹€.

κ΄€λ ¨μžμ˜ 기술 μˆ™λ ¨λ„, κΈ°μ‘΄ μ‹œμŠ€ν…œμ˜ μ˜μ‘΄μ„±, 전달 μ‹œκ°„ 척도, λ‹€μ–‘ν•œ μ’…λ₯˜μ˜ μœ„ν—˜μ— λŒ€ν•œ 쑰직의 λ‚΄μ„±, 규제 μ œμ•½ 등은 μ‹œμŠ€ν…œ 섀계에 영ν–₯을 쀄 수 μžˆλŠ” λ§Žμ€ μš”μ†Œλ‹€.
이런 μš”μ†ŒλŠ” 상황에 크게 μ’Œμš°λœλ‹€.

  • μ‹ λ’°μ„± (Reliability)
    ν•˜λ“œμ›¨μ–΄λ‚˜ μ†Œν”„νŠΈμ›¨μ–΄ 결함. μ–΄λ– ν•œ λ¬Έμ œκ°€ λ°œμƒν•˜λ”λΌλ„ μ‹œμŠ€ν…œμ€ μ§€μ†μ μœΌλ‘œ μ˜¬λ°”λ₯΄κ²Œ λ™μž‘ν•΄μ•Ό ν•œλ‹€.
  • ν™•μž₯μ„± (Scalability)
    μ‹œμŠ€ν…œμ˜ 데이터 μ–‘, νŠΈλž˜ν”½ μ–‘, λ³΅μž‘λ„κ°€ μ¦κ°€ν•˜λ©΄μ„œ 이λ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ” μ μ ˆν•œ 방법이 μžˆμ–΄μ•Ό ν•œλ‹€.
  • μœ μ§€λ³΄μˆ˜μ„± (Maintainability)
    μ‹œκ°„μ΄ 지남에 따라 μ—¬λŸ¬ λ‹€μ–‘ν•œ μ‚¬λžŒλ“€μ΄ μ‹œμŠ€ν…œ μƒμ—μ„œ μž‘μ—…μ„ ν•  것이기 λ•Œλ¬Έμ— λͺ¨λ“  μ‚¬μš©μžκ°€ μƒμ‚°μ μœΌλ‘œ μž‘μ—…ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

정리

데이터λ₯Ό μ²˜λ¦¬ν•˜κ³  μ €μž₯ν•˜κΈ° μœ„ν•œ μƒˆλ‘œμš΄ 도ꡬ듀은 μ΅œκ·Όμ— λ§Œλ“€μ–΄μ‘ŒκΈ° λ•Œλ¬Έμ— 전톡적인 λͺ©μ μ— 맞게 μ‚¬μš©λ˜μ§€ μ•Šκ³  μ‚¬μš© 사둀에 맞게 μ‚¬μš©λ˜κ³  μžˆλ‹€κ³  ν•œλ‹€. λ§Žμ§€ μ•Šμ€ λ‚΄ κ²½ν—˜ μ†μ—μ„œλ„ ν™•μ‹€νžˆ νŠΉμ • λ„κ΅¬λ§Œμ„ 데이터 μ²˜λ¦¬μ™€ μ €μž₯ν•˜λŠ”λ° 쓰이지 μ•Šκ³  ν˜„μž¬ μ„œλΉ„μŠ€μ— 맞게 ν•„μš”ν•œ 도ꡬλ₯Ό 각 상황에 맞게 μ‚¬μš©ν•˜μ—¬ μ„€κ³„ν•˜λ €κ³  λ§Žμ€ 고민을 ν–ˆμ—ˆλ˜ 것 κ°™λ‹€.

λ”°λΌμ„œ, 각 λ„κ΅¬λ“€μ˜ 각자의 역할에 맞게 μ‚¬μš©λ˜λŠ” 것이 μ•„λ‹ˆλΌ μ‚¬μš© 사둀에 맞게, 단일 도ꡬ가 μ•„λ‹Œ λ‹€μ–‘ν•œ ꡬ성 μš”μ†Œλ₯Ό κ²°ν•©ν•˜μ—¬ 데이터 μ‹œμŠ€ν…œμ„ κ΅¬μ„±ν•œλ‹€κ³  λ§ν•˜κ³  μžˆλŠ” 것 κ°™λ‹€.

ν™•μ‹€νžˆ μ–΄λ–€ ν™˜κ²½μ— μžˆλŠ”μ§€μ— 따라 μ–΄λ–€ 데이터 μ‹œμŠ€ν…œμ„ μ„€κ³„ν•˜κ³  μš΄μ˜ν•  수 μžˆλŠ”μ§€μ— λŒ€ν•΄μ„œλ„ μΆ©λΆ„νžˆ κ³ λ €ν•΄μ•Όν•  것 κ°™κ³ 
데이터 μ‹œμŠ€ν…œμ΄λ‚˜ μ„œλΉ„μŠ€λ₯Ό μ„€κ³„ν•˜λŠ” κ³Όμ •μ—μ„œ μ–Όλ§ˆλ‚˜ 고민을 많이 ν•˜λŠ”μ§€μ— λ”°λΌμ„œ 퀄리티 차이가 많이 λ‚˜μ§€ μ•Šμ„κΉŒ 그리고 데이터 μ—”μ§€λ‹ˆμ–΄λ‘œμ¨ λ‹€μ–‘ν•œ ν™˜κ²½μ— 맞게 μ‹œμŠ€ν…œμ„ μ„€κ³„ν•˜λŠ” λŠ₯λ ₯이 맀우 μ€‘μš”ν•˜μ§€ μ•Šμ„κΉŒ 생각이 λ“€μ—ˆλ‹€.