2019년 웹/앱 개발의 전망과 화두

프론트 개발과 서버사이드를 중심으로

Harry The Great
해리의 유목코딩

--

들어가기에 앞서

벌써 2018년이 얼마 남지 않았습니다. 하루가 다르게 새로운 프레임워크와 새로운 기술이 나오고 배워야할게 정말 많은것같습니다. 올해 주목받았던 기술들중 2019년에도 큰 화두가 될만한 주제들을 선정해보았습니다.

컴포넌트(Web Component) 와 프레임워크

크로미움의 천하통일

2018년를 마무리하는 12월, 사실상 유일하게 독자노선을 걷던 엣지 브라우저가 크로미움기반으로 개발한다고 블로그를 통해 발표했습니다. 이로써 사실상 모든 상용 웹브라우저는 크로미움 기반이 되었으며 넷스케이프와 익스플로러부터 시작된 브라우저 전쟁이 결국 크로미움의 천하통일로 마무리되었습니다. 자체 규격의 브라우저가 많았을때는 프론트 웹개발이 플래시의 독주였지만 오히려 크로미움으로 단일화되자 양상은 더 복잡해졌습니다(?)

SPA 3대장!

요즘 대세인 SPA 개발을 예로들자면 Datepicker 하나를 사용해도 Angular에 맞는 웹컴포넌트, React에 맞는 웹컴포너트를 따로 사용해야합니다. 한동안은 이런 독자 프레임워크에 맞는 웹 컴포넌트들이 계속 쏟아질걸로 예상됩니다.

영미권 개발자들을 주축으로 하고있는 리액트는 여전히 견고한 점유율을 유지하고있고 있습니다. 반면 중국계 개발자들을 주축하고 있는 vue.js는 단숨에 신흥강자로 떠올랐고 2019년에도 역시 주목받을것으로 기대됩니다. 후발주자임에도 이미 깃헙 스타 개수로는 리액트를 추월했고 이번에 발표된 3.0버전부터는 타입스크립트로 재작성 되었습니다.

구글이 개발하고 마소가 밀어준다는 앵귤러는 최근 IV 엔진을 도입하면서 경량화 되고 더욱 디버깅하기 쉬워졌습니다. 이전에 비해서 관심도가 낮아진것은 사실이지만 힘있는 두 형님들이 뒤에 있기때문에 2019년에는 또 얼마나 큰 성장을 할지 기대가됩니다.

타입스크립트

요즘 프론트건 백엔드건 자스를 사용한다면 항상 이야기되는 타입스크립트 입니다. 저의 경우 올해 코틀린과 타입스크립트를 도입하면서 많은 생산성 향상을 느끼고 있습니다. 특히 자스개발을 할때 IDE들의 고질적 문제는 정적타입분석이 약해 IDE를 쓰는것인지 에디터인지 쓰는지 헷갈릴정도입니다. 타입스크립트3.0 부터는 자동완성기능이 사실상 자바나 스위프트처럼 매끄럽게 작동하고 Websotrm, VSCode가 내장지원하고있습니다. 또한 여타 다른언어들처럼 Annotation기능을 통해 빌드과정에서 많은 코드들을 자동으로 만들어줍니다.

작년과 올해를 기준으로 주요한 많은 자바스크립트 프레임워크나 라이브러리들이 타입스크립트로 리팩토링 되었고 다가오는 2019년에도 타입스크립트로 리팩토링하는 추세는 계속될 것으로 보입니다. 저처럼 어제 짠 코드도 잘 기억하지 못하시는 분이라면 도입할 가치가 있습니다.

GraphQL

올해 가장 주목받는 쿼리 기술은 GraphQL인것 같습니다. GraphQL은 페이스북에서 개발한 Query Langauge입니다. 기존 Restful이 미리 정해져있는 여러개의 endpoint로 요청을하고 서버에서 정해진 포맷의 결과값을 리턴하는데 반해 GraphQL은 1개의 엔드포인트를 가지며 클라이언트에서 필요한 데이터형식을 직접 질의합니다. 또한 Query Langauge이기때문에 Mysql, DynamoDB, MariaDB, PosttQL등 다양한 플랫폼에 바로 적용할 수 있습니다.

