티스토리 뷰


 


해당 포스트는 Martin Angelov의 [The Languages, Frameworks and Tools You Should Learn in 2017] 글을 번역한 내용입니다.

저는 영어를 요즘 초등학생보다 못합니다. 발 번역이여도 이해 부탁 드립니다.



소프트웨어 개발 분야는 계속 발전하고 있으며, 2016년에도 우리가 개발하는데 조금 더 편하도록 변화시킨 인기있는 언어, 프레임워크 도구들이 많이 릴리즈 되었습니다. 이 모든 최신들을 따라가는것은 어렵기 때문에 매년 말 내년에 주목해야 하고 중요 할 것들이 무엇이 있는지 살펴보는 시간을 가지고자 한다.


The Trends

Progressive Web Apps(pwa 프로그레시브 웹 앱)



2016년에 Progressive Web App 개념이 등장하였습니다. Progressive Web App은 오프라인에서도 작동하며 네이티브 앱 같은 경험을 제공합니다. 스마트 폰 홈 화면에 추가 할 수 있으며, 푸시 알림도 받을 수 있어 네이티브 앱과의 격차를 줄일 수 있습니다. 2017년에는 Progressive Web App이 더욱 중요해지고 연구할 가치가 있다고 생각합니다. 조금 더 자세한 사항은 링크에서 확인해 주시기 바랍니다.


The Bot Hype (봇의 유행)



현재 많은 사람들이 봇에 대해 이야기 하고 있습니다. 플랫폼 운영 및 프레임워크 구축까지 커뮤니티에선 활발하게 이야기되고 있습니다.

(여길 참고) 봇은 새로운 모바일 앱이며, 만약 당신이 지금부터 관심을 가진다면 많은 사람들이 함께 열광하는 흐름에 참여 할 수 있습니다.

 시간이 지날수록 봇은 사용자가 하던 일을 자동화하는 것으로 전략하게 됩니다. 하지만 그것이 우리가 원하는 것입니다.


Consolidation of Frontend Frameworks (프론트엔드 프레임워크의 통합)



자바스크립트 커뮤니티에는 프레임워크가 도구가 많으며, 거의 매주 새로운 프레임워크와 도구가 생겨나고 있습니다. 최근까지는 이전도구가 새로운 도구로 대체 될 것 이라는 기대가 있었습니다. 그러나 2016년에 경향을 봤을때는 그렇지 않을 듯 합니다. 대신 인기있는 프레임 워크가 아이디어를 교환하고 신규 프레임워크가 제시 한 혁신을 통합하는 것을 보았습니다. 따라서 2017 년 주요 JS 프레임 워크 중 어떤 것을 선택하든 중요하지 않으며 기능은 거의 비슷할 것 입니다.


The Cloud



어느 회사나 개발자들은 클라우드를 도입하고 있습니다. 클라우드는 어느때나 필요하면 확장하고 컨트롤 페이지를 이용하여 설정이 변경 가능한 가상 컴퓨터 인프라입니다. AWS, Google Cloud, Azure 같은 대표적인 클라우드 제공업체들은 지속적인 경쟁으로 가격을 인하하고 있기 때문에 작은 회사나 개인 개발자들도 예산 부담 없이 서비스를 이용할 수 있습니다. 클라우드와 조금 더 친해지는 것도 2017년을 위한 좋은 투자가 될 듯합니다.



Machine Learning



Machine Learning은 지난 1년동안 많은 주목을 받았습니다. 3월에는 이세돌 대 알파고의 역사적인 대결이 있었으며, 그 후 더욱 주목을 받고 있습니다. 숫자나 문자 같은 데이터만 학습하던 Machine Learning은 사용자들의 모바일 디바이스를 사용하는 패턴을 학습하는 걸 통하여 더욱 진화하고 있습니다. 이러한 점을 봤을때 2017년 더욱 Machine Learning이 중요한 영역으로 자리잡을 것이다.



Languages

JavaScript


Javascript의 혁신은 계속 이어질 것 입니다. 더욱 빨라진 웹 브라우저 개발에 맞춰 표준이 제정되고 있습니다. ES2017에서는 2017년 중반쯤 제정이 될 것으로 보이며 비동기 처리 방식인 аsync/аwait이 추가됩니다. 이 기능은 Babel를 이용하면 지금도 ES2017을 사용이 가능합니다. 


TypeScript


