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
ios-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
red hat red filequeue
rspec-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 rdoc git 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 jruby
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
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
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
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Thank You ️ ️
Questions?
@sanathkr_
@sanathkr
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.