전통적인 분산 컴퓨팅

- 전통적인 데이터 처리 패러다임은 일반적으로 client-server 모델이며, 데이터를 코드로 이동시키기 위해 사용했다.



- DB Server(간단히 server)는 주로 데이터 연산을 수행하고 그 결과를 client-server (client)프로그램으로 반환한다.

- 다양한 연산과 client device 또한 기하급수적으로 증가

-결과적으로, 백그라운드에서 server의 컴퓨팅 엔드포인트의 배열이 복잡해진다.

-또한 늘어난 연산을 저장하고 처리할 수 있도록 application(client) server와 DB server를 늘려야 한다.

-결과적으로, 노드 간 데이터 전파와 이 네트워크 전반에 걸쳐 데이터의 앞뒤로의 전송 역시 크게 늘어나게 된다. 따라서, 네트워크 자체가 성능 병목 현상(bottleneck)을 겪게 된다.


이라하여, 이러한 종류의 컴퓨팅 패러다임에서 (확장성과 처리량 모두에서의) 성능은 의심의 여지없이 문제가 된다.



코드에서 데이터로의 이동

- 데이터를 코드로 이동시키는 대신 코드 또는 애플리케이션을 데이터로 이동시켜서 데이터를 조작하고 처리하고 (데이터가 저장되는) 홈에서 관련 컴퓨팅을 할 수 있도록 새로운 컴퓨팅 패러다임이 절실히 필요하다.


- 데이터로 코드를 이동시킴으로써 컴퓨팅 구조가 크게 바뀌었다는 점이 눈에 띈다.

- 네트워크를 통한 데이터 전송량이 크게 줄었다.

- 이유는 작은 소프트웨어 코드만을 컴퓨팅 노드로 전송해 반환 결과로 원본 데이터의 작은 subset을 돌려받게 됐기 때문이다.

- 이것을 가능하게 한 개념은 RDD, dataset, dataframe 을 비롯해 스파크의 유익한 기능 덕분이다.