December 5, 2016

Serverless Computing will be game changer

The core of the emerging Serverless Computing is the programming model paradigm, not container infra technology. One example is the existing event processing programming, which takes the stream data produced in the real world and emits it to the backend,
   frontend: App program -> emit streaming data to backend
   backend: kafka -> storm / spark / dataflow -> data store -> reuse
Inefficiency and disadvantages arising from the structure of the frontend and the backend are complex and slow (eg, distributed queuing, distributed streaming processing, etc.) and difficulty in constructing the server-side system. In particular, the task topology management problems of DAG-style or minibatch-style job are difficult. These are the Storm, Spark, which is now going to legacy.

So how does this change in Serverless?
  App program: pipeline of lightweight functions
To achieve this, runtime provisioning of lightweight function services is required, and that is Serverless Computing.

As another example, imagine the prediction model of Google Flights introduced in the previous post. The traditional approach would be to implement the prediction service by deploying the learned model with the existing dataset:


Machine Learning can also be implemented with the Serverless Computing Architecture in the fashionable DevOps style. The following is the Serverless Architecture of the event-driven prediction algorithm:


The advantage of this is that the complexity of the implementation and system is dramatically reduced, and it is possible to design the system with a decentralized architecture.

December 4, 2016

Serverless Computing 이란?

최근 대두되는 Serverless Computing의 핵심은 프로그래밍 모델 패러다임에 있다. 한가지 예를 들어, 기존 event processing programming을 보면 현실세계에서 생산되는 stream data를 넘겨받아 backend에서 분산처리하는 구조인데,
   frontend: App program -> emit streaming data to backend
   backend: kafka -> storm / spark / dataflow -> data store -> reuse
이렇게 frontend와 backend 를 나누면서 발생하는 비효율성과 단점은 server-side 시스템 구축이 어렵고 (e.g., 분산 큐, 분산 streaming 프로세싱 등) 복잡하며 느리며 특히, backend의 DAG-style 또는 minibatch-style 분산 컴퓨팅 작업 내 Task topology 관리 문제가 어렵다. 이런걸 하던 애들이 기존에 Apache Storm, Spark 이런건데 이것도 이제 legacy로 가는 거다.

그럼 Serverless에서는 이것이 어떻게 바뀌느냐.
   App program: pipeline of lightweight functions
끗~. 이를 달성하기 위해서 lightweight function 서비스의 runtime provisioning 이 필요한 것이고, 그걸 한다는게 Serverless Computing 이다.

또 다른 예로, 이전 포스트에서 소개한 Google Flights의 가격 변동 예측 모델을 상상해보자. 전통적인 방법은 다음과 같이 기존에 쌓아둔 dataset을 가지고 학습된 model을 deploy 해서 prediction 서비스를 구현 할 것이다:


Machine Learning 또한 요즘 유행하는 DevOps 스타일로 Serverless Computing Architecture로 구현가능하다. 다음은 Event-driven prediction 알고리즘의 Serverless Architecture이다:



이로써 얻는 장점은 구현과 시스템의 복잡도가 극적으로 줄어들며, decentralized architecture로 시스템을 설계 하는 것이 가능하다.

관련 오픈소스는 Tensorflow on Openwhisk 에서 확인해보시라 (주말 프로젝트라 속도가 느림).

November 24, 2016

Google Hotels & Flights로 보는 배치-성 data-driven vs. 실시간-성 event-driven

지난 달 Google Flights는 가격 변동 예측 서비스를 추가했다고 발표했다.

3일 후 가격 오를거 같다고 알려주는 중 ㅋ

Google Hotels, Trips, Gmail 등과 결합되어 시너지를 만들어 낼 것으로 예측하며 그러나 내가 제품 분석가는 아니므로 자세한 얘기는 스킵.

하고 싶은 얘기는 내가 요즘 보고 있는 백-엔드 기술 변화가 배치-성 data-driven에서 실시간-성 event-driven으로의 전환에서 오고 있다는 것이다. Database, Analytics, 그리고 Machine Learning 대부분의 분야에서 변화가 있을 것으로 조심스레 예측한다 (나도 요즘 Time-series Database, Analytics, and Machine Learning 에 대해 좀 더 심도 있게 파고 들고 있다).

가령, 가격 변동 예측도 요즘 유행하는 Deep Learning을 쓸 수 있는데, 다음은 구글링으로 굴러다니는 이미지 스틸:

A set of event tuples를 입력! 

타임 윈도우 이벤트 셋을 인풋으로 받아 시계열 예측을 설명하고 있는데 관련해서 자료를 찾으면 Elman Net, RNN 등을 활용해서 Time-series Predictions가 이미 꽤 연구되어 온 것을 볼 수 있고, 내 생각엔 좀 더 보강하면 학습과 예측 둘 다 실시간 온라인으로 반영할 수 있겠다는 생각이 든다.

최종 서비스로 나가기 까지의 processing, training 모든 과정 전부 event-driven programming 으로 가능하며 IoT 인터넷 시대에 맞춰 관련 기술의 확산은 점차 가속화 될 것으로 생각한다.

November 23, 2016

비전, 전망, 전략의 부재의 효과

소프트웨어는 상당한 지적 노동에 해당한다.
그래서 소프트웨어 산업은 지식인들로 구성 되는데 우리는 그곳에서 가짜와 삐딱이를 자주 보게 된다.

지식인이 삐딱선을 타는 이유는 하나다.
비전의 부재, 전망의 부재, 전략의 부재. 

어디로 가야할지 길을 모르니 모호하고 피상적인 트렌드를 토대로 사기를 치는 가짜로 전락하는거다.
이것이 기업은 물론 각 개인에게 있어 지식보다 비전과 전략이 필요한 이유다.

November 3, 2016

If This Then That

 최근 친구로부터 흥미로운 스타트업 이야기를 들었는데 그것이 IFTTT 이다.

 내용인즉슨, 현실 세계의 모든 action stream을 트리거로 연결한다는 것인데, 서비스로써의 유용성이나 가치보다 이것이 수집할 데이터에 대해 의미가 굉장히 크다.

개인적으로는 이것이 성공을 어느 정도 한다면 IoT Intelligence의 진입점에서 큰 획을 긋지 않을까 생각한다.