Building Open Source Communities @ AWS Serverless Sanath☁ Kumar Ramesh Senior Software Engineer,️ AWS️ Serverless

@sanathkr_ @sanathkr

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. About Me

Sanath Kumar Ramesh, Software Engineer, AWS Serverless @sanathkr_ @sanathkr • Obsessed about serverless developer tools since 2016 • Dev Lead for open source serverless developer tools: SAM and SAM CLI • Open source enthusiast • Previously: • Full stack developer at startups • Windows Kernel Engineer at Microsoft • Designed multicore processors at grad school

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Happy 20th Birthday Open Source!

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source @ AWS aws.github.io

Grow Improve Increase Communities Code Contributions

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Motivation for Open Source

We are motivated to collaborate by many of our partners and customers

Open source projects help us to innovate

Scaling open source projects as AWS services meets customer needs

Open data helps customers build innovative services

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Code

Contributions

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

gerrit-check

scapy

lombok

tez

gradle fast align

apache phoenix

capybara

2016 plugin -

cbmc pygresql cmock

devkit

dovecot

appium libarchive

esp-open-rtos

jcommander

picker

iot

hue

toolbar zipper mariadb-connector-j

github eclipse paho

- mysql workbench

littleproxy libsoup

cnn aws

californium cocoapods rails remotedebugger

pyzmq redis

elastalert appium-gulp-plugin

chromedriver

street address google guava google

xcpretty - debug

wing -

apache hive loader

fabric apache joshua

catwatch -

libfuse daterange

webdriveragent

appium

utilities hot

grpc sync -

wycheproof

appium

- django

oci-fetch

eval

yubico kernel -

ansible gulp-typescript

yarn uml

mqtt mr boto 3

ldns bixie

pig - go

react react scikit-fuzzy

react

mshadow spark apache -

appium-android-bootstrap libgxps safe postgresql presto

linux glib rosette wordpress apache commons dbutils

udp

grpc - joshua decoder lantram parquet akka

glib-networking

dynamic-object

appiumadb

agent

chromium vim input presto hadoop apache 2

docker fop -

httpclient

-webkit-debug-proxy gvsbuild statsd backend

databind

assertj-core

webdriver apache commons lang

dynamodb-milkhatx

java

qemu

apache apache pig word segmentation goa

logstash ruby-simple-queue

immutables.org mvel jackson hana

openfire tupl moses nginx

iputils netty

tsung treeextra chromium

s3_file dockerclient

wired tiger -

httpcomponents

facebook

red hat red filequeue

-retry

go

aws-scala beanstalker sentry apache mxnet

leveldb

xen

client

- troposphere

apache oozie

lang

containerd

pkg errors go-winio

dpdk celery dynamodb backend statsd

apache zeppelin exe

-

- elephas

init

bandit gpyopt

-

go go

http2 kinesalite

go apache commons io -

apache bigtop elasticsearch

dot

yield-java -

open fire cloud

kenlm ews java api rebouncer

botoflow parquet-python haproxy

apache ant mqtt js glisten

bigstore

- apache apache tomcat

exoplayer protocol

angulartooltips

-

appium airflow

apache hbase sys-proctable ultipart-parser

p5 dtcoretext cmis_5 react-native

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

gbm java apache (http server) cerebro alks-cli oss-attribution-generator

tslint-eslint-rules glib

incubator mxnet

gerrit-check

rollbar linux (kvm) hue rgp netlink

web socket sharp

cli

-

cni

xml scapy

- jgi postcss-extract-animations tabular

json11 nvme

- fast align

flink tez emscripten

r509-ocsp-responder

gucumber

lmdbjava securitymonkey

linux t

licensee

plugin

lombok

dovecot

- smack

aalto homebrew pygresql

nodejs gpy wing slight.alexa 2017 gpyopt

apache phoenix

libarchive

capybara

devkit

picker

jcommander

tslint

appium

littleproxy

typescript-fsa

cmock

zipper syntax moby

- esp-open-rtos

gradle

iot

cbmc

kappa

github elastalert toolbar mariadb-connector-j

- libsoup

lfs

irate

plus

mysql workbench plantuml eclipse paho

cmis_5

