serverless computing - ibm.com · 2 session topics § what is serverless computing? § what is...

34
1 Matt Rutkowski, STSM, IBM Cloud Open Technologies http://openwhisk.org/ and the Apache OpenWhisk Project Serverless Computing https://openwhisk-team.slack.com/ #openwhisk

Upload: buinhu

Post on 16-May-2018

231 views

Category:

Documents


1 download

TRANSCRIPT

1

Matt Rutkowski, STSM, IBM Cloud Open Technologies

http://openwhisk.org/

and the Apache OpenWhisk Project Serverless Computing

https://openwhisk-team.slack.com/

#openwhisk

2

Session Topics

§ What is Serverless computing?

§ What is Apache OpenWhisk?

§ OpenWhisk’s Event-Driven Programming Model

§ Apache OpenWhisk Project Overview and Architecture

§ Apache OpenWhisk Community

3

What is Serverless Computing?

“No Servers, Just Code”

The Evolution of Cloud Platforms

Cloud Platforms

Lots of Configuration & Pre-planning for “worst case” Scaling & Failover

Infrastructure-as-a-Service (IaaS)

....

Platform-as-a-Service (PaaS)

....

Evol

utio

n

IaaS = Virtual Machines (VMs) •  Workloads: Heterogeneous applications

•  Tend to be tightly-coupled, Monolithic •  Configure / Manage “Stacks” of applications −  Web/App Server, DB, logging, …

•  Complex Network & Storage Configurations −  IPs, Ports, Routes, SANs, Volumes, …

•  Plan / Predict for Scaling Needs −  CPUs, Memory, Load Balancing, …

HW

SDS

Compute Storage Network

Database Identity / Access … OSS / BSS

Cloud Datacenters •  Software-Defined-Services (SDS) abstraction of −  Hardware

−  Compute, Network and Storage Hardware −  “Fabric” Services

−  Security, Data, Operational, Business, etc.

The Evolution of Cloud Platforms

Cloud Platforms

Still Lots of Configuration to work with Frameworks and Resources

Infrastructure-as-a-Service (IaaS)

....

Platform-as-a-Service (PaaS)

....

Evol

utio

n

PaaS = Containers •  Workloads: Homogenous applications •  Utilize abstract Configuration, Scheduling and

Management frameworks −  Kubernetes, Apache Mesos, …

•  Setup Monitoring tools for Container Apps −  Prometheus, Logstash, …

•  Configure “Platform” services interactions: −  Storage, Access Control, Key Mgmt., …

HW

SDS

Compute Storage Network

Database Identity / Access … OSS / BSS

MicroServices (often run in Containers) •  Split large codebases into small, standalone services •  Single “light weight”, RESTful endpoints or APIs

−  “Protocol aware” (HTTP, HTTPS) •  Built in groups or “suites” around “resources” •  Run inside MicroService “Frameworks” to handle

•  Configuration, logging, metrics, service registration & discovery, protocols, etc.

−  e.g., Flask (Python), Spring (Java), Gizmo (Go)

Cloud Platforms

Serverless Computing is the next step for Cloud platforms

Serverless = Functions •  Workloads: Simple, single-tasked Functions •  No “Back-end” Servers Configuration −  Automatic scaling, based upon load −  Driven by events, and their data

•  Majority of Functions & Orchestration are “Front-end” −  around workflows and tasks around the applications

data … where − Developers Focus on ONLY writing

Application and Business logic!

There are still Servers! •  But they are a ‘No-Op’ for you! −  Provider’s DevOps teams configure, manage and

assure Functions scale and run efficiently.

Infrastructure-as-a-Service (IaaS)

Platform-as-a-Service (PaaS)

HW

SDS

Compute Storage Network Database Identity / Access … OSS / BSS

The Evolution of Cloud Platforms

No Configuration of Servers, Only Pay for Compute time functions actually use

Function-as-a-Service (FaaS)

...

Evol

utio

n

7

Characteristics of Serverless

Workloads: Data

Serverless Apps try to: •  Maximize “stateless”

•  or “pure” functions •  Process specific data & return results

quickly •  Do not block / poll / wait for a a

resource’s state change (results) •  Optimistic that Input data is correct,

valid.