최근 AWS AppSync에서는 GraphQL을 지원함으로써 더욱 유연하게 모바일에서 람다나 DynamoDB같은 서비스를 이용할 수 있게 되었습니다. 한가지 재밌는점은 페이스북이 개발했지만 개발만하고 Open API에는 적용하고 있지 않는데 반해 Github은 API V4버전부터 GraphQL을 도입하였습니다.

많은 개발자들이 GraphQL이 Restful를 대체한다고 하지만 NoSQL이 SQL을 대체하는것이 아닌 하나의 대안으로써 제시되는걸보면 역시 GraphQl도 비슷한 역할을 수행할것같습니다. 역시 필요에따라 사용이 되어질것같습니다. 올해 뜨거운 감자중 하나였기때문에 2019년 얼마나 더 성장이 기대되지만 저처럼 Restful에 사고가 굳어지신 분들은 러닝커브가 상당히 높아집니다(?)

파이어베이스

페이스북의 Parse가 철수한 이후 사실상 모바일 BaaS는 파이어베이스 세상이 되었습니다. 특히 올해 Firebase 의 가장 큰 변화중 하나는 머신러닝입니다. ML Kit을 통해 텐서플로우 모델을 실행시킬 수 있고 모바일에서 발생한 이벤트들을 구글 클라우드의 Big Query로 내보내 머신러닝을 학습시키는데 사용할 수 있으며 로그 데이터들을 기타 다른 구글 클라우드와 연계할 수 있게되었습니다. 또한 Fabric을 인수하여 Crashlysrics를 파이어베이스 콘솔을 통해 지원하고있고 올해 선보인 In-App Messaging서비스는 별도의 추가작업 없이 손쉽게 유저들에게 배너나 팝업을 띄울 수 있습니다.

웹어셈블리

일반적으로 우리가 브라우저에서 자바스크립트 코드를 작성하면 V8엔진의 C++코드를 통해 어셈블리 코드로 변환하여 브라우저에서 실행하게됩니다. 웹어셈블리는 이러한 중간과정을 생략하고 직접 C나 C++를 이용하여 어셈블리 코드로 컴파일하기때문에 중간과정이 생략되어 성능이 기하급수적으로 올라가게됩니다. 물론 Dom을 다루는 작업이나 UI에 관련된 작업을 할때는 적합하지 않지만 CPU파워를 많이 요구하는 작업에서는 매우 유용합니다. 실제 어플리케이션에서 작동하는것에 70%수준의 벤치마크성능까지 끌어올릴 수 있다고합니다. 앞으로 보편화된다면 가장 큰 변화를 줄 기술로 생각되어지고 개발자는 플랫폼별로 개발할 필요가 없으며 사용자는 간단히 웹을 통해 이용할 수 있습니다.

올해 오토캐드가 웹어셈블리를 이용하여 웹앱버전을 내놓았습니다. 오토캐드 공식 유튜브를통해 직접 구동되는 모습을 확인할 수 있습니다.

Unity webGL과 웹어셈블리를 이용하면 웹에서 돌아가는게 맞나 싶을 정도의 게임들을 체험해볼 수 있습니다. 위 스크린샷에 나온 게임은https://beta.unity3d.com/jonas/AngryBots/ 에서 데모를 플레이할 수 있습니다.

Flutter와 Fuchsia

크로스 플랫폼 개발의 가장 큰 화두는 플루터입니다. 최근들어 사그라들고있는 자마린과 에어비앤비의 이탈 이후 한풀꺽인 리액트 네이티브에 비해 플루터는 계속해서 각광받고 있습니다. 처음에 왜 구글이 굳이IOS까지 신경쓰는 크로스플랫폼에 이렇게 매달리나 싶었는데 Fuchsia와 연관지어 생각한다면 그 속내를 추측해볼 수 있습니다.

지금까지 구글이 만든 모든 OS는 리눅스 커널 기반이었습니다. 대표적으로 안드로이드OS, 크롬OS 그리고 크롬캐스트OS가 있습니다. 이런 모바일이나 PC의 경우 리눅스는 호환성이 정말 좋지만 스마트자동차나 GPS와 같은 임베디드 환경에서 리눅스 커널은 그리 좋은선택은 아닙니다.반면 구글이 새로 내놓은 모바일 OS 푸시아는 IoT에 특화된 FreeRTOS나 ThreadX 계열의 운영체제로 임베디드뿐 아니라 데스크탑 스마트폰에도 확장할 수 있도록 설계되어있습니다.

