728x90

데이터 μˆ˜μ§‘ Β· μ •μ œ Β· λ³€ν™˜ Β· ν…ŒμŠ€νŠΈ


(1) 데이터 μˆ˜μ§‘

μˆ˜μ§‘μ—λ§Œ μ΄ˆμ μ„ 두면 데이터 νŒŒμ΄ν”„λΌμΈμ˜ μ‹œμž‘ 뢀뢄인 μ—…μŠ€νŠΈλ¦Όμ— μžˆλŠ” μ§„μž…μ μ΄ κ°€μž₯ μ€‘μš”ν•˜λ‹€κ³  μ†Œκ°œν•œλ‹€. Dockerλ₯Ό μ˜ˆμ‹œλ‘œ λ“€λ©΄ entrypoint라고 ν•  수 μžˆλ‹€. μ§„μž…μ μ˜ λ°μ΄ν„°λŠ” λͺ¨λΈλ§μ„ ν•˜λŠ” μ™ΈλΆ€ μ„Έκ³„μ˜ μ „ν˜•μ μΈ λ…Έμ΄μ¦ˆμ™€ λΆˆκ·œμΉ™μ„±μ„ λͺ¨λ‘ λ‚΄ν¬ν•˜κ³  μžˆμ–΄ κ°€μž₯ μ›μ‹œμ μ΄λ‹€. λŒ€κ²Œ 데이터 μ—”μ§€λ‹ˆμ–΄κ°€ 데이터 μˆ˜μ§‘ μ†ŒμŠ€λ₯Ό λ³΄μœ ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€. λŒ€λΆ€λΆ„ 뢄석 μ„œλΉ„μŠ€ λ˜λŠ” API와 같은 일뢀 λΉ„μ¦ˆλ‹ˆμŠ€ λͺ©ν‘œ, μ—…μŠ€νŠΈλ¦Ό 도ꡬ에 μ˜μ‘΄ν•œλ‹€. 데이터 μ†ŒμŠ€λŠ” 크게 μ„Έκ°€μ§€λ‘œ λΆ„λ₯˜ λœλ‹€.

  1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 둜그 데이터
  • μ†Œν”„νŠΈμ›¨μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‚΄μ˜ μž‘μ—…μœΌλ‘œ μƒμ„±λœ 데이터λ₯Ό λ‚˜νƒ€λ‚΄λ©° ν΄λΌμ΄μ–ΈνŠΈμš© λ˜λŠ” λ‚΄λΆ€μš©μΌ 수 μžˆλ‹€. μž‘μ—…μ€ μ‚¬μš©μž μ‹œμž‘ λ˜λŠ” ν”„λ‘œκ·Έλž˜λ° 방식일 수 μžˆλ‹€. μ†Œν”„νŠΈμ›¨μ–΄ logger의 INFOλ‚˜ DEBUGGERκ°€ 이 μ’…λ₯˜ 쀑 ν•˜λ‚˜μ΄λ‹€.
  • 운영 μ²΄μ œκ°€ λΆ€νŒ…λ  λ•Œ μ‹œμŠ€ν…œ λ‘œκ·Έμ™€ 달리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œκ·Έμ— ν¬ν•¨λ˜κ±°λ‚˜ μ œμ™Έν•˜λŠ” 것 κ°œλ°œμžμ—κ²Œ 달렸닀.
  • μˆ˜μ§‘ μ˜ˆμ‹œ : ν•œ λΈ”λ‘œκ·Έ λ…μžκ°€ μ›ΉνŽ˜μ΄μ§€μ—μ„œ 10뢄을 λ¨Έλ¬Όλ €μœΌλ©° ν…μŠ€νŠΈμ—μ„œ λ‚˜κ°€λŠ” 링크λ₯Ό 3개 클릭.
  • μ–΄ν”Œλ¦¬ μΌ€μ΄μ…˜ λ‘œκ·ΈλŠ” λ‹¨μˆœ 직렬화 ν…μŠ€νŠΈ λ°μ΄ν„°μ΄λ―€λ‘œ ASCII λ˜λŠ” 이진 ν˜•μ‹μœΌλ‘œ μ‚¬μš©ν•  κ°€λŠ₯성이 λ†’λ‹€. κ΅¬μ‘°λŠ” κ°œλ°œμžμ—κ²Œ λ‹¬λ €μžˆμ–΄ λ‹€μ–‘ν•˜λ©° μ•„λž˜λŠ” 기본적인 κ³ λ € μš”μ†Œμ΄λ‹€.
    • νƒ€μž„μŠ€νƒ¬ν”„ : 둜그 ν…μŠ€νŠΈλŠ” λŒ€λΆ€λΆ„ μ€„λ°”κΏˆμœΌλ‘œ κ΅¬λΆ„λ˜μ–΄ μžˆλŠ” κ°œλ³„ μ΄λ²€νŠΈμ΄λ‹€. ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μž‘μ—…μ„ μ˜¬λ°”λ₯΄κ²Œ μˆ˜ν–‰ν•˜λŠ” 경우 μ΄λ²€νŠΈμ— νƒ€μž„μŠ€νƒ¬ν”„κ°€ ν‘œμ‹œλœλ‹€. νƒ€μž„μŠ€νƒ¬ν”„λŠ” 이벀트 μ„€λͺ…κ³Ό 달리 ISO ν‘œμ€€ ν˜•μ‹μ΄λ‚˜ 이와 μœ μ‚¬ν•œ ν˜•μ‹μœΌλ‘œ ν‘œμ€€ν™”λ˜μ–΄μ•Όν•œλ‹€.
    • 둜그레벨 : 쒋은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œκ·ΈλŠ” 'LEVEL'을 μ‚¬μš©ν•˜μ—¬ λŒ€λž΅μ μœΌλ‘œ 각 이벀트의 둜그 μœ ν˜•μ„ μ²΄κ³„ν™”ν•œλ‹€. INFO, WARN, ERROR
    • λͺ©μ  : λͺ¨λ“  λ°μ΄ν„°λŠ” μˆ˜μ§‘ν•˜λŠ” 데 λΉ„μš©μ΄ λ“€κΈ° λ•Œλ¬Έμ— μ“Έλͺ¨ μ—†λŠ” λ‘œκ·ΈλΌλ„ μ–΄λ”˜κ°€μ— μ“Έλͺ¨κ°€ μžˆμ–΄μ•Όν•œλ‹€.
      • μš”μ²­μ΄ μ–Όλ§ˆλ‚˜ 자주 μ‹œκ°„μ„ μ΄ˆκ³Όν•˜λŠ”μ§€?
      • νŽ˜μ΄μ§€ λ‘œλ“œκ°€ λŠλ €μ§€κ³  μžˆλŠ”μ§€?
      • 더 이상 ν™œμš©λ˜μ§€ μ•ŠλŠ” 라이브러리 κΈ°λŠ₯을 μ‚¬μš©ν•˜κ³  μžˆλŠ”μ§€?
  1. API 응닡
  • ν•˜λ‚˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ λͺ¨λ“  것을 ν•  수 μ—†κΈ° λ•Œλ¬Έμ— νŠΉμ • κΈ°λŠ₯을 λ‹€λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 맑긴닀. APIλŠ” 두 ν”„λ‘œκ·Έλž¨ μ‚¬μ΄μ˜ 맀개체둜, νŠΉμ • ν˜•μ‹μ˜ 'μš”μ²­'κ³Ό 이에 λŒ€ν•œ '응닡'이 ν•„μš”ν•˜λ‹€. λ°˜κ΅¬μ‘°ν™” 데이터λ₯Ό μ‚¬μš©ν•œλ‹€. APIμ—μ„œ κ°€μ Έμ˜¨ μ•€λ“œν¬μΈνŠΈμ—μ„œ 데이터λ₯Ό μ €μž₯ν•  수 μžˆλ‹€. API 데이터λ₯Ό μ‚¬μš©ν•  λ•Œ λ‹€μŒ 사항에 주의 ν•΄μ•Όν•œλ‹€.
    • ꡬ쑰 : API 응닡 κ°œμ²΄λŠ” 둜그처럼 직렬화할 수 μžˆμ§€λ§Œ ꡬ쑰화 λ˜λŠ” λ°˜κ΅¬μ‘°ν™” ν˜•μ‹μœΌλ‘œ 압좕이 ν’€λ¦°λ‹€. JSON은 맀우 μœ μ—°ν•˜μ§€λ§Œ μ€‘μš”ν•œ λ°©μ‹μœΌλ‘œ ꡬ쑰에 μ œμ•½μ„ λ°›λŠ”λ‹€.(key-value) 둜그 데이터와 많이 λ‹€λ₯΄λ‹€. 이처럼 HTTP/1.1κ³Ό 같은 HTTP 응닡 사양은 HTTP μš”μ²­ λ˜λŠ” 응닡 본문에도 JSON λ˜λŠ” XML을 포함할 수 μžˆλ‹€.
    • 응닡 μ½”λ“œ : API μš”μ²­μ€ μ„±κ³΅ν•˜κ±°λ‚˜ μ‹€νŒ¨ν•  수 μžˆμœΌλ―€λ‘œ λŒ€λΆ€λΆ„μ˜ API μ‚¬μ–‘μ—λŠ” λ‹€μ–‘ν•œ 응닡 μœ ν˜•μ— λŒ€ν•œ μ½”λ“œκ°€ μžˆλ‹€.
      • HTTP μƒνƒœ μ½”λ“œ : 200 OK, 404 Not Found, 500 Internal Server Error
      • 기타 전솑 ν”„λ‘œν† μ½œ : SOAP API
    • λͺ©μ  : API μ‚¬μš© μ‚¬λ‘€μ˜ μ„Έκ³„λŠ” λ°©λŒ€ν•˜λ―€λ‘œ λ°œμƒν•  수 μžˆλŠ” λͺ¨λ“  λ‚΄μš©μ„ μ˜ˆμΈ‘ν•  수 μ—†λ‹€. 또 μ„œλ²„ 였λ₯˜μœ¨μ„ 쀄이고 μ‹Άλ‹€λ©΄ μ½”λ“œλ₯Ό 볼것이닀. 이처럼 νŠΉμ • μƒν™©μ—μ„œ μ „μ†‘λœ 일뢀 μ •λ³΄λŠ” μœ μš©ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€.
  1. μ„Όμ„œ 데이터
  • μˆ˜μ§‘ν•  수 μžˆλŠ” μ„Έ 번째 ν˜•νƒœμ˜ λ°μ΄ν„°λŠ” 사물 인터넷 μž₯치 λ˜λŠ” 연ꡬ μž₯비와 같은 'μ„Όμ„œ'μ—μ„œ 얻을 수 μžˆλ‹€. μ„Όμ„œλŠ” λ‚΄λΆ€ 논리가 맀우 λ‹¨μˆœν•˜κΈ° λ•Œλ¬Έμ— λ°˜λ“œμ‹œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ ν™œμš©ν•˜μ§„ μ•ŠλŠ”λ‹€. GPU 점유율, GPU μ˜¨λ„, CPU μ‚¬μš©λŸ‰ 등이 이에 ν•΄λ‹Ήν•œλ‹€. μ£Όμš” κ³ λ € 사항은
    • λ…Έμ΄μ¦ˆ : μ‹€μ œ μ„Όμ„œ λ°μ΄ν„°μ—λŠ” 수 λ§Žμ€ λ…Έμ΄μ¦ˆκ°€ μ‘΄μž¬ν•œλ‹€. 일뢀 λ°μ΄ν„°λŠ” Garbage일 수 μžˆλ‹€. ν•˜μ§€λ§Œ 이 데이터λ₯Ό 가지고 ν‰ν™œν™”, λ³€ν™˜ 등을 톡해 였λ₯˜λ₯Ό 제거 ν•  수 μžˆλ‹€.