•  Minimize “stateful” interactions •  or “impure” functions •  ”Push” state (results) to ”stateful”

services, for example •  Data Stores / Message Queues

Functions are:

•  “Data Driven” •  Event Input •  Results Output data •  often JSON

•  All about ”Front-end” resources •  What’s a Server? What’s a Network?

•  Protocol (route) agnostic •  HTTP? What is that?

•  Event-Driven •  Run only when associated Event

“Triggers” them

8

What is Apache OpenWhisk?

whisk (v) : to move nimbly and quickly.

Apache OpenWhisk is an open source Serverless platform

The name “Whisk” is also used for a kitchen utensil… Developers, the “Chefs”, can use OpenWhisk to quickly compose compelling applications, by “mixing” together interesting functions using event data 9

Cognitive

Analytic IoT

Mobile

DevOps

Micro

Services

OpenWhisk provides a robust, scalable Serverless platform

for rapidly integrating services and data from any domain using events that drive simple integration code.

Designed to connect a fast-moving, event-driven world

10

Many Cloud providers offer some form of Serverless framework

Amazon

AWS Lambda Azure Functions

MicroSoft

Cloud Functions

Google

Functions

Iron.io Brocade

Apache OpenWhisk offers: •  Apache Software Foundation (ASF)

•  True, community-driven open source (Apache 2 License)

•  Proven on IBM’s Bluemix Cloud Platform •  Exact, same code in open source

•  Highly Performant with strong, automated integration testing •  < 10 millisecond schedule/load into runtime, results caching

others …

History of OpenWhisk Early 2015

IBM Research begins coding

Feb 2016 IBM debuts and open sources on GitHub (openwhisk.org) & announces

Nov 10, 2016 IBM Bluemix beta offering

Aug 2016 Adobe partners with IBM on API Gateway for OpenWhisk

Nov 23, 2016 OpenWhisk Incubated at Apache Software Foundation

Dec 14, 2016 General Availability (GA) on Bluemix

May 2017 OpenWhisk’s API Gateway integration GA

Feb/Mar 2017 MessageHub (Kafka), Web Actions, VS Code

12

Apache OpenWhisk has many deployment options

docker compose

Distributed

Local Development

Windows OpenWhisk Serverless Platform

All component services are built into Docker containers

13

Event-Driven Programming Model

“performing the correct amount of work at the time needed”

14

Why an Event-Driven Programming Model?

Everything produces Events…

in the Natural World and in IT

15

A Action :

OpenWhisk’s Programming Model

Astateless,relativelyshort-runningfunctioninvokedasaneventhandler.

A JSON Object JSON Object

Input Output Stateless Function

AnAction’sruntimeismeasuredinmilliseconds,…wellunderthedefaultedmaximumof5minutes

Goal:

16 16

Trigger :

Note:Inapub-subsystem,atriggercouldbeviewedasamessagetopic.

OpenWhisk’s Programming Model

Thenamedchannelforaclassofevents.Triggersrepresenttheevents(andtheirdata)themselveswithoutanyconceptofhowtheyweregenerated.

T

T Event sources

(logical, named channel)

OpenWhisk Serverless Platform

17

R Rule :

OpenWhisk’s Programming Model

Trigger (conditional logic)

A mapping from a Trigger to an Action which may contain simple conditional logic.

Note: OpenWhisk evaluates incoming events (that belong to a Trigger) and invokes the assigned Action (event handler) associated by the Rule.

T R

Action

A

18

Feed

F Feed :

Programming Model

A Feed manages the stream of Events from an external Event Source with some optional control operations called Feed Actions :

•  CREATE, DELETE, PAUSE, UNPAUSE

The running Feed “fires” events to an associated Trigger

Note: Feeds can ”Fire” Triggers without an Event Source such as the OpenWhisk Alarm package.

CREATE

DELETE

PAUSE

Feed Actions

Trigger

T

Action

A Event

source

19

P Package:

Programming Model

Anamed,sharedcollectionof(Namespaced)Actions,Triggers,Feeds,Rules,…

DesignedasaHirst-classentityintheOpenWhiskModel,beingusedbynewWhiskDeploytool(“wskdeploy”)for1-clickDeployments

manifest.yml

Note:

T A

R F

P Package

20

OpenWhisk Platform