Typescript 2.1은 2016년 후반에 릴리즈 되었으며, ES2017에서 추가된 async/await와 더 나아진 Type inference를 제공합니다. Typescript는 정적인 타입을 지정하고 JavaScript로 컴파일 되는 언어입니다. 전통적인 OOP모델과 정적인 타입 지정외의 훌륭한 기능이 추가되어 대규모의 코드를 관리하고 유지보수 하는데 도움이 된다. Angular2의 기본 언어이기 때문에 한번 도전해보는걸 권합니다. 저희가 작성한 퀵스타트는 해당 링크에서 확인 가능합니다.


C#


C# 7.0은 2017년에 발표 될 예정입니다. 기존보다 더 좋은 언어가 될 것입니다. Microsoft는 오픈 소스 에디터인 Visual Studio Code와 .NET Core를 발표하면서 모두를 놀라게 하였습니다. 이 에디터들은 Windows, Mac os, Linux에서 모두 실행이 가능하며, 조금 더 빠르게 C# 코드를 작성하는데 도움을 줄 것입니다.(자세한 내용 여기) 두 에디터는 현재 커뮤니티가 활발한 상태이며, 2017년 또한 활발하게 활동할 예정입니다.


Python


Python 3.6은 12월에 릴리즈 되었습니다. Python은 자동화, machine learning, 과학 컴퓨팅에 적합하여 개발자, IT 전문가 및 과학자가 선택할만한 스크립팅 언어로 자리 매김하고 있습니다. Python 2와 3가 작년에 분할되어 커뮤니티에 반발이 많았으나, 현재는 3버전을 통하여 많은 지원을 받을 수 있습니다. 더 나은 성능을 위해 PyPy를 사용 하는걸 고려해 보시길 바랍니다.


Ruby


Ruby 2.3은 올해(2016) 초에 여러 가지 성능 향상과 함께 릴리즈 되었습니다. Ruby는 스크립트 언어로서 좋은 선택이지만 Rails와 함께 사용 하면 더욱 빛을 발휘합니다. 현재는 앞으로 출시 될 Ruby 3 릴리즈를 현재 버전보다 3배 더 빠른 Ruby 3x3 계획이 발표되었습니다.


PHP


PHP 7.1은 12월에 릴리즈 되었습니다. 7.1에서는 7.0에 비해 성능이 크게 향상 되어 이제는 PHP도 웹 어플리케이션을 빠르게 구축가능한 플랫폼으로 변화시켰습니다. PHP를 이용하여 최신 웹 트렌드의 웹 앱을 만들고 싶다면 PHP: The Right Way(한글판은 여기)를 참고하시기 바랍니다.


JAVA


JAVA 9는 2017년에 릴리즈될 예정입니다. HTTP 2.0과 REPL 같은 새로운 API들이 제공 될 예정입니다. 해당 기능은 많은 JAVA 개발자들의 요구에 의해 추가되었으며, JAVA 프로젝트에 큰 바람을 불어넣어줄 것이다. 만약 JAVA를 사용하지 않는 개발자라면, 수많은 JVM 기반의 언어 중에서도 KotlinScala를 살펴보는 것도 좋을듯 합니다.


Swift


Swift 3은 MacOs와 IOS의 현대적인 프로그래밍이 가능한 Apple에서 새로 밀고있는 언어이며 올해 초에 공개하였습니다. 또한 Swift는 오픈소스이고 커뮤니티 활동이 활발한 상태이다. Swift 4가 2017년에 출시 될 예정으로 보이며, API 서버가 도입되어 웹 앱 이외에도 서버측 코드를 작성할 수 있는 좋은 선택이 될 듯 합니다.



만약 조금 더 흥미로운것을 찾고 있다면 루비와 유사한 구문과 우수한 성능의 CrystalElixir를 확인해 보시기 바랍니다. 또한 Haskell 또는 Clojure와 같은 함수형 언어를 살펴보시길 바랍니다. 그외에 추천하는 언어는 Rust와 Go입니다.


한가지 이상 배우기 : JS (ES2017), TypeScript, C #, Python, Ruby, PHP7, Java / Kotlin / Scala


Frontend

웹 플랫폼에서는 Web Assembly와 Service Workers라는 두가지 주요 발전이 있었습니다. 이 두가지 기술로 인하여 네이티브 어플리케이션과의 차이를 좁히고 웹 어플리케이션이 조금 더 빠르게 동작가능하게 해주었습니다. 특히 Service Workers의 경우  Progressive Web Apps이 가능하게 하고 미래에 더 많은 API를 사용할 수있는 웹 플랫폼에 대한 알림을 지원합니다.