(2) 배치 vs μ‹€μ‹œκ°„ 처리

2010λ…„κΉŒμ§€ 데이터λ₯Ό 배치둜 μ²˜λ¦¬ν•˜λŠ” 것이 μΌλ°˜μ μ΄μ§€λ§Œ 이후 μ‹€μ‹œκ°„ μ²˜λ¦¬μ— λŒ€ν•œ μˆ˜μš”κ°€ 늘며 두가지 λͺ¨λ‘ μ‚¬μš©ν•˜κ³  μžˆλ‹€.

  • 배치 처리 : 일정 κΈ°κ°„ λ™μ•ˆ 데이터λ₯Ό μˆ˜μ§‘ν•˜μ—¬ λŒ€λŸ‰μ˜ 데이터λ₯Ό λ³„κ°œμ˜ νŒ¨ν‚·μœΌλ‘œ '배치'
    • ex) μ‹ μš© μΉ΄λ“œ 거래 처리
  • μ‹€μ‹œκ°„ 처리 : ν”„λ‘œμ„ΈμŠ€λŠ” κΈΈμ§€λ§Œ 데이터λ₯Ό 거의 μ¦‰μ‹œ 처리
    • ex) 사기 μ‹ κ³  방지

배치 ν”„λ‘œκ·Έλž¨

  • μ˜€ν”ˆ μ†ŒμŠ€
    • λŒ€μš©λŸ‰ λΆ„μ‚° 처리 μ˜€ν”ˆ ν”„λ‘œκ·Έλž¨ ν•˜λ‘‘
  • 사섀
    • Google bigQuery, SnowFlake, Microsoft Azure, Amazon Redshift

