Martin Angelov의 [The Languages, Frameworks and Tools You Should Learn in 2017] 를 번역한 글입니다.
If writer does not want this article, please contact me.(han41858@gmail.com)
소프트웨어 개발 업계는 빠른 발전을 계속하고 있다. 2016년에도 우리가 일하는 데에 도움을 주거나, 일하는 방식을 바꿨던 수 많은 언어와 프레임워크, 툴이 나왔다. 이 모든 것을 최신으로 따라가는 것은 어려운 일이기 때문에, 연말 즈음에 내년에는 어떤 것이 중요하고 배울만 한 지 살펴보는 시간을 가져보려고 한다.
트렌드
프로그레시브 웹 앱(Progressive Web Apps, PWA)
2016년에 프로그레시브 웹 앱의 컨셉이 등장했다. 이것은 오프라인에서도 동작하고 네이티브 앱 같은 유저 경험을 제공하는 웹 어플리케이션의 개념이다. 프로그래시브 웹 앱은 스마트 디바이스의 홈 화면에 추가할 수 있으며 푸시 노티를 받을 수도 있고, 네이티브 모바일 앱과 비슷한 면도 있다. 2017년에 PWA는 더 중요해지고 연구해볼 만 할 것이다. 좀 더 자세한 설명은 여기를 참고하자.
봇 유행
요즘 많은 사람들이 봇에 대해 이야기 하고 있다. 플랫폼을 운영할 때도, 프레임워크를 만들 때도 커뮤니티 활동에 대한 이야기가 많이 나온다. 이곳을 참고. 봇은 새로운 모바일 앱이며, 지금부터라도 관심을 가지면 많은 사람들이 열광하는 흐름을 함께 할 수 있다. 봇이 새롭긴 하지만, 사실 언제나 귀찮은 사용자 지원을 자동화한 것 뿐일 것이다. 하지만 그게 바로 우리가 원한 거지!!
프론트엔드 프레임워크의 강화
자바스크립트 커뮤니티에서는 거의 매주 새로운 프레임워크, 툴, 또다른 무언가가 계속 나오고 있고, 이것 때문에 미쳐버릴 것 같다. 최근까지는 이전에 있던 툴이 새로운 툴에 의해 대체될 것이라고 생각되었지만, 2016년에 본 바로는 꼭 그렇진 않았다. 대신에, 기존에 인기 있었던 프레임워크들이 새로운 아이디어를 도입했고, 새로 등장한 프레임워크에 의해 영향을 받아 개선되는 모습도 있었다. 그래서 2017년에는 주류 JS 프레임워크 중에 어떤 것을 선택하던지, 해볼만 하다.
클라우드
기업들과 개발자들이 모두 클라우드를 도입하고 있다. 클라우드는 가상 컴퓨팅 인프라이며, 필요할 때 확장 가능하고 조작 페이지를 이용하여 설정을 마음대로 바꿀 수도 있다. 대표적인 클라우드 제공 업체는 AWS, 구글 클라우드, Azure다. 이 회사들은 지속적인 경쟁을 통해 가격을 인하하고 있기 때문에 작은 회사나 개인 개발자들도 예산 부담 없이 서비스를 이용할 수 있다. 클라우드와 조금 더 친해지는 것도 2017년을 위한 좋은 투자가 될 것이다.
기계 학습
기계 학습에 관심을 갖는 사람이 지난 1년간 폭발적으로 증가했다. 역사적인 알파고와 이세돌의 경기가 3월에 있었고, 그 이후로 더욱 주목을 받고 있다. 숫자나 문자 데이터만을 사용하던 기계 학습 방식은 사용자들의 모바일 장비 사용 패턴을 학습하는 것으로 진화하고 있다. 이 점으로만 봐도 기계 학습은 2017년에 더 중요한 자리를 차지할 것이다.
언어
JavaScript는 끊임없는 혁신을 계속하고 있다. 더욱 빨라진 웹 브라우저 개발에 발맞춰 JS 표준이 매년 발표되고 있다. 다음 버전인 ES2017는 2017년 중순에 확정될 것으로 보인다. 이 버전에서 많은 JS 개발자들이 기다리던 비동기 함수 async / await가 도입된다. 그리고 Babel의 도움이 있기 때문에 ES2017를 당장 오늘 사용할 수도 있다.
TypeScript 2.1이 2016년 후반에 발표되었고, 이전 브라우저에서도 동작하는 async / await 함수와 더 나아진 타입 추론을 지원한다. 타입스크립트는 정적인 타입을 지정하고 최종적으로 자바스크립트로 컴파일되는 언어다. 이 언어는 전통적인 OOP 모델과 정적 타입 지정 이외에도 훌륭한 기능들을 도입했기 때문에 대규모 개발 코드를 관리하는 데에 도움이 된다. 또한, Angular 2의 우선 지원 언어이기 때문에 한 번 도전해볼 것을 권한다. 우리가 작성한 간단한 가이드도 있다.
C# 7.0이 2017년에 발표될 것 같고, 이미 좋았던 언어는 더 좋아질 것이다. 마이크로소프트는 오픈 소스 에디터인 Visual Sutido Code와 .Net Core 에디터를 발표하면서 모두를 놀라게 했다. 둘 모두 리눅스, 윈도우, 맥에서 동작하고 조금 더 빠르고 생산성있는 C# 코드를 작성하는 데에 큰 도움이 될 것이다. 조금 더 자세한 정보는 여기. 두 툴에 관한 커뮤니티 활동은 이미 활발하고, 다음 해에는 C#을 사용하는 것에 더 자신을 가져도 될 것 같다.
Python 3.6이 12월 8일 발표됐다. 이로써 파이썬은 개발자들, IT 전문가들, 과학자들이 선택할 만 한 스크립트 언어의 입지를 더욱 다지게 되었다. 이 언어는 자동화, 웹 개발, 기계 학습, 복잡한 연산에 적합하기 때문이다. 파이썬 2와 3는 작년에 분리되었으며 커뮤니티에서는 반발이 많았지만, 이제 3 버전을 당당하게 선택해서 전폭적인 라이브러리 지원을 받을 수 있다. 더 나은 성능을 위해서는, JIT을 대신해서 PyPy를 사용하는 것도 고려해볼 만 하다.
Ruby 2.3이 작년에 발표되었고 수많은 성능 향상도 있었다. 루비도 일반적인 목적의 스크립트 언어로써 훌륭하지만, Rails와 함께 쓸 때 더 빛을 발한다. 루비3 릴리즈를 지금 버전에서보다 3배 빠르게 하겠다는 야심찬 루비 3x3 계획이 발표되기도 했다.
PHP 7.1이 12월에 발표되었다. 이 버전에서는 작년 7.0 버전과 비교하여 성능이 크게 향상되었으며, 이제 PHP도 웹 어플리케이션을 빠르게 만들 수 있는 플랫폼으로 봐도 될 것 같다. 이 언어로 최근 트렌드의 웹 앱을 만들어보고 싶다면 "PHP 올바르게 사용하기"가 도움이 될 것이다.
Java 9이 2017년에 발표될 것이고 REPL과 HTTP 2.0, 새로운 API를 지원하게 될 것이다. 이 기능들은 자바를 사용하는 수많은 개발자들의 요구에 의해 도입되었고, 자바를 사용하는 프로젝트에 더 큰 활력을 불어넣게 될 것이다. 딱히 자바를 사용하지 않는다면, 수많은 JVM 기반의 언어 중에서도 Kotlin과 Scala를 살펴보는 것도 좋다.
Swift3가 작년에 발표됐다. 스위프트는 iOS와 macOS 앱 개발에 사용되는 프로그래밍 언어이며 애플에서 열심히 추진하고 있다. 또한, 스위프트는 오픈 소스이고 커뮤니티 활동도 활발하다. 4 버전이 2017년에 발표될 것으로 알려져 있고, 이 버전에서는 서버 API가 도입되어 웹 앱 이외에도 서버측 코드를 작성할 수 있는 좋은 선택이 될 것으로 보인다.
더 흥미로운 것을 찾는다면, 루비와 비슷한 문법에 훨씬 뛰어난 성능을 자랑하는 Crystal이나 Elixir에 도전해보는 것도 좋다. 아니면 함수형 언어인 Haskell이나 Clojure를 해보는 것도 좋다. 또 다른 언어 중에서는 Rust와 Go도 해보길 권한다.
* 하나 이상 해보기 : JavaScript (ES2017), TypeScript, C#, Python, Ruby, PHP7, Java / Kotlin / Scala
프론트엔드
웹 플랫폼에서 최근에 Web Assembly와 Service Workers라는 중요한 발전이 있었다. 이 두 기술은 웹 어플리케이션의 좀 더 빠른 동작을 가능하게 하고 네이티브 어플리케이션과의 간격을 줄이고 있다. 특히 서비스 워커는 프로그레시브 웹 앱을 가능하게 하는 기술로, 웹 플랫폼에서의 노티 알림을 지원하고 나중을 위해 많은 API를 제공하고 있다.
Angular 2가 올해 발표됐다. 이 프레임워크는 구글의 지원을 받으며 대형 프로젝트에서도 큰 인기를 끌고 있다. 이 프레임워크는 데스크탑 웹과 모바일 앱 양쪽을 위한 수 많은 기능들을 마련해두고 있다. Angular 2는 타입스크립트로 작성되었고, 어플리케이션을 구현할 때도 타입스크립트를 권장하고 있다. 이에 대한 많은 글들이 있으며, 2017년에 Angular 2를 공부하는 것은 아주 좋은 투자가 될 것이다.
Vue.js도 올해 2.0 버전이 발표됐다. Vue.js는 Angular, React, Ember의 장점을 모아 쉽게 사용할 수 있도록 만들어졌다. 후발주자지만 Angular나 React보다는 빠른 성능을 자랑한다. 우리 사이트의 Vue.js 가이드를 보면서 올해 Vue.js에 도전해보기를 권한다.
Ember는 또 하나의 훌륭한 자바스크립트 프레임워크다. Ember는 데이터 바인딩, 템플릿의 자동 갱신, 컴포넌트, 서버사이드 렌더링을 지원한다. 경쟁 프레임워크들과 비교할 때 더 나은 점은, 프레임워크가 좀 더 성숙하고 안정되어 있다는 것이다. 프레임워크의 큰 변화(Breaking Changes)는 비교적 적으며 커뮤니티의 지원도 훌륭하다. 오래 갈 수 있는 프레임워크로서 좋은 모습이다.
그 밖에 둘러볼 만 한 프레임워크는 Aurelia와 React가 있다. React 생태계는 작년 내내 심각하게 복잡해졌고, React를 새로 접하는 사람들에게 추천해주기 점점 어렵게 되었다. 하지만 익숙한 개발자라면 GraphQL, Relay, Flux, Immutable.js를 사용해서 풀스택 솔루션을 만들어보는 것도 괜찮을 것이다.
어떠한 프론트엔드라도 Bootstrap을 빼면 구성이 다 되었다고 하기 어려울 것이다. 4버전은 현재 알파 단계이고 2017년에 정식 버전이 발표될 것으로 보인다. 주목할 만 한 새 기능으로 다용도의 카드 컴포넌트와 플렉스박스 그리드가 있고(일반 그리드와 비교), Bootstrap 프로젝트는 계속해서 나아지고 있어서, 사용하는 즐거움도 더해질 것이다.
SASS와 LESS는 여전히 훌륭한 CSS 전처리기로 확고한 자리를 차지하고 있다. 순수한 CSS가 여러 모로 지원을 받고 있지만, SASS와 LESS는 믹스인, 함수 표현, 코드 최적화 측면에서 역시 훌륭하다. 아직 접해보지 못했다면 SASS 가이드와 LESS 가이드를 살펴보자.
* 하나 이상 해보기 : Angular 2, Vue.js, Ember, Bootstrap, LESS / SASS
백엔드
백엔드에도 수많은 선택지가 있으며, 결국 프로그래밍 언어에 대한 선호도나 성능 요구사항에 맞게 고를 수 있다. 최근 웹 개발 트렌드에서는 비즈니스 로직이 백엔드로 이동하고 있고, 프론트엔드나 모바일 앱에서는 API를 통해 이 로직들을 연결하는 방식이 많아지고 있다. 역시 풀스택 프레임워크는 개발하기 더 간단하고 빠르며, 많은 웹 앱이 채용하고 있는 좋은 선택지다.
Node.js는 자바스크립트를 브라우저 밖에서 실행하는 가장 대표적인 방법이다. 올해 많은 버전 발표가 있었는데, 점점 성능이 나아지고 ES6 표준에 대한 지원사항도 많아지고 있다. Node 프레임워크를 사용하면 API와 서버, 데스크탑 앱을 빠르게 만들 수 있고, 심지어 로봇이나 대규모 커뮤니티 등 상상할 수 있는 모든 것들을 만들 수 있다. 당신이 Node를 좋아한다면 Express, Koa, Next, Nodal과 같은 프레임워크도 좋아할 것 같다.
PHP는 가장 처음에 나왔고 가장 많이 알려져 있으며 가장 많은 수의 웹 프레임워크에서 사용하는 웹 언어일 것이다. 문서도 훌륭하고 Laravel은 PHP를 이용해서 훌륭한 커뮤니티를 만들어냈다. 업무용으로 특화된 프레임워크인 Zend 프레임워크도 3버전이 발표되었다. Symfony도 올해 수 많은 버전은 발표했고 풀스택 솔루션을 위한 좋은 선택이 될 것이다.
Ruby에 대해서는, Rails 프레임워크가 제일 좋은 선택이다. 5.0 버전이 2016년에 발표되었고, 웹 소켓, API 모드 등의 기능을 추가로 도입했다. Sinatra도 작은 앱에서는 좋은 선택일 수 있고, 2017년이 되면 2.0 버전이 곧 나올 것 같다.
Python은 독자적인 풀스택을 사용하거나 Django와 Flask 같은 최소한의 프레임워크를 이용하여 구성할 수 있다. Django의 1.10 버전이 8월에 발표되었는데, Postgres를 위한 전문검색(Full text search)을 지원하고 시스템 점검을 위한 중간단계의 레이어를 도입했다.
Java 생태계에서도 주목할 만 한 프레임워크가 몇 개 있다. Play와 Spark가 가장 인기있고 두 프레임워크 모두 Scala로 작성할 수 있다.
다른 한 편으로는 Phoenix라는 것이 있는데, Elixir로 작성되었고 Rails보다 뛰어난 성능을 보이고 있어서 Rails의 자리를 노리고 있는 프레임워크도 있다. 2017년에 Elixir를 배워보려고 한다면, Phoenix도 같이 해보면 더욱 좋다.
* 하나 해보기 : 풀스택 백엔드 프레임워크, 마이크로 프레임워크
데이터베이스
MySQL이 8.0 메이저 버전 발표를 앞두고 있다. 2017년에 발표될 것이고, 시스템 구성에 영향을 줄만한 개선점들을 도입할 것으로 보인다. MySQL은 여전히 가장 인기있는 데이터베이스 관리 시스템이며, 앞으로 발표될 버전으로 인해 모든 산업군에 이득이 있을 것이다.
PostgreSQL 9.6 버전이 9월에 발표됐다. 조금 더 나은 전문검색(Full text search)을 지원하고 병렬 쿼리와 효율적인 복제, 집합 구성, 인덱싱, 정렬을 통해 성능을 끌어올렸다. Postgres는 대규모, 테라바이트급 데이터셋, 연산이 많은 웹 앱에 최적화되어 사용되고 있다.
NoSQL 팬에게는 CouchDB를 추천한다. CouchDB는 RESTful HTTP API를 지원하면서, 빠르고 확장 가능한 JSON 저장소다. 이 데이터베이스는 사용하기 쉬우면서도 놀라운 성능을 자랑한다. PouchDB처럼 온전히 브라우저에서 구동되고 Couch와 동기화를 맞출 수 있는 데이터베이스도 있다. 웹 앱이 오프라인일 때 Pouch를 사용하고 인터넷이 연결되면 자동으로 Couch와 동기화하는 방식으로 사용할 수 있다.
Redis는 키-값 스토어 중에 인기 있는 데이터베이스다. Redis는 작고 빠르면서도 많은 기능을 제공한다. Memcache 대신 Redis를 사용할 수도 있을 것이고, NoSQL 대신 쓰거나 메시지 전송과 동기화를 위한 채널로 사용할 수도 있다. Redis에서 제공하는 수 많은 데이터 구조를 골라서 사용할 수 있고, 4.0 버전이 나오면 모듈 시스템이 도입되어 복제셋 구성이 더욱 개선될 것이다.
* 하나 해보기 : MySQL, Postgres, CouchDB, Redis
도구
Facebook에서 Node.js 패키지를 관리하는 Yarn을 발표했다. Yarn은 npm 커맨드 라인 툴을 개선한 툴이며, 더 빠른 설치, 더 나은 보안, 안정된 빌드 기능을 제공한다. Yarn을 사용해도 npm 패키지 설정은 그대로 유지되기 때문에, npm의 방대한 자바스크립트 모듈 생태계에도 접근할 수 있다. 게다가 npm에서 사용하는 package.json 포맷은 Yarn과 호환되기 때문에 지금 당장 설치해보자.
오픈 소스 코드 에디터 중 가장 인기 있는 것은 Visual Studio Code와 Atom이며, 지난 1년간 놀랍게 발전했다. 두 에디터 모두 최신 웹 기술을 이용해 만들어졌고, 커뮤니티의 수많은 개발자들에게 관심을 받고 있다. 게다가 플러그인을 설치하여 각 프로그래밍 언어에 대한 문법 체크, 코드 최적화, 리팩토링을 비롯한 기능을 추가할 수도 있다.
Git은 여전히 가장 인기 있는 코드 버전 관리 시스템이다. 서버도 필요 없고 컴퓨터 안의 어떠한 폴더라도 저장소로 바꿀 수 있다. 코드를 공유할 때도 수많은 방법이 있으며, 몇 개를 꼽아보자면 GitLab, Bitbucket, Github과 같은 것이 있다. 2017년에는 git 커맨드 라인과 친해져보기를 추천하는데, 생각보다 편하고 자주 쓰게 될 것이다.
데스크탑 어플리케이션도 아직 죽지 않았다. 웹 앱이 점점 영역을 넓혀가고 있지만, 가끔은 필요한 기능이나 API를 웹 플랫폼에 연결되지 않은 상태에서도 돌려야 할 필요가 있을 것이다. Electron과 NW.js와 같은 툴을 이용하면 웹 기술을 사용해서 데스크탑 어플리케이션을 만들 수 있다. OS 권한에 온전히 접근할 수도 있고 npm의 모듈을 사용할 수도 있다. 이 툴들에 대해 좀 더 알아보고 싶다면 Electron 가이드와 NW.js 가이드를 참조하자.
요즘 소프트웨어 팀 구성에서의 트렌드는 배포를 함께하는 개발자를 영입하는 것이다. DevOps라고도 하는데, 이들은 버그를 더 빠르게 수정하고 더 빨리 릴리즈 할 수 있다. 운영 경험이 있는 개발자는 업계에서도 상당히 귀중한 인재이며, 최신 기술에 관심이 많다면 더욱 큰 도움이 될 것이다.
또 추천할만한 도구는 Ansible과 Docker다. 리눅스 커맨드 라인과 기본 시스템 관리자 권한에 대한 경험이 있으면 더욱 좋다.
* 하나 이상 해보기 : Yarn, Git, Visual Studio Code, Electron, Ansible, Docker
기술
클라우드는 소프트웨어 업계 전반을 장악했고, 데이터센터를 운영하는 회사들은 데이터센터를 축소하거나 클라우드로 옮기고 있다. 클라우드 제공사 중 대표적인 것은 AWS와 Google Cloud, Azure다. 세 업체 모두 강력하고, 무한한 확장이 가능하며, 가상 머신을 지원하고, 데이터베이스를 호스팅하면서, 기계 학습도 가능한 서비스를 제공하고 있다. 사용 요금은 급격히 인하되고 있어서 소규모 업체나 개인 개발자들도 클라우드를 이용할 수 있게 되었다. 2017년에는 이들 중 한 곳을 이용해서 작은 프로젝트를 하나 해보는 것도 좋은 경험이 될 것이다.
인공지능은 2016년의 화두였다. 음성 인식과 이미지 분류는 사용자가 접할 수 있는 극히 일부의 기술이며, 기계는 사람과 비슷한 인지 능력을 갖는 정도까지 진화했다. 인공지능과 기계 학습을 이용한 스타트업도 많이 등장하고 있다. 여기에 Google의 Tensor Flow나 Microsoft의 Cognitive Toolkit과 같은 오픈 소스 프로젝트들도 발표됐다. 기계 학습은 수학과 밀접하게 연관된 분야이며, 기계학습을 시작하기에 도움이 되는 온라인 코스도 나와있다.
가상 현실(Virtual Reality, VR)과 증강 현실(Augmented Reality, AR)이 등장한 지는 좀 되었지만, 비로소 이 기술들은 흥미로운 경험을 제공할 정도까지 성숙했다. Facebook(Oculus Rift), Google(Daydream), Microsoft(Windows Holographic) 들은 가상 현실 플랫폼을 제공하고 서드 파티의 개발자들을 기다리고 있다. VR 헤드셋은 멀미를 줄이거나, 게임 이외의 분야에서도 즐거운 경험을 제공하기 위한 도전을 하고 있으며, 아직은 그 정도 단계이다.
* 하나 해보기 : 클라우드 배포, 기계 학습 라이브러리, VR 개발
정리해놓고 보니 2017년에도 공부할 내용이 산더미네요 ㅎㅎㅎㅎ
계속해서 화이팅해야겠습니다 ㅎ
감사합니다.
출처: http://han41858.tistory.com/27 [한장현입니다.]
'미분류' 카테고리의 다른 글
(스크랩) FCM과 GCM 차이 (0) | 2018.06.06 |
---|---|
크로키에서 node.js를 쓰는 이유 (0) | 2018.06.04 |
안드로이드 녹스로 연결하기 (0) | 2018.05.28 |
윈도우 10에서 포트 열기 (1) | 2018.05.28 |
쿠키와 세션 (0) | 2018.03.28 |