ANGULAR 2


Angular 2는 올해에 정식 릴리즈 되었습니다. 구글이 이 프레임워크를 지원하고 있으며, 큰 규모의 프로젝트에서 주목을 받고 있습니다. 웹을 이용하여 데스크탑 모바일 앱까지 작성이 가능하도록 방대한 기능을 포함하고 있습니다. Angular2는 TypeScript로 작성되었으며, Angular 2 개발 시에도 TypeScript를 권고하고 있습니다. 관련 자료가 많이 있으며 2017년 Angular 2를 배우는 것은 좋은 투자가 될 것 입니다.


VUE.JS


Vue.js 도 올해 2.0이 릴리즈 되었습니다. Angular, React 및 Ember에서 좋은점들을 도입하여 사용하기 쉬운 프레임워크로 만들어졌습니다. 또한 Angular.js 나 React에 비해 가볍고 좋은 성능을 가졌습니다. 우리가 만든 Vue.js 튜토리얼들 중 하나를 시작하여 올해에 사용해 보시기 바랍니다.


Ember


Ember.js는 Javascript 프레임워크에서 좋은 선택 중 하나 입니다. 데이터 바인딩, 템플릿 자동 업데이트, 컴퍼넌트 및 서버 측 렌더링을 지원합니다. 다른 프레임워크와 비교했을 때 좋은점은 조금 더 성숙하고 안정되어 있는 프레임워크라는 것 입니다. 큰 변화(Breaking Changes)가 적은편이며 커뮤니티에서는 이전 버전의 호환을 중요시 여기고 있습니다. 오래유지해야하는 애플리케이션에 좋은 선택이 될 것 입니다.


그 외에 살펴볼만한 프레임워크로는 Aurelia와 React가 있습니다. React 생태계가 작년에 상당히 복잡해져서 초보자들에게 권하기 어려운 프레임워크가 되었습니다. 하지만 이미 React가 익숙한 개발자들은 GraphQL, Relay, FluxImmutable.js등을 이용하여 풀스텍 솔루션을 만드는것을 추천합니다.


어떠한 프레임워크라도 Bootstrap 제외하고 구성이 다 되었다고 언급하기 어렵습니다. 현재 4버전은 알파 단계이며, 2017년 정식 릴리즈 될 예정입니다. 새로 추가되는 기능으로는 다용도 카드 컴퍼넌트와 플렉스박스 그리드가 있으며(일반 그리드와의 비교) Bootstrap은 점점 현대적인 프레임워크가 될 것이며 사용하는 즐거움도 더해질 것입니다.


SASSLESS는 오늘날 가장 인기있는 CSS 전처리기입니다. 일반 CSS가 여러 지원이 추가되었지만, SASS와 LESS의 mixins, 함수 및 코드 구성에 대한 지원이 여전히 훌륭합니다. 아직 접해보지 못했으면 해당 SASSLESS 가이드를 참고해주시기 바랍니다.


한가지 이상 배우기 : Angular 2, Vue.js, Ember, Bootstrap, LESS/SASS.


Backend

Backend에도 수많은 선택이 있으며, 성능요구사항에 맞는 선택을 할 수 있습니다. 최근 웹 개발 트렌드는 비지니스 로직은 백엔드로 옮겨지고 있고 프론트엔드나 모바일 앱에서는 이를 API를 통해 연결하는 방식을 선호합니다. 그러나 풀스택 프레임워크는 여전히 개발하기 더 간편하고 빨라 웹 앱 개발에 좋은 선택지중 하나입니다. 


NODE.JS


Node.js 는 JavaScript를 서버사이드에서 실행하는 대표적인 방법입니다. 올해 Node.js는 많은 릴리즈가 있었으며, 릴리즈 내용으로는 성능 향상과 ES6 표준에 대한 지원이 추가되었습니다. Node.js에는 API와 서버 데스크탑 어플리케이션 심지어 로봇까지 만들 수 있는 프레임워크와 대규모의 모듈 관리가 가능한 커뮤니티가 있습니다. 이러한 것들에 관심이 있는 당신이 살펴볼 프레임워크로는 Express, Koa, Next, Nodal등이 있다. 


php


PHP 는 가장 맨처음 나온 웹 언어이자 가장 많이 알려져 있고 가장 많은 프레임워크를 사용하는 언어입니다. Laravel은 훌륭한 기능과 정리된 문서 덕분에 훌륭한 커뮤니티가 형성했습니다. Zend Framework는 비지니스용 프레임워크로 3버전을 릴리즈 하였습니다. Symfony는 올해에도 많은 릴리즈가 되여, 풀스택 프레임워크로 좋은 선택이 됩니다.


