앨런 케이가 OOP를 이야기하며 스몰토크를 만들었을 때 결국 가장 크게 염두에 둔 것은 GUI에 대한 접근이었다. 그리고 GUI는 실제로 아이콘을, 버튼을, 창의 동작을 어떻게 컴퓨터에게 이해시킬 것인가라는 질문에 대한 대답을 향해 발전해 왔다.

이윽고 사람들은 많은 GUI 프로그래밍에서 객체들을 구분할 수 있다는 사실을 알게 되었다. 데이터M를 인터페이스 요소V로부터 떼어내는 것이 편하다는 것을 발견하게 되었고 데이터를 가공하여 인터페이스 요소와 연결C시켜주기만 하면 된다는걸 깨달았다.

이것을 MVC패턴이라 하고 이것이 수많은 시간동안 웹서버의 기본문법으로 자리잡았지만, ajax가 발전하고 서버가 데이터에 접근하는 API의 역할만을 수행하게 되면서 이야기는 달라지기 시작한다. MVC 중에서 뷰의 의미가 점점 없어지게 된 것이다.

결국 남는것은 DB로부터 가져온 데이터와 그걸 가공하여 클라이언트에게 되돌려주는 과정이다. 그렇다면 MVC를 고수해야 할 이유는 뭐란 말인가. 많은 프레임웍들은 아직도 뷰를 잘 만들기 위해 모델과 컨트롤러를 어떻게 연결할 것인가에 집중하고 있다.

결국 API 서버를 만들기 위한 좋은 프레임웍은 데이터 자체와 그 가공과정에 집중해야 한다고 생각한다. 그리고 우리는 추상화된 데이터의 플로우에 집중하며 이것을 정말 잘 표현할 수 있는 프로그래밍 패러다임을 알고있다. 바로 함수형 프로그래밍이다.

서버는 데이터를 다루고 클라이언트는 GUI를 다룬다. 프로그래밍이 컴퓨터가 할일을 기술하는 과정이라고 본다면 OOP는 GUI를 더 잘 기술하며 함수형 코드는 데이터플로우를 더 잘 기술한다. 서버가 더이상 MVC의 틀에 갖힐 필요가 없다는 뜻이다.

그런 상황에서 나는 Isomorphic JavaScript를 주창하며 서로 전혀 다른 일을 하는 코드를 굳이 한 틀에 넣고 합치려 하는 시도를 잘 이해할 수 없다. 그렇게 해서 유지보수가 줄어들거였으면 애초에 프로그래머들이 고난을 겪지도 않았다.

그런 생각들로 출발하여, 서버를 함수형 프로그래밍의 패러다임에 더 맞게 짤 수 있는 node.js 프레임웍이 거의 완성되어 이번 주에 팀원들과 이야기해볼 수 있을 것 같다. 참고로 이 글의 문단들은 모두 정확히 140글자이다. 그냥 한번 해봤다.