Service ecosytem

Bluemix services 3rd party services

Self-enabled services

ActionNodeJS

Apache OpenWhisk – Event-Trigger-Rule-Action Processing

Package

Feed

Package

Feed

Package

Feed

Data Stores

Instrumented Machines

Rule

Rule

External Service

Eco-System

Packages

Rule

P

Triggers / Rules

FT

Social Media

RA

Actions & Action Sequences

Action 2Python

Action 3Swift

Action 1NodeJS

Action 1Swift

Action 2Docker

Sample Event sources

3rd Party or Self-Enabled −  REST APIs −  Message Queues −  Events −  Feeds

Events

21

Apache OpenWhisk Project Architecture & Overview

22

OpenWhisk “Core”

OpenWhisk Controller Load Balancer Activator

HTTP request / response

Messages for Invoker

Here is the high level architecture of OpenWhisk:

OpenWhisk Platform Architecture

Router Message Bus

Key-Value Store

Document Store

1 topic per-Invoker

InvokerInvokerInvoker•  Read message, •  Spawn Docker

container language runtime

(JS, Python, Swift, etc.)

Ansible Deployments “Source of Truth”

Deployment, Configuration

Information

•  Client endpoints •  SSL Termination

OpenWhisk Platform Components are all “Docker” containers

•  manages the Kafka cluster, tracking… −  status of nodes present in Kafka cluster −  topics, messages, and quotas.

OW CLI

RES

T

•  Actions •  Triggers •  Rules •  Namespaces •  Credentials •  Metadata •  etc.

Docker Containers

OpenWhisk APIs (CRUD)

Compute Nodes (Virtual Machines)

Docker Engine

IaaS

Invokers ‒ Run Language-Specific Docker Containers for Actions

A

OpenWhisk supports many languages (runtimes) for Actions •  JavaScript, Swift, Java, Python and more in the future…

OpenWhisk Scaling nodejs python swift java docker

Container Clusters

OpenWhisk Controller Automatically … •  Schedules the correct language runtime container for your code •  Caches Action code keeping it “warm” •  Automatically monitors performance and scales containers

“other”

24

Tooling

Apache OpenWhisk “Eco-System” Overview

ControllerRouter Message Bus

Key-Value Store

Document Store

Invokers

OpenWhisk “Core”

OpenWhisk “Catalog”

wskdeploy (deployer + spec.)

(”wsk”) CLI

debugger

playground (XCode Extension)

API Gateway

Application “Samples” Packages

Alarms

Kafka

Cloudant

External Resources

devtools (Compose, Kube)

Com

man

d Li

ne In

terfa

ce

Push Notifications

“Template”

xcode (x3)

slackbot

RSS

GitHubSlackBot

slackinvite

vscode

matos

Workshop, Tutorial

openwhisk.github.io (openwhisk.org)

JIRA

Ansible Deployments

25

incubator-openwhisk §  Contains the OpenWhisk Serverless Platform code

•  Scala is the Primary Language of the “Controller” •  Manages Whisk System Entities / State; Load balances Invoker requests; Provides Logging

§  Ansible run books for various deployment environments •  i.e., ”Local” (single Vagrant VM), “Distributed”, “Mac”

“Core” OpenWhisk Platform Repository O

penW

hisk

incubator-openwhisk-catalog §  Catalog of built-in “system”, “utility” and sample Actions and Feeds

– Utilities: Combinators (forwarder, retry, etc.), Git, Slack, Weather, Web Socket, IBM Watson

– Samples: cat, countdown, curl, greeting, hello (variants), httpGet, sort, split, trigger, wordcount, …

C

atal

og

System & Utility Catalog Repository

26

incubator-openwhisk-cli • Implements “wsk” CLI using the “Cobra” framework

–  Integrated Syntax Checking (POSIX flags) / Auto-completion / Validation / Help

• Supports “Go” API Client as a “plug-in” •  Supports client SDKs… (component = docker | swift 3 | iOS 9 &10 | OSX)

incubator-openwhisk-client-go •  Implements HTTP-REST APIs for OpenWhisk

– Actions. Triggers, Rules, Activations, Packages, Namespaces, – Api Gateway, SDKs, more…

