|
| 1 | ++++ |
| 2 | +author = "Seorim" |
| 3 | +title = "데이터 처리(1): 실시간 데이터 처리" |
| 4 | +slug = "240122-1" |
| 5 | +date = 2024-01-22T16:29:58+09:00 |
| 6 | + |
| 7 | +categories = [ |
| 8 | + "DevCourse", |
| 9 | +] |
| 10 | +tags = [ |
| 11 | + "TIL", "Kafka", "Spark Streaming" |
| 12 | +] |
| 13 | ++++ |
| 14 | + |
| 15 | +<style> |
| 16 | +g1 { color: #79AC78 } |
| 17 | +g2 { color: #B0D9B1 } |
| 18 | +g3 { color: #D0E7D2 } |
| 19 | +g4 { color: #618264 } |
| 20 | +o1 { color: #F9B572 } |
| 21 | +w1 { color: #FAF8ED } |
| 22 | +</style> |
| 23 | + |
| 24 | +# 구글의 기술 공유가 데이터 처리 분야에 미친 영향 |
| 25 | + |
| 26 | +## Page Rank |
| 27 | + |
| 28 | +- 대용량 컴퓨팅 인프라와 소프트웨어가 필요해진 시점 |
| 29 | + |
| 30 | +# 데이터 처리 단계 |
| 31 | + |
| 32 | +## 데이터 수집 (Data Collection) |
| 33 | + |
| 34 | +## 데이터 저장 (Data Storage) |
| 35 | + |
| 36 | +> Data Warehouse -> Data Lake -> Cloud Data Platform / Messaging Queue -> Data Mesh |
| 37 | +
|
| 38 | +# 데이터 처리 (Data Processing) |
| 39 | + |
| 40 | +> Batch Processing -> Realtime(& Semi Realtime) Processing |
| 41 | +
|
| 42 | +## 용어 및 개념 정리 |
| 43 | + |
| 44 | +- Throughput : 단위 시간 동안 처리할 수 있는 데이터 양 |
| 45 | + - 배치 시스템에서 중요 |
| 46 | +- Latency : 데이터를 처리하는 데 걸리는 시간 |
| 47 | + - 실시간 시스템에서 더 중요 |
| 48 | +- Bandwidth : Throughput x Latency |
| 49 | + |
| 50 | +- SLA(Service Level Agreement) : 서비스 제공업체와 고객간의 계약 또는 합의사항으로, 사내 시스템 사이에서도 정의됨 |
| 51 | + - `uptime` 99.9% 보장 : 1년의 0.1%인 8시간 45.6분을 제외하고는 항상 작동함을 보장 |
| 52 | + - 99%(or average) of API's `latency` = 0.5s 보장 |
| 53 | + - `freshness` of data |
| 54 | + |
| 55 | +## Lambda Architecture |
| 56 | + |
| 57 | +## 배치 처리(Batch Processing) |
| 58 | + |
| 59 | +> 주기적으로 데이터를 이동시키거나 처리하는 것 |
| 60 | +
|
| 61 | +- Throughput 중요 |
| 62 | +- 주기는 보통 `hourly, daily`이며 짧은 경우엔 5~10분 정도 |
| 63 | +- 주기가 이보다 짧을 경우 배치 처리를 위한 프레임워크에서 처리하기엔 적절하지 않음 |
| 64 | + |
| 65 | +### 시스템 구조 |
| 66 | + |
| 67 | +- Distributed File System : HDFS, S3 |
| 68 | +- Distributed Processing System : MapReduce, Spark (DataFrame, SQL), ... |
| 69 | +- Data Process Scheduling : Airflow |
| 70 | + |
| 71 | +## 실시간 처리(Realtime Processing, Streaming Processing) |
| 72 | + |
| 73 | +> 연속적인 데이터를 처리하는 것 |
| 74 | +
|
| 75 | +- Latency 중요 |
| 76 | +- realtime과 semi-realtime(micro batch)로 나뉨 |
| 77 | + |
| 78 | +# 실시간 데이터 종류와 사용 사례 |
| 79 | + |
| 80 | +# 실시간 데이터 처리 과정의 challenge |
0 commit comments