2016년의 5가지 소프트웨어 개발 트렌드

기술적인 용어를 쉽게 설명하기 위해 원문에 테크니들 인사이트를 첨가하였습니다.

1. 자바 스크립트 ES6의 성장

The Simpsons 타이틀에 나오는 “무사고 2일째”를 “새로운 자바스크립트 프레임워크가 안 나온 지 2일째”로 바꿔 풍자한 그림. 

그동안 자바스크립트는 브라우저와 컴파일러마다 다르게 작동하여서 많은 문제를 일으켰다. 이러한 문제를 해결하기 위해 세계 정보기술 표준 협회 Ecma에서는 ECMAScript를 발표하였다. Ecma는 원래 유럽 컴퓨터 제조사 협회(European Computer Manufacturers Association)로 시작한 단체이다. 1994년 유럽에서 벗어나 세계 표준을 개발하는 단체가 되어 줄임말인 ECMA가 아닌 한 단어 이름 Ecma로 개칭하였다. 

2015년에 발표된 JavaScript 또는 ECMAScript 버전 6 (ES6 또는 ES2015)가 많은 브라우저와 Node.js에 적용되면서 웹 용 스크립트의 표준이 되었다.  ES6가 표준화되면서 웹 개발은 더 수월해졌으며 기존 코드베이스에 영향을 많이 받지 않는 에어비앤비나 구글은 빠르게 ES6를 채용하였다. 그러나 아직 구버전의 자바스크립트들이 웹 상에 사용되고 있다. 2017년에는 더 많은 ES6 적용이 기대된다.

jQuery, Angular, Backbone 등 수 많이 나타났던 자바스크립트 프레임워크 중 페이스북이 만든 React가 최근 프론트엔드 프레임워크의 대세로 자리잡고 있다.

2. 서비스형 백엔드

서비스형 백엔드(Backend as a Service, BaaS)가 새로운 표준이 되어가고 있다. 기존의 서버는 하나의 서비스와 하나의 데이터베이스로 일반적으로 구성이 되어 있었다. 하나의 서비스로 구성을 하면 확장성에서 한계를 갖게 된다. BaaS는 하나의 서비스를 여러개의 작은 서비스로 구성한다. 예를 들어, 에어비앤비의 경우 이전에 하나의 Ruby on Rails서비스에서 로그인, 결제,  예약 관리 등을 담당하였다면, 각각의 서비스를 별도의 서버에 구성하여 서비스 API Call로 정보를 모으는 식이다. BaaS로 구성하면 각 서비스를 다른 언어와 데이터베이스를 활용하여 구성할 수 있다. 

이러한 구성을 통해 각 개발 팀은 각각의 서비스 개발에만 집중할 수 있으며, 클라우드 등 서드파티 서비스와 연동하기도 쉬워졌으며, 웹 뿐만 아니라 다양한 iOS, 안드로이드 등 다양한 클라이언트와의 연동도 쉬워졌다.

3. 가상 환경의 활용

DockerPacker같은 서비스를 활용하여 가상 환경(Virtual Environment)의 이미지를 구성하는 방법이 대중화되었다. 어느 컴퓨터에나 원격 서버에나 이미지를 설치하면 같은 환경에서 개발을 할 수 있게 된다. 특히 여러대의 서버를 관리해야 하는 클라우드 환경에서 매우 유용하다.

가상 환경 이미지를 이용하여 개발자는 아무 원격 서버에나 이미지를 올려서 빠르게 테스트를 할 수 있으며, 서버 관리자의 경우 같은 이미지를 여러 서버에 쉽게 설치하여 분산 시스템을 구성할 수 있다. 또 한 서버에 문제가 생기면 쉽게 그 서버를 끄고 다른 서버에 같은 이미지를 설치하여 대체할 수 있다.

4. 함수형 언어의 활용

Image result for most popular coding languages of 2016

Haskell, Clojure, Scala같은 함수형 언어의 활용도가 급속히 높아졌다. 함수형 언어들은 분산형 컴퓨팅을 하는 데 매우 유용하다. 함수형 언어들은 빅데이터 처리에 표준이 되었으며, 다방면에서 자바 등 기존의 언어를 대체해 가고 있다. 다만 함수형 언어를 잘 활용하는 엔지니어를 찾는 것은 쉽지 않기 때문에, 일반 개발에서는 자바나 파이썬을 더 선호하는 편이다. 

5. 표준화된 디자인 패턴

구글은 Material Design Elements를 발표하여 크롬, 안드로이드, 구글 플레이 등 모든 구글의 프로덕트에 적용하였다. 평면과 원을 활용하여 계층을 형상화하여 통일된 UX를 제공하는 매트리얼 디자인은 여러 앱에서 표준으로 활용되고 있다. 애플 또한 Human Interface Guideline을 제공하여 애플 제품들의 UX를 표준화하고 있다. 

[insight]최근 몇년간 루비, 파이썬, 자바, C++, 스칼라, 그리고 수많은 자바스크립트프레임워크 등으로 파편화 되었던 개발환경과 각 앱마다 다르던 디자인 패턴, 서버 구성 패턴들이 점점 표준화가 되어가고 있는 양상이다.

프론트엔드의 경우 React가 수 많은 자바스크립트 프레임워크 중 대세의 자리에 올라섰다. 백엔드는 작은 회사의 경우 Node.js, 큰 회사의 경우 자바 서비스를 채택하는 경우가 많아졌다. 빅데이터 활용에는 스칼라 기반 스파크나 빅데이터 DB에 SQL를 쓸 수 있게 해 주는 Presto DB 등이 사용되고 있다.[/insight]

원문 기사: 테크크런치 / 이미지출처: DDI Dev

Written by

유호현: 샌프란시스코 Airbnb에서 일하고 있는 소프트웨어 엔지니어입니다. 이전에는 Twitter의 Language Engineering 팀과 Search Quality 팀에서 일하였습니다. 오픈소스 한국어 처리기 프로젝트인 open-korean-text를 개발했습니다. http://openkoreantext.org