μ‹€μ‹œκ°„ 처리 ν”„λ‘œκ·Έλž¨

  • μ˜€ν”ˆμ†ŒμŠ€
    • Spark, Kafka, Flink, Storm, Flume, Apache Solution
    λ°°μΉ˜ν”„λ‘œκ·Έλž¨μ€ κ°€λŠ₯ν•œ λ§Žμ€ μ–‘μ˜ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것과 반면 μ‹€μ‹œκ°„ λ°μ΄ν„°λŠ” κ°€λŠ₯ν•œ λΉ λ₯΄κ²Œ 데이터λ₯Ό μ œκ³΅ν•˜λŠ” 것에 초점이 λ˜μ–΄ μžˆλ‹€. 각 λ°μ΄ν„°μ˜ ν’ˆμ§ˆμ€ λ°°μΉ˜ν”„λ‘œκ·Έλž¨μ΄ 더 높은 κ²½ν–₯이 μžˆλ‹€. μ‹€μ‹œκ°„ 데이터(슀트림)λŠ” 였λ₯˜μ— 더 μ·¨μ•½ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

μ‹€μ‹œκ°„ λ°μ΄ν„°μ˜ 였λ₯˜μ— λŒ€ν•œ μ˜ˆμ‹œλ₯Ό λ“€λ©΄ μ‹€μ‹œκ°„μœΌλ‘œ κ³ κ°μ—κ²Œ λ§žλŠ” κ΄‘κ³ λ₯Ό κ²Œμ‹œν•  λ•Œ 였λ₯˜λ‘œ 인해 잘λͺ»λœ κ΄‘κ³ λ₯Ό 보낸닀면 μ“Έλ°μ—†λŠ” κ΄‘κ³  λΉ„μš©μœΌλ‘œ μΈν•œ μ§€μΆœμ΄ 계속 λ°œμƒν•  것이닀. 잠재적인 μˆ˜μ΅μ„ λ†“μΉ˜κ±°λ‚˜ μ‚¬μš©μž κ²½ν—˜μ„ μ €ν•˜μ‹œν‚€λŠ” κ΄€λ ¨ μ—†λŠ” κ΄‘κ³ λ₯Ό κ²Œμ‹œ ν•  μˆ˜λ„ μžˆλ‹€.

