<aside> ✂️
실시간으로 처리 못하는 대용량의 데이터들은 일괄처리를 한다.
유닉스 시절부터 단일 서버에서 로그를 가공할 때 일괄 처리 개념을 명령어만으로도 훌륭히 구현한 사례가 있다.
맵리듀스는 분산환경에서 알아두면 좋을 데이터 처리 모델이고, 요즘은 아파치 스파크가 성능이 더 좋다.
백엔드 웹 개발자가 직접 만들 일은 없을 것 같다(생각)
</aside>
일괄 처리 시스템은 1회당 엄청 많은 양의 데이터를 처리해야 하는 오프라인 시스템이다.
한꺼번에 데이터를 모아서 처리하는 것이 더 효율적이고 돈이 적게 드는 경우 사용한다.
온라인 시스템과의 차이점은 성능 지표다.
실시간 처리와 일괄 처리 시스템의 비교
대략 아래 정도를 염두해 두고 시스템을 머릿속에 그려본다.
크기 | TB, PB 단위 가능? |
---|---|
형식 | CSV, JSON |
입력되는 경로 | 메시지 큐, 파일 시스템 |
변경 가능성 (결정성) | 작업 도중 변경될 수 있나? |
중요도 | 손실되면 안되는 중요 데이터인가? |
분산된 환경에서 원격 DB의 데이터를 직접 질의하는 방법은 나쁘다. (네트워크 비용 + 비결정적 데이터)
<aside> 🌟
좋은 방법은 DB 사본을 추출해서 관련 데이터가 있는 분산 파일 시스템에 넣는 방법이다.
그래야 연관된 데이터들끼리 같은 장소로 모아 효율적으로 처리할 수 있기 때문이다.
</aside>
<aside> ✂️
책에서는 일괄 처리를 떠나서 유닉스의 훌륭한 철학과 설계 구조에 대해서도 이야기가 나온다 (예: 느슨한 결합, 인터페이스 정의 등). 나중에 코딩할 때 보지 뭐.
</aside>
진행 상황 파악 및 디버깅 용이가 유닉스의 가장 큰 장점이다