Ruby


Ruby 의 경우 Rails 프레임 워크를 사용하는 것이 가장 좋습니다. 웹 소켓, API 모드 등이 지원되는 5.0 버전이 2016년에 릴리즈 되었습니다.

Sinatra는 작은 어플리케이션에서는 좋은 선택이며, 2017년에 2.0 릴리즈 될 예정입니다.  


Python


Python 자체에는 이미 DjangoFlask의 형태의 full/minimal 프레임워크가 있습니다. Django 1.10는 8월에 릴리즈 되었는데, Postgres를 위한 Full-text-search를 지원하고 시스템 점검을 위한 중간단계의 레이어를 도입하였습니다.


JAVA


Java 생태계에도 인기있는 프레임워크가 있습니다. PlaySpark 두가지 모두 Scala에서 사용이 가능하며 인기있는 프레임워크 입니다.


다른 것으로는 Phoenix라는 것이 있습니다. Elixir로 작성되었고 Rails보다 뛰어난 성능을 보이고 있어 Rails의 자리를 노리고 있는 프레임워크입니다.. 2017년에 Elixir를 배워보려고 한다면, Phoenix도 같이 사용해보시길 바랍니다.


한가지 해보기: 풀스택 프레임워크나 마이크로 프레임워크


Databases

PostgreSQL


PostgreSQL 는 올해 2개의 버전이 릴리즈 되었습니다.(9.59.6) 이 릴리즈를 통하여 mysql에서의 UPSERT 같은 기능과(일명 ON DUPLICATE KEY UPDATE) 더나은 full text search, 병렬 쿼리와 효율적인 복제, 집합 구성, 인덱싱, 정렬을 통해 성능을 끌어올렸습니다. Postgres는 대규모, 테라바이트급 데이터셋, 연산이 많은 웹 앱에 최적화 되어 사용하고 있습니다.


MySQL


MYSQL 는 2017년에 8.0 메이저 버전 릴리즈를 할 예정입니다. 시스템에 많은 개선이 이루어질 것으로 예상됩니다. MYSQL은 여전히 가장 보편적인 데이터베이스이며, 앞으로 릴리즈될 버전으로 인하여 개발 업계 전체가 이점이 있을 것입니다.


CouchDB


NOSQL 유저에게는 CouchDB를 추천합니다. CouchDB는 REST-ful HTTP API를 제공하는 빠르고 확장 가능한 JSON 저장소입니다. 이 데이터베이스는 사용하기 쉽고 뛰어난 성능을 제공합니다. PouchDB는 브라우저에서 완전히 작동하며 CouchDB와 동기화 할 수 있습니다. 이렇게하면 오프라인 상태일땐 Pouch를 사용하고 인터넷 연결이 가능 해지면 자동 동기화가 가능합니다.


REDIS


REDIS 는 키-값 형식의 데이터베이스 중 인기있는 데이터베이스입니다. REDIS는 작고 빠르며 다양한 기능을 제공합니다. memcache 대신 REDIS를 사용 할 수 있으며, NoSQL 대신 쓰거나 메시지 전송과 동기화를 위한 채널로 사용할 수 있습니다. Redis에서 제공하는 수 많은 데이터 구조를 골라서 사용할 수 있으며, 4.0 버전이 나오면 모듈 시스템이 도입되어 복제셋 구성이 더욱 개선될 것입니다.


한가지 해보기: Postgres, MySQL, CouchDB, Redis.


Tools

Yarn


Yarn 은 Facebook에서 개발한 NODE.JS 패키지 관리자 입니다. Yarn은 NPM을 개선한 도구이며, 더 빠른 설치, 향상된 보안 및 안정적인 빌드를 제공합니다. Yarn은 기존의 package.json 포맷 및 npm 설정이 그대로 호환되기 때문에 설치가 간단합니다.


Visual Studio Code / Atom


오픈 소스 에디터 중 인기가 많은 에디터는 Visual Studio CodeAtom이 있으며, 두 에디터는 1년간 놀라운 발전이 있었습니다. 두 에디터의 공통점으로는 웹 기술로 제작되었으며, 커뮤니티에 많은 개발자들의 관심을 받고 있습니다. 게다가 플러그인을 설치하여 각 프로그래밍 언어에 대한 문법 체크, 코드 최적화, 리팩토링을 비롯한 기능을 추가가 가능합니다.