이런 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 데이터 ν’ˆμ§ˆμ€ ν…ŒμŠ€νŠΈλ₯Ό 톡해 관리 λœλ‹€. ν…ŒμŠ€νŠΈ 이후 λ¬Έμ œκ°€ μ—†λŠ” μ‹μœΌλ‘œ 배치 ν˜•νƒœλ‘œ 처리λ₯Ό ν–ˆλ‹€. μ‹€μ‹œκ°„ λ°μ΄ν„°μ—μ„œλŠ” μ–΄λ–»κ²Œ μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν• κΉŒ?

  • 데이터 ν’ˆμ§ˆμ— κ΄€ν•œ μƒˆλ‘œμš΄ 였λ₯˜λŠ” 항상 λ°œμƒν•˜λ©° μ—”μ§€λ‹ˆμ–΄λ“€μ€ λ¬Έμ œκ°€ λ‹€μš΄μŠ€νŠΈλ¦Ό ν…Œμ΄λΈ”κ³Ό μ‚¬μš©μžμ—κ²Œ 영ν–₯을 미치기 전에 원인을 λΆ„μ„ν•œλ‹€. ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ μ²˜λ¦¬λ„ 20% 밖에 ν•΄κ²°ν•˜μ§€ λͺ»ν–ˆλ‹€. 적은 수의 해결이라도 'μ•Œλ €μ§„ 미지'(μ˜ˆμΈ‘κ°€λŠ₯ν•œκ²ƒ)κ°€ μ‘΄μž¬ν•œ 것이닀. 데이터 μƒνƒœκ³„μ—μ„œλŠ” λ³΅μž‘μ„±μ΄ 증가함에 따라 기쑴의 처리 및 ν…ŒμŠ€νŠΈ 방법이 κ΅¬μ‹μœΌλ‘œ 보이기 μ‹œμž‘ν–ˆλ‹€.
λ°˜μ‘ν˜•

'πŸ›’οΈ Database' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

데이터 ν’ˆμ§ˆμ˜ λΉ„λ°€ (4)  (0) 2024.08.20
Data Orchestration  (0) 2024.08.03
Airflow Entrypoint  (0) 2024.07.28
데이터 ν’ˆμ§ˆμ˜ λΉ„λ°€ (2)  (0) 2024.07.21
데이터 ν’ˆμ§ˆμ˜ λΉ„λ°€ (1)  (0) 2024.07.17
λ‹€ν–ˆλ‹€