pyzmq cnn cocoapods

flask-sqlalchemy aws

tensorboard git

rails

fortune server server fortune 389ds appium-gulp-plugin californium

pkcs7pad

wycheproof sockeye guava google

debug redis xcpretty street address

- wing

xenbits goa

tinyxml12

remotedebugger openjdk

phoenix loader

chromedriver

open mpi

daterange

-

-

catwatch sync tacacs

fabric

apache hive

libfuse sqoop

webdriveragent

hot

chart.js kernel

yubico - utilities

s2n libc

swipeout -

django yarn apache joshua

go

astrum apache spark apache

oci-fetch

-

eval -

ex_aws - moto

ansible appium boogieman

yarn react

apache beam

grpc appium mr boto 3 wycheproof mysql uml - bixie

scikit-fuzzy react

pig

mshadow keras gulp-typescript

safe

native ompi

ldns mqtt

libgxps openssl

grpc

bam -

dmlc linux apache commons dbutils

appium-android-bootstrap -

udp

- joshua decoder lantram ublockorigin apache hadoop

parquet presto typescript-json-schema

) bam

react glib

glib

libjson geckodriver akka

linux (pm) linux xfs counterfeiter dynamic-object

agent

peewee

appiumadb

input

nvme glib-networking rosette lang fop assertj-core -