git


git 은 가장 인기 있는 코드 버전 관리 시스템입니다. 서버가 없이도 컴퓨터의 모든 폴더를 저장소로 변환 할 수 있습니다. 코드를 공유하려면 GitLab, Bitbucket Github와 같은 여러 선택지가 있습니다. 2017 년에는 git 커맨드 라인과 친해져보기를 읽어보길 권장합니다. 


Electron / NW.js


데스크톱 응용 프로그램은 아직 죽지 않았습니다. 웹 앱이 점점 더 많은 기능을 제공하지만, 때로는 웹 플랫폼에서 사용할 수없는 강력한 기능과 API가 필요합니다. Electron 및 NW.js와 같은 도구를 사용하면 웹 기술을 사용하여 데스크톱 응용 프로그램을 만들 수 있습니다. OS 권한에 접근도 가능하고 npm의 모듈을 사용할 수 있습니다. 이 툴들에 대해 좀 더 알아보고 싶다면 Electron 가이드와 NW.js 가이드를 참고하여 주시기 바랍니다.


DevOps


최근 소프트웨어 개발 팀 구성의 트렌드는 배포를 담당하는 개발자를 구성원으로 포함하는 것 입니다. DevOps라고도 불리는데, 이럴 경우 버그를 더 빠르게 수정하고 더 빨리 릴리즈 할 수 있습니다. 운영 경험이 있는 개발자는 업계에서도 상당히 귀중한 인재이며, 최신 기술에 관심이 많다면 더욱 큰 도움이 됩니다. 또한 이러한 업무를 위한 우리가 추천하는 도구는 Ansible와 Docker 입니다. 리눅스 커맨드 라인과 기본 시스템 관리자 권한에 대한 경험이 있으면 더욱 좋습니다.


하나 이상 해보기: Yarn, Git, Visual Studio Code, Electron, Ansible, Docker


Tech

cloud


Cloud 는 소프트웨어 업계 전반적으로 장악하여 데이터센터를 운영하는 회사들은 데이터센터를 축소하거나 Cloud로 옮기고 있습니다. 대표적인 Cloud 서비스는 AWS, Google CloudAzure이며, 세 가지 서비스 모두 가상 머신, 호스트 데이터베이스, machine learning 서비스 등을 포함 한 강력한 기능 확장 세트를 보유하고 있습니다. 사용 요금이 급격히 인하되고 있어서 소규모 업체나 개인 개발자들도 클라우드를 이용할 수 있게 되었습니다. 2017년에는 이들 서비스중 하나를 이용해서 작은 프로젝트를 하나 해보는 것도 좋은 경험이 될 것 입니다.


Artificial Intelligence(AI 인공지능)


AI 는 2016년의 이슈였습니다. 음성 인식과 이미지 분류는 사용자가 접할 수 있는 극히 일부의 기술이며, 기계는 사람과 비슷한 인지 능력을 갖는 정도까지 진화하였습니다. 인공지능과 machine learning을 이용한 신생 기업(스타트업)도 많이 등장하였습니다. 여기에 Google의 Tensor Flow나 Microsoft의 Cognitive Toolkit과 같은 오픈 소스 프로젝트들도 릴리즈 되었습니다. machine learning은 수학과 밀접하게 연관된 분야이며, machine learning을 시작하기에 도움이 되는 온라인 코스도 있습니다.


VR / AR


가상 현실 (VR)과 증강 현실 (AR)은 이미 존재 하는 기술이였지만, 최근 매력적인 경험을 제공 할 만큼 충분히 성숙하였다. Facebook (Oculus Rift), Google (Daydream) 및 Microsoft (Windows Holographic)는 모두 가상 현실 플랫폼을 보유하고 있고 third party 개발자를 환영하고 있습니다. 아직은 VR 헤드셋은 멀미를 줄이거나, 게임 이외의 분야에서도 즐거운 경험을 제공하기 위한 도전 단계에 있습니다.


한가지 해보기: Cloud deployment, Machine Learning library, VR Development




2017년에도 처음 듣거나 아직 해보지 못한 기술이 엄청 많네요. 2017년은 더욱 더 열심히 공부해야 겠습니다.

해당 번역에 대해 문제가 있거나 수정 사항이 있으실 경우 피드백 감사드립니다.

발번역이라 조금 앞뒤가 안맞거나 잘못 번역한 문장이 있을 수 있습니다.


2017년도 화이팅!!

댓글