최근들어 이미 포화시장인 스마트폰과 달리IoT, 스마트자동차,스마트공장과 같은 임베디드 디바이스 시장이 날로 커지고있습니다. 이러한 블루오션을 크로스 플랫폼에 특화된 푸시아OS와 크로스 플랫폼 개발도구인 플루터를 접목시키려하고있습니다. IOS와 다르게 오픈소스로 공개되어있어 어떤 제조사이든지 가져다 쓸 수 있고 무인자판기, 무인세탁기, 스마트자동차에 이르기까지 어느곳이든 이식할 수 있는 확장성이 있습니다. 기존 구글의 안드로이드 개발풀을 활용하여 다른 시장들을 선점하려는 구글의 야심을 엿볼 수 있습니다. 앞으로 푸시아OS와 플루터를 통해 2019년에는 어떠한것들을 내놓을지 기대됩니다.

서버리스와 도커

서버리스

2015년만해도 서버리스는 모두에게 생소했지만 이제 모든 메이저 클라우드 서비스에는 서버리스 서비스가 있습니다. AWS의 람다, 구글 클라우드의 클라우드펑션, MS애저의 애저펑션이 그렇습니다. OS까지 설정할 필요가 없는 이런 서버리스 기술은 서버 유지와 운영비용을 기하급수적으로 낮추어주고 더이상 로드밸런싱들을 신경쓸 필요가 없어집니다. 저또한 대부분의 서비스를 서버리스 기반으로 운영하고있고 이를 통해 서버비용의 98%를 줄일 수 있었습니다.

특히 최근 Serverless Developer를 자청하는 사람들이 많아지고 서버리스 플랫폼만을 개발하는 개발자 그룹이 늘어나고있습니다. 링크드인만 보아도 Serverless Developer라는 말이 보편적으로 쓰이고있고 국내에도 AWS 한국사용자모임을 중심으로 많은 서버리스 개발 세션과 모임이 이루어지고있습니다. 앞으로는 이런 서버리스 개발이 또 하나의 독자적인 개발영역으로 자리 잡을것 같습니다.

도커 그리고 쿠버네틱스

올해 도커를 이야기할때 쿠버네틱스를 빼고 이야기할 수 없습니다. 도커는 고언어로 작성된 가상화 컨테이너 기술이며 쿠버네틱스는 구글에서 도커 컨테이너들을 관리하기위해 내부적으로 사용되던 기술입니다.

이전까지 도커스웜이나 ECS 같은 컨테이너 관리기술 즉 오케스트레이션 툴들이었지만 2015년 구글에서 쿠버네틱스를 공개 오픈소스화 하였고 이후에 도커하면 빼놓을 수 없는 기술이 되었습니다. AWS의 EKS, 애저의 ASK등이 쿠버네틱스를 지원하면서 사실상 모든 메이저 클라우드 회사들이 쿠버네틱스를 지원하고 있습니다.

사실 우리가 EC2를 사용하는것도 거대한 메인 컴퓨터들로부터 가상화가 되어있는 리소스를 할당받는것이고 도커를 사용한다면 가상화에 가상화를 하게되는 샘입니다. 하지만 도커를 사용한다면 가상화되었다고해도 호스트의 99%의 성능을 끌어올릴 수 있습니다. 그 이유중 하나는 도커가 엄청난 네트워크 처리와 다중처리에 특화되어있는 고언어 짜여있기때문입니다. 참고로 고언어의 컴파일 속도는 사실상 스크립트 언어 수준(?)일정도로 컴파일도 매우빠릅니다.

개인적으로 도커와 쿠버네틱스는 클라우드와 정말 궁합이 잘맞는것같습니다. 이 두 기술을 활용하면 사실상 개발환경과 운영환경의 일원화가 가능하며 무중단 배포를 GUI 환경에서 클릭 몇번으로 가능하게합니다. 예전처럼 이미지파일담긴 USB가 아닌 코드 몇줄짜리 Dockerfile로 서버세팅 모든것이 가능해집니다.

올해 많은 회사들이 기존의 개발환경을 도커로 리팩토링하는 도커라이징이 유행이었습니다. 특히 오픈소스들을 필두로 많은 도커라이징이 이루어졌고 이를 통해 로컬 개발환경과 원격 개발환경 그리고 실제 서비스 환경의 일원화가 가능해졌습니다. 2019년에도 도커의 인기가 날로 높아질것이라는걸 의심하는 사람은 없습니다. 다만 앞으로 어떠한 방향으로 더 발전하게될지가 궁금해집니다.