chromium vim (

firefox

httpclient

test gvsbuild presto hadoop apache 2 docker -

ios-webkit-debug-proxy go

qemu

databind

statsd backend tercom

word segmentation linux

wordpress

dynamodb-milkhatx

mvel apache apache ant

apache apache pig nginx webdriver

libmoon apache commons lang

openfire gsettings

eslint

dpdk immutables.org logstash moses iputils

tsung ruby-simple-queue

hana

webhooks

netty chromium

s3_file

wired tiger tupl jackson

bencode-go wingtk treeextra

btrfs multi-module-maven-release-plugin

liblouis

curator -

aws-scala

filequeue

rspec-retry

sentry

dockerclient ts-test

binary

go

-

-

gpyopt

parsimonious

facebook

kotlin httpcomponents

autovpn

beanstalker

libkv server

yarn cmake

linux-pci leveldb

-

pyaad go rust sequel apache mxnet

client

corenlp xen - troposphere (xen drivers) (xen pidgin

react-int

ntpsec

open fire

apache oozie

+

containerd celery dynamodb backend glisten cairo

exe

hadoop graph

apache zeppelin -

rigor

statsd

init python

gtk

-

-

allure -

linux mqtt js

errors

pynamodb

object

apache bigtop emrun airlift

apache apache tomcat

red hat red -

deniswernert/udev

dataformats

dot

nginx

kinesalite

go

elephas

bigstore

bandit -

- lombok -

rdoc irate uiautomator2

apache commons io parquet-python elasticsearch

pkg

yield-java conda -

git linux (fbdev)

apache apache

rebouncer

lfs

immutableassign paramz

botoflow exoplayer mithriljs

kenlm ews java api -

janus cloud

papaparse haproxy gatsby apache lucene

containernetworking

dynamic

airflow git

sys-proctable appium macports

angulartooltips

hypothesis

s3fs jackson ultipart-parser

behave appium

kubernetes apache hbase dtcoretext bro

coreos vowpal wabbit koji bin sparklingml go-winio linux (blkfront) conda-build

definitely typed definitely redux seabios repolinter linux (arch) postgresql intellij-community functional-streams-for-scala wireshark react-native react-spinkit jscolor spark-redshift multi-module-mave spring framework pydeepgp p5-protocol-http2 deep visualization toolbox mxnet notebooks react-draft-wysiwyg

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

libfabric xen devel cryptography

java apache (http server) cerebro alks-cli oss-attribution-generator

tslint-eslint-rules gbm cynical glib

incubator mxnet

linux (kvm) gerrit-check

rollbar rgp netlink

jruby arrow cldr

web socket sharp hue

cni

cli

-

xml scapy

- tabular

jgi authenticator tensorflow - diaporama packer

json11 postcss-extract-animations nvme

- fast align tez emscripten

gucumber

lmdbjava securitymonkey

linux t

licensee

plugin

lombok

dovecot

- smack

aalto homebrew nodejs pygresql

syntax

flink

amphtml

gpy - wing slight.alexa 2018 unicode gpyopt

apache phoenix

libarchive

capybara

devkit

picker

jcommander

tslint

appium

littleproxy

machines

typescript-fsa - moby

kotlinpoet zipper go-git cmock

plantuml esp-open-rtos

gradle

iot

kuromoji kappa github elastalert

toolbar cbmc mariadb-connector-j

libsoup eclipse paho pose

-

-

lfs

irate plus

mysql workbench

cmis_5

r509-ocsp-responder

pyzmq cnn cocoapods

flask-sqlalchemy aws

tensorboard git

rails

fortune server server fortune 389ds appium-gulp-plugin

quicktype californium

pkcs7pad

redis

wycheproof sockeye guava google spack

debug

xcpretty street address wing

irqbalance -

open mpi goa

tinyxml12

pysnmp

pyinvestigate remotedebugger openjdk

miniredis graphql-java kcov loader

chromedriver

daterange

tinycorelinux -

-

convolutional

catwatch sync tacacs_plus tacacs

apachespark

fabric

libfuse apache hive focus-android sqoop

teleport

webdriveragent

hot chart.js

yubico -

utilities

kernel

s2n libc

notebook

swipeout -

django yarn apache joshua go astrum

oci-fetch -

scipy

eval jwt

mosquito -

ex_aws -

llvm -

moto

bundler boogieman appium

yarn react

apache beam

grpc appium mr boto 3 wycheproof mysql uml jawk - bixie

scikit-fuzzy react

ansible pig

keras jose ompi

gulp-typescript - bam

ubuntu mshadow clearlydefined

libgxps safe native apache jena udp

ldns mqtt

openssl

grpc

-

hypothesis tvm oauth2 dmlc - apache commons dbutils -

appium-android-bootstrap

bam bam

kpatch graal joshua decoder lantram ublockorigin apache hadoop nimbus

presto typescript-json-schema cargo-kcov

parquet

)

react

glib

linux

peewee counterfeiter linux (pm) geckodriver akka

linux xfs input libjson

dynamic-object - agent

xcode-install gvsbuild libuavcan

appiumadb

jupyter notebook

firefox nvme glib-networking rosette lang

protobuf chromium fop assertj-core

(

chromium vim httpclient glib

test

presto hadoop apache 2 docker -

ios-webkit-debug-proxy go liboqs ndbench

qemu

databind

statsd backend tercom

word segmentation linux

dynamodb-milkhatx wordpress

mvel apache apache ant

apache apache pig nnvm nginx webdriver

libmoon apache commons lang

logstash

codegen

spacemacs

openfire gsettings

open quantum safe quantum open - eslint

dpdk immutables.org ffmpeg netty

moses iputils

tsung ruby-simple-queue

hana

webhooks

btrfs

wingtk -

s3_file jest

wired tiger tupl jackson

bencode-go treeextra xenbits fsdevel multi-module-maven-release-plugin

liblouis apache activemq

-

curator

intellij

swagger swagger aws-scala

go

filequeue

-

dockerclient rspec-retry

sentry

- binary txthings

ts-test

linux -

parsimonious jetty.project

sparkmagic

facebook

lsp

httpcomponents phoenix xen (devel)

kotlin autovpn

gpyopt

beanstalker

go

libkv server yarn apache mxnet openssl apache httpcomponents core cmake

linux-pci leveldb

rust -

pyaad xen sequel

client packr

corenlp netty reactive streams - troposphere apache commons-compress

cyrus-sasl pidgin react-int

ntpsec

seunjeon

open fire

apache oozie

containerd

+

badssl.com

pynamodb celery dynamodb backend glisten cairo

exe

hadoop

(xen (xen drivers) graph

apache zeppelin -

rigor

statsd

init python

gtk

-

- allure

mqtt js -

errors

object

apache bigtop emrun airlift

apache apache tomcat

red hat red -

deniswernert/udev

dataformats

goleveldb

dot

nginx

kinesalite

go

elephas

bigstore

bandit

- -

linux lombok

-

rdoc irate uiautomator2 apache commons io parquet-python elasticsearch

conda

pkg - yield-java git linux (fbdev) apache apache exoplayer

rebouncer boringssl

lfs

immutableassign paramz

botoflow mithriljs

kenlm ews java api -

janus cloud

papaparse haproxy apache lucene

containernetworking

dynamic

gatsby sys-proctable

airflow git

appium macports angulartooltips

linux kexec jose hypothesis

s3fs jackson

behave ultipart-parser appium

kubernetes dtcoretext bro

apache hbase coreos sparklingml vowpal wabbit koji bin go-winio linux (blkfront) conda-build

definitely typed definitely redux rusqlite repolinter recrud seabios linux (arch) retool jdk postgresql intellij-community openjml wireshark react-native react-spinkit jscolor spark-redshift webkit multi-module-mave functional-streams-for-scala foolbox goics jepsen glide selenium jedis apache solr istio pydeepgp

spring framework airflow incubator apache graphql-go p5-protocol-http2 deep visualization toolbox gdk-pixbuf mxnet notebooks react-draft-wysiwyg

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source @ AWS Serverless

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless means…

No servers to provision Scales with usage or manage

Never pay for idle Availability and fault tolerance built in © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Standard Cloud App Serverless Cloud App Business Logic as Code Business Logic + (Java, Python, JS etc) API + Auth + Workflow + Plumbing Logic as Configuration (API, User Auth, (Java, Python, JS etc) Workflows)

Static Configuration Static Configuration (DB, Storage, Permissions) (DB, Storage, Permissions)

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Serverless Development Tools

AWS SAM

Serverless Serverless Java Chalice Zappa Express Container

and many more..

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Tools From AWS

AWS SAM

Serverless Serverless Java Chalice Zappa Express Container

and many more..

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Tools From AWS

AWS Serverless Appilcation Model github.com/awslabs/serverless -application-model

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Tools From AWS

AWS Serverless Appilcation Model github.com/awslabs/serverless -application-model github.com/DataDog/dd-aws-lambda- github.com/alexa/skill-sample-nodejs-fact functions/tree/master/Log

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Tools From AWS

Build Web & Mobile Apps with Serverless Backend

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Tools From AWS

Chalice Python Microservices Framework

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Tools From AWS

Serverless Express Run NodeJs Apps on AWS Lambda

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source Tools From AWS

Serverless Java Container

Wrapper to run Java Spring apps on AWS Lambda

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Source @ AWS SAM

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Meet SAM!

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS SAM Template

<-THIS BECOMES THIS->

From: https://github.com/awslabs/aws-serverless-samfarm/blob/master/api/saml.yaml

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS SAM Toolset

SAM Implementation SAM CLI github.com/awslabs/serverless-application-model github.com/awslabs/aws-sam-cli

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. October 2016 – Open Specification

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. April 2018 – Open Source Implementation

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Our Journey

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Specification on GitHub

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Is Open Sourcing possible?

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM is a global service

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM is integrated to other services

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What if…

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What if someone stole our secret sauce?

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What if someone added malicious code?

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What if someone wrote poor quality code?

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Can we…

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Can we run an open source product as service?

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Can we keep some features secret?

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Do we have the right team to manage open source?

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Build Communities First, Software Next

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Communication

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Development

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Open Priorities

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. DevOps – Deployment Automation

Internal Github Deployment Pipeline

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. DevOps – Metrics & Goals

Business Metrics Community Metrics Operational Metrics

Downloads/week Num Issues, PRs Cost of install

Downloads by Python Time to first response First action success Version rate

Downloads by SAM Time to close PRs Latency of commands CLI version Community vs Internal Error rate PRs Age of Issues

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Support Community with Best Practices

• Security reviews on every release

• Deployment pipeline, automation & safe-guards

• Automated Unit & Integration Testing

• Two “LGTM” Code Reviews

• Public design discussions

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Incredible Community!

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Feedback Welcome

github.com/awslabs/serverless-application-model

github.com/awslabs/aws-sam-cli

[email protected]

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Thank You ️ ️

Questions?

@sanathkr_

@sanathkr

[email protected]

© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.