2014년 12월 7일 일요일

개발자를 위한 2015년 전망 zdnet korea

출처 : zdnet korea
칼럼니스트 임백준 저
이메일 : baekjun.lim@gmail.com
약력 : 한빛미디어에서 『폴리글랏 프로그래밍』(2014),『누워서 읽는 퍼즐북』(2010), 『프로그래밍은 상상이다』(2008), 『뉴욕의 프로그래머』(2007), 『소프트웨어산책』(2005), 『나는 프로그래머다』(2004), 『누워서 읽는 알고리즘』(2003), 『행복한 프로그래밍』(2003)을 출간했고, 로드북에서 『프로그래머 그 다음 이야기』(2011)를 출간했다. 삼성SDS, 루슨트 테크놀로지스, 도이치은행, 바클리스, 모건스탠리 등에서 근무했고 현재는 맨해튼에 있는 스타트업 회사에서 분산처리, 빅데이터, 머신러닝과 관계된 업무를 수행하고 있다.

2014년이 저물어간다. 연초에 새로운 것을 공부하거나 익히기로 마음을 먹었던 사람은 지난 한해를 돌아보며 얼마나 많은 실천이 있었는지 돌아볼 시점이다. 그리고 이제 2015년을 위한 새로운 결심을 준비해야 한다. 하지만 구체적인 내용이 없는 결심은 공허하다. 실속 있는 결심을 위해서 2015년에 주목할 만한 부분을 이야기 해보자.

자바를 이용하는 개발자에게 2014년은 큰 의미가 있는 한해였다. 상반기에 출시된 자바 8에 10년 동안 기다려오던 람다가 포함되었기 때문이다. 메인스트림 언어 중에서 유일하게 람다가 결여되어 있었던 자바는 8 버전이 출시됨과 동시에 오명을 씻게 되었다.

하지만 현장에서는 아직도 많은 프로젝트가 자바 8 이전 버전을 통해서 개발이 되고 있다. 자바 8을 사용한다고 해도, 람다와 스트림 같은 새로운 API를 이용하지 않고 과거의 코딩방식을 고수하는 사람도 많다. 소스코드가 바이트코드로 컴파일 되고 나면 다를 것이 없긴 하지만, 프로그래머 자신의 생산성이라는 측면에서는 큰 차이가 있다.

2016년 상반기에 출시될 것으로 예상되고 있는 자바 9에 포함되는 기능은 값 타입(value type)이나 모듈화 된 소스코드(project Jigsaw) 등이 주목할 만한데, 람다만큼 파급효과가 커다란 변화는 없을 것으로 보인다. 따라서 아직 자바 8의 기능을 충분히 활용하고 있지 않은 자바 개발자라면 2015년의 목표에 자바 8을 익히는 것을 포함시키는 것이 의미가 있을 것이다.

닷넷 진영에게 2014년은 혁명이 시작된 시기로 기억될 것이다. 마이크로소프트라는 배는 사티야 나델라라는 선장을 맞이하면서 ‘윈도’라는 좁은 강물을 벗어나 멀티플랫폼이라는 넓은 바다로 진출했다. 개발 도구 비주얼 스튜디오 무료 버전을 내놓기 시작했고, 닷넷 서버 스택을 오픈소스로 공개했다. MS의 행보는 단순한 제스처는 넘어섰다.

나는 폴리글랏 프로그래밍을 이야기 하면서 국내 자바 개발자들에게 C#을 학습하는 것이 여러 가지 긍정적인 의미가 있다고 이야기했다. 언어 자체만 놓고 보았을 때 C# 언어는 자바에 비해서 함수 패러다임을 녹여낸 밀도가 높다. 그래서 자바보다 간결하고 우아하다. 그렇기 때문에 자바 개발자가 C#을 공부하는 것은 친숙한 문법을 통해서 새로운 패러다임의 맛을 접할 수 있는 훌륭한 방법이 된다.

실제 세상의 언어를 익히는 과정은 궁극적으로 낯선 문화를 이해하는 것으로 귀결된다. 마찬가지로 프로그래밍 언어의 학습은 새로운 생태계(ecosystem)를 익히는 과정으로 수렴한다. C#은 자바 개발자에게 새로운 생태계의 전반적인 모습을 살펴볼 수 있는 기회를 제공할 것이며 그런 기회는 개발자의 안목을 넓히는데 커다란 도움을 준다. 이런 의미에서 2015년의 목표에 C#이나 닷넷 플랫폼을 익히는 내용을 집어넣는 것도 좋은 생각일 것이다.