Http API Clients for other languages (Python, Swift, JavaScript) •  incubator-openwhisk-client-python •  incubator-openwhisk-client-swift •  incubator-openwhisk-client-js

(”wsk”) CLI

Com

man

d Li

ne In

terfa

ce

Command Line Interface (CLI) Repositories

27

Package Repositories

openwhisk-package-alarms •  Alarm (Feed) that fires a (trigger) event at a specified frequency (UNIX “crontab”).

openwhisk-package-kafka •  Package for communicating (Producer-Consumer) with Kafka (or IBM Message Hub)

instances…

openwhisk-package-push-notifications •  Push Service: Google Cloud Messaging (GCM), Apple Push Notification (APNs), Firefox/Chrome/

Safari

openwhisk-package-jira •  Integration with JIRA events. Simple issue creation supported

openwhisk-package-rss •  Subscribe to RSS/ATOM feeds and receive events when a new feed item is available.

openwhisk-package-cloudant •  Enables interaction (read / write / monitor) with a Cloudant database

Pack

ages

28

incubator-openwhisk-apigateway • Main configuration files and a Dockerfile to build all modules into a single container.

–  leverages technologies like Nginx, OpenAPI (Swagger), LUA Modules (plug-ins) •  Combined with OpenWhisk it provides an easy way to build back-ends without the need to

manage servers by mapping APIs to actions • Now supported via Whisk CLI using the “api” command (no longer “api-experimental”)

Recent Activities • Management interface to configure actions as APIs • OAuth2 support • CORS support • Profiling tools used to measure performance

API

Gat

eway

API Gateway Repository

29

incubator-openwhisk-wskdeploy •  OpenWhisk deployment tool “wskdeploy”, 1-click deployments •  Deploys OpenWhiske ”Packages” ( “manifest.yml” files )

incubator-openwhisk-devtools •  Experimental deployments for testing OpenWhisk functions locally. •  using Docker Compose, NodeJS

incubator-openwhisk-deploy-kube •  Kube deployment – on Ubuntu (localhost) - as of May 16th

–  All Docker images now shared between both Compose and Kubernetes incubator-openwhisk-debugger

•  Debug Actions locally using the ”wskdb” command using NodeJS (NPM package)

incubator-openwhisk -xcode / -playground •  collection of OpenWhisk tools for OS X implemented in Swift 3

incubator-openwhisk-vscode •  Prototype extension for Visual Studio Code

“Tooling” Repositories

Tooling wskdeploy

(deployer + spec.)

debugger

playground (XCode Extension)

devtools (Compose, Kube)

xcode (x3)

vscode

30

Apache OpenWhisk Community

31

OpenWhisk Project Vital Statistics

§  GitHub (”Core” Repo.) • Stars

– 1493: https://github.com/apache/incubator-openwhisk/stargazers – and growing ~10-20 per week on average

• Stats – 311 forks https://github.com/apache/incubator-openwhisk/network – Contribution Graphs: https://github.com/apache/incubator-openwhisk/graphs/contributors – 85+ Contributors (all repos.)

•  plans to formalize releases (and binary downloads) from Apache so we can start tracking users…

32

OpenWhisk – Become a Contributor

✓  More Integrations ! (Queues, Devices, Data Stores)

✓  More Language Runtimes

✓  More Packages ! (Twilio, Facebook, Twitch, etc.)

✓  More Samples (Workflows of 3+ Actions)

✓  Verify / Fix / Create / Improve Documentation

✓  Whisk Deploy (wskdeploy) Package Manifests

•  for all Curated Packages / Samples

✓  Web User Interface (Compose, Deploy, Debug via UI)

✓  More Web Actions (Mime Types)

✓  Whisk Package Catalog (NPM-like Distributed Registry)

My personal

https://github.com/apache?q=openwhisk Find all OpenWhisk Repositories:

33

OpenWhisk.org – Connect with us!

§ Latest Events & Meetups! § Links to …

• YouTube: Channel “OpenWhisk” • SlideShare: https://www.slideshare.net/OpenWhisk •  Twitter: #openwhisk • Slack:

– Invite yourself using a Whisk Action! http://slack.openwhisk.org/ • Medium (blogs): https://medium.com/openwhisk • StackOverflow: tag “openwhisk”

34

Questions?

Thank you!