지는 SNS 뜨는 스트리밍

모바일앱의 전통적인 강자는 Facebook, Twitter, Instagram, Snapchat과 같은 SNS앱이였습니다. 하지만 최근 틱톡, 넷플렉스, 유튜브등 비디오 스트리밍 서비스의 상승세가 무섭습니다. 특히 중국에서 만든 틱톡이 미국스토어에서 전통적인 실리콘밸리의 강자 페이스북을 월간 다운로드수로 넘어섰다는건 큰 뉴스거리였습니다. 이때문에 페이스북에서는 틱톡에 대응하기 위한 틱톡을 배낀 라쏘를 출시했습니다. 반대의 경우는 많았지만 실리콘밸리 대기업에서 중국회사의 앱을 베껴 출시하는건 보기 힘든 사례일만큼 비디오 스트리밍 앱들의 위세가 대단합니다.

수익모델이 조금 다를 수 있기때문에 지출액 순위로 단순비교하기는 힘들지만 스토어 상위 10개 앱을 기준으로 비게임 부분의 경우 라인과 틴더를 제외하면 모두 비디오 스트리밍 앱입니다. 특히 넷플렉스와 유튜브는 미국내 발생하는 전체 트래픽의 50% 이상을 차지하고 전세계적으로는 25%를 차지한다고 합니다. 모바일 앱의 트렌드가 점점 텍스트에서 비디오로 패러다임이 넘어가고있음을 느낄 수 있습니다.

마치며

올해도 정말 다사다난한 한해였던것같습니다. IOS진영은 작년에 비해 다소 조용했지만 안드로이드는 Jetpack과 AndroidX의 등장으로 또 배워할 내용을 산더미처럼 만들어주었습니다.

(사실 자극적인 책 제목은 반어법으로 이러한 개발자들을 비꼬고있습니다)

이제 한가지만 배워 유지보수하면서 먹고사는 세상은 더이상 도래하기 더 힘들어지고있습니다. 7~8년전쯤 CCIE 자격증을 2개나 취득하신 거물 개발자분께서 전산만큼 철밥통은 없다며 시스코 관련 기술공부를 추천해주신게 기억이 납니다. 당시기준에선 전혀 틀린 이야기가 아니였습니다. 당시 IT회사를 창업할때 항상 고려해야할게 건물의 스위치와 라우터등 전산 장비들이었습니다.

하지만 그로부터 AWS를 필두로한 클라우드의 본격적인 등장은 점점 많은 기업들이 값비싼 전산팀을 유지할 필요성을 줄이고있고 많은 스타트업이 전산에 대한 고려없이 클라우드를 통해 서비스하고있습니다. 전세계의 주요거점에 각각 데이터베이스를 구축하고 한국의 데이터베이스와 클러스팅 한다음 모니터링 한다는것은 과거에는 엄청난 비용과 시간이 들어가는 일이었지만 지금은 클라우드를 통해초기비용없이 클릭 몇번으로 가능한 세상이 왔습니다. 불과 6~7년만에 서버개발의 큰 패러다임이 싸그리 바뀌었습니다.

AWS 스노우모바일 서비스는 많은 양의 데이터 이전을 위해 트럭이 직접 방문합니다(?)

AWS Beanstalk 서비스는 개발환경 마저도 클라우드를 통해 구축할 수 있도록 도와줍니다. 또한 원장데이터나 하드웨어의 외부반출이 어려운 병원/은행등의 서비스를 위해 올해 11월 AWS는 reInvent:2018에서 아웃포스트라는 서비스를 발표했습니다. 이 서비스는 하드웨어를 클라우드업체에서 가지고 운영하는방식이 아닌 직접 자사에 하드웨어를 두고 소프트웨어적인 관리를 AWS 웹콘솔이나 API를 통해 할 수 있도록 도와줍니다.

몇년만에 모든 패러다임이 바뀌는 세상입니다. 계속 배워야 살아남는 치열한 시장에서 내년에는 또 어떤 패러다임과 기술들이 쏟아질지 감을 잡기 어렵습니다. 2018년 잘 마무리하고 앞으로 다가오는 2019년 파이팅 해야겠습니다!

참고 및 인용

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.