아키텍처와 관련된 부분에서는 반응형(reactive) 시스템과 마이크로서비스 아키텍처의 흐름이 뜨겁다. 애플리케이션의 복잡성이 통제하기 어려운 수준으로 높아지고, 다뤄야 하는 데이터의 용량이 기하급수적으로 늘어나면서 소프트웨어를 작성하고 배포하는 방법 자체가 새롭게 변하고 있다. 추상적인 이야기를 싫어하는 개발자라면 '애자일 선언'과 닮은 '반응형 선언'을 좋아하지 않겠지만, 선언의 홈페이지(http://www.reactivemanifesto.org/)를 방문하면 반응형이라는 개념에 대한 상세한 설명을 읽을 수 있다.

마이크로서비스 아키텍처는 한 시기를 풍미했던 서비스지향 아키텍처(SOA)의 리메이크 버전이다. 자체로는 새로울 것이 없고 어려울 것도 없는 개념인데, 그것이 스프링 부츠(Spring Boots)와 같은 프레임워크와 결합되어 구현되어 나가는 방식이 흥미롭다. 이러한 개념이나 도구를 아직 접하지 않은 개발자라면 2015년에 관심을 갖고 지켜볼 만하다.

CQRS나 이벤트 주도(Event-driven)라는 설계 방식도 많은 주목을 받고 있어서 2015년 동안 광범위하게 적용될 가능성이 높다. 코드를 패키지로 만들어서 배포하는 분야에서는 도커(Docker)가 소스코드 관리에서 깃(Git)이 몰고 온 수준의 반향을 일으키면서 많은 주목을 받고 있다.

애플리케이션 개발에 집중하는 개발자라면 별로 관심을 가질 만한 분야가 아닐 수도 있는데, 시스템 관리자와 개발자의 경계를 허무는 데브옵스(DevOps)의 흐름이 주목을 받는 현실을 고려하면 도커는 개발자에게도 의미 있는 도구가 될 공산이 크다.

2015년과 관련해서 예언을 하나 하라면, 머신러닝의 대중화를 말하고 싶다. 여기에서 ‘대중화’란 대학교수나 박사과정 학생들이 상아탑 안에서 다루던 머신러닝이라는 신전(神殿)이 API를 타고 땅으로 내려와 개발자 앞에 서게 된다는 사실을 의미한다. 그런 일은 이미 일어났거나 일어나고 있다. 구글의 Prediction IO, IBM의 왓슨 애널리틱, 마이크로소프트 애저 ML은 물론, 싸이킷런(scikit-learn)의 라이브러리, 아파치 스파크 Mllib 등을 통해서 머신러닝이라는 가공할 무기가 바야흐로 개발자들의 손에 쥐어지고 있는 중이다.

지금까지 수 년 동안 업계를 뒤흔들어온 ‘빅데이터’라는 화두의 끝은 어디일까? 데이터는 그 자체로는 아무 의미를 갖지 않는다. 이모저모로 분석이 되어 비즈니스의 목적에 유의미한 정보가 추출되었을 때, 혹은 미래에 대한 판단이나 예측을 수행할 수 있을 때에 한해서 의미를 갖는다.

하지만 과거에 비해서 비교할 수 없을 정도로 빠르게, 어마어마한 양으로 쏟아져 들어오는 데이터를 어떻게 일일이 분석할 수 있겠는가? 기계가 발생시키는 데이터는 기계가 분석하도록 시킬 수밖에 없다. 그래서 머신러닝이다. 아직은 많은 개발자가 머신러닝이 자신의 ‘개발업무’와 상관이 없는 이색적인 분야라고 생각한다. 그렇지 않다. 이와 관련해서 12월 12일 금요일 저녁에 강의가 있을 예정인데 관심 있는 개발자의 참석을 권한다.

스칼라언어, 아카라이브러리, 함수 언어, 새롭게 등장하는 언어 등 2015년을 전망하면서 하고 싶은 이야기는 더 많이 있지만, 지면 관계상 이 정도에서 정리해야 할 것 같다. 어쨌든 중요한 것은 전망이 아니라 실천이다. 어떤 결심을 하고, 어떤 계획을 세우든 실천이라는 힘이 지켜주지 않으면 의미가 없기 때문이다. 2014년의 남은 날들을 잘 보내서 2015년 한해를 위한 힘을 비축하기 바란다.

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.

관련기사
그대 힘으로 생각하라, 가차없이 질문하라
저물어가는 프로그래밍의 시대
그대가 엉터리 개발자라는 신호들
마이너리그에 속한 개발자를 위하여
프로그래밍을 어떻게 배울 것인가
프로그래머에게 자격증은 모욕이다