Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Speed, Modernize, Revitalize:
Reaching the Cloud Native World
Chris Bailey
baileyc@uk.ibm.com @Chris__Bailey
kitura.io
app...
#1 Cloud Programming Language
3
#1
On IBM Cloud
Using Cloud Foundry
Node.js
4
#1
On IBM Cloud
Using Cloud Foundry
Node.js
5
#1
On Serverless
Using AWS Lambda
Node.js
6
#1
On Serverless
Using AWS Lambda
Node.js
https://thenewstack.io/what-aws-lambdas-performance-stats-reveal/
12%
38%
100%
0% 20% 40% 60% 80% 100%
Cloud Native
Cloud Services
Cloud Hosted
Cloud Hosting vs Cloud Native
Evans Cloud De...
12%
38%
100%
0% 20% 40% 60% 80% 100%
Cloud Native
Cloud Services
Cloud Hosted
Cloud Hosting vs Cloud Native
Evans Cloud De...
Cloud Hosting vs Cloud Native
12%
38%
100%
0% 20% 40% 60% 80% 100%
Cloud Native
Cloud Services
Cloud Hosted
Evans Cloud De...
12%
48%
79%
0% 20% 40% 60% 80% 100%
Kubernetes
Docker
Cloud Hosted
Cloud Hosting vs Cloud Native
Node.js Foundation Survey...
12%
48%
79%
0% 20% 40% 60% 80% 100%
Kubernetes
Docker
Cloud Hosted
Cloud Hosting vs Cloud Native
Node.js Foundation Survey...
Cloud Hosting vs Cloud Native
12%
48%
79%
0% 20% 40% 60% 80% 100%
Kubernetes
Docker
Cloud Hosted
Node.js Foundation Survey...
: Key Technologies
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install OS updat...
229 MB
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
FROM node:8
WORKDIR "/app"
# Install O...
$ docker build -t node-app -f Dockerfile-run .

$ docker build -t node-app -f Dockerfile-run .

$ docker run -d —p 3000:3000 -t node-app
$ docker build -t node-app -f Dockerfile-run .

$ docker run -d —p 3000:3000 -t node-app
: Key Technologies
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
/config/deployment.yaml
/config/service.yaml
...
$ cd ./config/
$ kubectl apply -f .
$ cd ./config/
$ kubectl apply -f .
$ cd ./config/
$ kubectl apply -f .
: Key Technologies
Liveness Probes
Readiness Probes
HTTP Requests
& Live and Ready Probes
HTTP Requests
GET: /ready
GET: /ready
& Live and Ready Probes
HTTP Requests
GET: /ready 200
GET: /ready 200
& Live and Ready Probes
HTTP Requests
GET: /ready 200
GET: /health 200
GET: /ready 200
GET: /health 200
& Live and Ready Probes
HTTP Requests
GET: /ready 503
GET: /health 503
GET: /ready 200
GET: /health 200
& Live and Ready Probes
HTTP Requests
GET: /ready 503
GET: /health 503
GET: /ready 200
GET: /health 200
SIGTERM
& Live and Ready Probes
HTTP Requests
GET: /ready 503
GET: /health 503
GET: /ready 200
GET: /health 200
SIGTERM
SIGKILL
& Live and Ready Probes
HTTP Requests
GET: /ready 503
GET: /health 503
GET: /ready 200
GET: /health 200
SIGTERM
SIGKILL
& Live and Ready Probes
HTTP Requests
GET: /ready 503
GET: /health 503
GET: /ready 200
GET: /health 200
& Live and Ready Probes
HTTP Requests
GET: /ready 503
GET: /health 200
GET: /ready 200
GET: /health 200
& Live and Ready Probes
GET: /ready 200
GET: /health 200
GET: /ready 200
GET: /health 200
HTTP Requests
& Live and Ready Probes
GET: /ready 200
GET: /health 200
GET: /ready 200
GET: /health 200
HTTP Requests
& Live and Ready Probes
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const health = require(‘@cloudnative/health-c...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const health = require(‘@cloudnative/health-c...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const health = require(‘@cloudnative/health-c...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const health = require(‘@cloudnative/health-c...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const health = require(‘@cloudnative/health-c...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const health = require(‘@cloudnative/health-c...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const health = require(‘@cloudnative/health-c...
: Key Technologies
Liveness Probes
Readiness Probes
GET: /ready 200
GET: /health 200
GET: /ready 200
GET: /health 200
HTTP Requests
GET: /ready 200
GET: /health 200
GET: /metrics
GET: /ready 200
GET: /health 200
GET: /metrics
HTTP Requests
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const prometheus = require(‘appmetrics-promet...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const prometheus = require(‘appmetrics-promet...
: Key Technologies
Liveness Probes
Readiness Probes
PUBLIC NETWORK CLOUD NETWORK
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSER...
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER...
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER...
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER...
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER...
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER...
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER...
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const zipkin = require(‘appmetrics-zipkin’);-
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const zipkin = require(‘appmetrics-zipkin’);-
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const zipkin = require(‘appmetrics-zipkin’);-
Create CloudCompose| |
: stacks
Pre-built, Cloud Optimized
Shared through AppsodyHub
100% Open Source, Built on Standard Technologies
Appsody
Bui...
: stacks
> appsody
: CLI
Continuous, Containerized:
dev | test | debug | build | deploy
Pre-built, Cloud Optimized
Shared ...
: deploy: stacks
> appsody
: CLI
Continuous, Containerized:
dev | test | debug | build | deploy
Pre-built, Cloud Optimized...
Appsody Stacks
Demo
Cloud Configured Appsody Stacks
Developer Workflow using Appsody Stacks
Appsody Hub
Developer
> appsody
Cloud Configured Appsody Stacks
Developer Workflow using Appsody Stacks
Appsody Hub
Developer
Appsody Hub
Discover
availab...
Cloud Configured Appsody Stacks
Developer Workflow using Appsody Stacks
Appsody Hub
Developer
Appsody Hub
Discover
availab...
Cloud Configured Appsody Stacks
Developer Workflow using Appsody Stacks
Appsody Hub
Developer
Appsody Hub
Discover
availab...
Cloud Configured Appsody Stacks
Developer Workflow using Appsody Stacks
Appsody Hub
Developer
Appsody Hub
Discover
availab...
Cloud Configured Appsody Stacks
Cloud Platform
Developer Workflow using Appsody Stacks
Appsody Hub
Developer
Appsody Hub
D...
Appsody Stack
> appsody
Developer
Appsody Hub
Discover
available
Appsody Stacks
appsody init
Developer’s App
run

test
deb...
Appsody Stacks
nodejs-functionsnodejs nodejs-express
Appsody Stacks
nodejs-functionsnodejs nodejs-express
Application Functions
Connect
Application Functions
Connect
Appsody Stacks
nodejs-functionsnodejs nodejs-express
Application Functions
Connect
Application Functions
Connect
DockerDoc...
Appsody Stacks
Cloud Functions
Cloud Native
Cloud Packaged
nodejs-functionsnodejs
Application Functions
Connect
Applicatio...
Appsody Stacks
Cloud Functions
Cloud Native
Cloud Packaged
nodejs-functionsnodejs
Docker
Application Functions
Connect
Doc...
Appsody Stacks
Demo
Eclipse Codewind
Demo
http://github.com/appsody
http://twitter.com/appsodydev
https://appsody.dev
Appsody Eclipse Codewind
http://github.com/ecl...
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Upcoming SlideShare
Loading in …5
×

of

Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 1 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 2 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 3 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 4 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 5 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 6 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 7 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 8 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 9 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 10 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 11 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 12 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 13 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 14 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 15 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 16 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 17 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 18 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 19 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 20 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 21 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 22 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 23 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 24 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 25 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 26 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 27 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 28 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 29 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 30 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 31 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 32 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 33 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 34 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 35 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 36 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 37 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 38 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 39 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 40 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 41 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 42 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 43 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 44 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 45 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 46 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 47 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 48 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 49 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 50 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 51 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 52 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 53 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 54 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 55 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 56 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 57 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 58 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 59 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 60 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 61 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 62 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 63 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 64 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 65 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 66 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 67 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 68 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 69 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 70 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 71 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 72 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 73 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 74 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 75 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 76 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 77 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 78 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 79 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 80 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 81 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 82 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 83 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 84 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 85 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 86 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 87 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 88 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 89 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 90 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 91 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 92 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 93 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 94 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 95 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 96 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 97 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 98 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 99 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 100 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 101 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 102 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 103 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 104 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 105 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 106 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 107 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 108 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 109 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 110 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 111 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 112 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 113 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 114 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 115 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 116 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 117 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 118 Silicon Valley Code Camp 2019 - Reaching the Cloud Native World Slide 119
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

2 Likes

Share

Download to read offline

Silicon Valley Code Camp 2019 - Reaching the Cloud Native World

Download to read offline

The move to microservices enables developers to rapidly create and innovate by giving them autonomy to build and deploy applications using the languages, frameworks and technologies that they choose. However, such move requires a cost. Developers require a deeper set of skills to create apps that integrate fully with cloud-native capabilities. The additional complexity is one of the main reasons why most “cloud applications” are co-hosted. Only 38% of cloud developers are leveraging cloud services, and just 12% are building cloud-native applications. These statistics indicate that the majority of applications do not fully leverage and integrate with the additional capabilities that the platform provides. This session will introduce you how to modernize existing and build new cloud-native applications, and show how to utilize open source tools to rapidly develop and build new cloud-native applications with best practises built-in.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Silicon Valley Code Camp 2019 - Reaching the Cloud Native World

  1. 1. Speed, Modernize, Revitalize: Reaching the Cloud Native World Chris Bailey baileyc@uk.ibm.com @Chris__Bailey kitura.io appsody.dev cloudnativejs.io Chief Architect, Cloud Native Runtimes @IBM
  2. 2. #1 Cloud Programming Language
  3. 3. 3 #1 On IBM Cloud Using Cloud Foundry Node.js
  4. 4. 4 #1 On IBM Cloud Using Cloud Foundry Node.js
  5. 5. 5 #1 On Serverless Using AWS Lambda Node.js
  6. 6. 6 #1 On Serverless Using AWS Lambda Node.js https://thenewstack.io/what-aws-lambdas-performance-stats-reveal/
  7. 7. 12% 38% 100% 0% 20% 40% 60% 80% 100% Cloud Native Cloud Services Cloud Hosted Cloud Hosting vs Cloud Native Evans Cloud Development Survey 2017
  8. 8. 12% 38% 100% 0% 20% 40% 60% 80% 100% Cloud Native Cloud Services Cloud Hosted Cloud Hosting vs Cloud Native Evans Cloud Development Survey 2017
  9. 9. Cloud Hosting vs Cloud Native 12% 38% 100% 0% 20% 40% 60% 80% 100% Cloud Native Cloud Services Cloud Hosted Evans Cloud Development Survey 2017
  10. 10. 12% 48% 79% 0% 20% 40% 60% 80% 100% Kubernetes Docker Cloud Hosted Cloud Hosting vs Cloud Native Node.js Foundation Survey 2018 12% 38% 100% 0% 20% 40% 60% 80% 100% Cloud Native Cloud Services Cloud Hosted Evans Cloud Development Survey 2017
  11. 11. 12% 48% 79% 0% 20% 40% 60% 80% 100% Kubernetes Docker Cloud Hosted Cloud Hosting vs Cloud Native Node.js Foundation Survey 2018 12% 38% 100% 0% 20% 40% 60% 80% 100% Cloud Native Cloud Services Cloud Hosted Evans Cloud Development Survey 2017
  12. 12. Cloud Hosting vs Cloud Native 12% 48% 79% 0% 20% 40% 60% 80% 100% Kubernetes Docker Cloud Hosted Node.js Foundation Survey 2018 12% 38% 100% 0% 20% 40% 60% 80% 100% Cloud Native Cloud Services Cloud Hosted Evans Cloud Development Survey 2017
  13. 13. : Key Technologies
  14. 14. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"]
  15. 15. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] Node.js 8 Docker Image
  16. 16. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] Node.js 8 Docker Image Operating System Updates
  17. 17. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] Node.js 8 Docker Image Operating System Updates package.json
  18. 18. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] Node.js 8 Docker Image Operating System Updates package.json node_modules
  19. 19. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] Node.js 8 Docker Image Operating System Updates package.json node_modules Application
  20. 20. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] Node.js 8 Docker Image Operating System Updates package.json node_modules Application 716 MB
  21. 21. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3
  22. 22. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production
  23. 23. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production Node.js 8 Docker Image
  24. 24. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production Node.js 8 Docker Image Operating System Updates
  25. 25. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production Node.js 8 Docker Image Operating System Updates package.json
  26. 26. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production Node.js 8 Docker Image Operating System Updates package.json node_modules
  27. 27. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production # Copy the dependencies into a Slim Node docker image FROM node:8-slim WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY --from=0 /app/node_modules /app/node_modules COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] Node.js 8 Docker Image Operating System Updates package.json node_modules
  28. 28. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production # Copy the dependencies into a Slim Node docker image FROM node:8-slim WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY --from=0 /app/node_modules /app/node_modules COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] node_modules package.json
  29. 29. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production # Copy the dependencies into a Slim Node docker image FROM node:8-slim WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY --from=0 /app/node_modules /app/node_modules COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] node_modules Node.js 8 SLIM Docker Image package.json
  30. 30. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production # Copy the dependencies into a Slim Node docker image FROM node:8-slim WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY --from=0 /app/node_modules /app/node_modules COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] node_modules Node.js 8 SLIM Docker Image Operating System Updates package.json
  31. 31. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production # Copy the dependencies into a Slim Node docker image FROM node:8-slim WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY --from=0 /app/node_modules /app/node_modules COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] node_modules Node.js 8 SLIM Docker Image Operating System Updates package.json
  32. 32. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production # Copy the dependencies into a Slim Node docker image FROM node:8-slim WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY --from=0 /app/node_modules /app/node_modules COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] node_modules Node.js 8 SLIM Docker Image Operating System Updates Application package.json
  33. 33. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production # Copy the dependencies into a Slim Node docker image FROM node:8-slim WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY --from=0 /app/node_modules /app/node_modules COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] node_modules Node.js 8 SLIM Docker Image Operating System Updates Application package.json
  34. 34. 229 MB func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 FROM node:8 WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY package.json /app/ RUN npm install —production # Copy the dependencies into a Slim Node docker image FROM node:8-slim WORKDIR "/app" # Install OS updates RUN apt-get update && apt-get dist-upgrade -y && apt-get clean && echo 'Finished installing dependencies' # Install app dependencies COPY --from=0 /app/node_modules /app/node_modules COPY . /app ENV NODE_ENV production ENV PORT 3000 USER node EXPOSE 3000 CMD ["npm", "start"] node_modules Node.js 8 SLIM Docker Image Operating System Updates Application package.json
  35. 35. $ docker build -t node-app -f Dockerfile-run .

  36. 36. $ docker build -t node-app -f Dockerfile-run .
 $ docker run -d —p 3000:3000 -t node-app
  37. 37. $ docker build -t node-app -f Dockerfile-run .
 $ docker run -d —p 3000:3000 -t node-app
  38. 38. : Key Technologies
  39. 39. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml
  40. 40. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  41. 41. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  42. 42. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  43. 43. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  44. 44. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  45. 45. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  46. 46. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  47. 47. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  48. 48. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-microservice spec: replicas: 5 template: spec: containers: - name: my-microservice image: docker.io/my-image:1.1.0 imagePullPolicy: Always ports: - containerPort: 3000 resources requests: memory: 300Mi env: - name: PORT value : 3000 readinessProbe: httpGet: path: /ready port: 3000 livenessProbe: httpGet: path: /live port: 3000
  49. 49. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: 'true' name: my-microservice—service” spec: type: NodePort ports: - name: http port: 3000 selector: app: my-microservice
  50. 50. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: 'true' name: my-microservice—service” spec: type: NodePort ports: - name: http port: 3000 selector: app: my-microservice
  51. 51. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: 'true' name: my-microservice—service” spec: type: NodePort ports: - name: http port: 3000 selector: app: my-microservice
  52. 52. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: 'true' name: my-microservice—service” spec: type: NodePort ports: - name: http port: 3000 selector: app: my-microservice
  53. 53. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: 'true' name: my-microservice—service” spec: type: NodePort ports: - name: http port: 3000 selector: app: my-microservice
  54. 54. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: “my-microservice-hpa-policy" spec: scaleTargetRef: apiVersion: apps/v1beta1 kind: Deployment name: "my-microservice" minReplicas: 5 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 70 - type: Resource resource: name: memory targetAverageUtilization: 70
  55. 55. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: “my-microservice-hpa-policy" spec: scaleTargetRef: apiVersion: apps/v1beta1 kind: Deployment name: "my-microservice" minReplicas: 5 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 70 - type: Resource resource: name: memory targetAverageUtilization: 70
  56. 56. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: “my-microservice-hpa-policy" spec: scaleTargetRef: apiVersion: apps/v1beta1 kind: Deployment name: "my-microservice" minReplicas: 5 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 70 - type: Resource resource: name: memory targetAverageUtilization: 70
  57. 57. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 /config/deployment.yaml /config/service.yaml /config/hpa.yaml /config/istio.yaml apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: “my-microservice-hpa-policy" spec: scaleTargetRef: apiVersion: apps/v1beta1 kind: Deployment name: "my-microservice" minReplicas: 5 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 70 - type: Resource resource: name: memory targetAverageUtilization: 70
  58. 58. $ cd ./config/ $ kubectl apply -f .
  59. 59. $ cd ./config/ $ kubectl apply -f .
  60. 60. $ cd ./config/ $ kubectl apply -f .
  61. 61. : Key Technologies Liveness Probes Readiness Probes
  62. 62. HTTP Requests & Live and Ready Probes
  63. 63. HTTP Requests GET: /ready GET: /ready & Live and Ready Probes
  64. 64. HTTP Requests GET: /ready 200 GET: /ready 200 & Live and Ready Probes
  65. 65. HTTP Requests GET: /ready 200 GET: /health 200 GET: /ready 200 GET: /health 200 & Live and Ready Probes
  66. 66. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 & Live and Ready Probes
  67. 67. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 SIGTERM & Live and Ready Probes
  68. 68. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 SIGTERM SIGKILL & Live and Ready Probes
  69. 69. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 SIGTERM SIGKILL & Live and Ready Probes
  70. 70. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 & Live and Ready Probes
  71. 71. HTTP Requests GET: /ready 503 GET: /health 200 GET: /ready 200 GET: /health 200 & Live and Ready Probes
  72. 72. GET: /ready 200 GET: /health 200 GET: /ready 200 GET: /health 200 HTTP Requests & Live and Ready Probes
  73. 73. GET: /ready 200 GET: /health 200 GET: /ready 200 GET: /health 200 HTTP Requests & Live and Ready Probes
  74. 74. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const health = require(‘@cloudnative/health-connect'); let healthcheck = new health.HealthChecker();- & Live and Ready Probes
  75. 75. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const health = require(‘@cloudnative/health-connect'); let healthcheck = new health.HealthChecker(); app.use('/ready', health.ReadinessEndpoint(healthcheck)) app.use('/health', health.LivenessEndpoint(healthcheck))- & Live and Ready Probes
  76. 76. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const health = require(‘@cloudnative/health-connect'); let healthcheck = new health.HealthChecker(); const livePromise = new Promise(function (resolve, _reject) { resolve(); }); app.use('/ready', health.ReadinessEndpoint(healthcheck)) app.use('/health', health.LivenessEndpoint(healthcheck)) - & Live and Ready Probes
  77. 77. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const health = require(‘@cloudnative/health-connect'); let healthcheck = new health.HealthChecker(); const livePromise = new Promise(function (resolve, _reject) { resolve(); }); let liveCheck = new health.LivenessCheck("live", livePromise); app.use('/ready', health.ReadinessEndpoint(healthcheck)) app.use('/health', health.LivenessEndpoint(healthcheck)) - & Live and Ready Probes
  78. 78. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const health = require(‘@cloudnative/health-connect'); let healthcheck = new health.HealthChecker(); const livePromise = new Promise(function (resolve, _reject) { resolve(); }); let liveCheck = new health.LivenessCheck("live", livePromise); healthcheck.registerlivenessCheck(liveCheck); app.use('/ready', health.ReadinessEndpoint(healthcheck)) app.use('/health', health.LivenessEndpoint(healthcheck)) - & Live and Ready Probes
  79. 79. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const health = require(‘@cloudnative/health-connect'); let healthcheck = new health.HealthChecker(); const livePromise = new Promise(function (resolve, _reject) { resolve(); }); let liveCheck = new health.LivenessCheck("live", livePromise); const readyPromise = new Promise(function (resolve, _reject) { resolve(); }); let readyCheck = new health.ReadinessCheck("ready", readyPromise); healthcheck.registerlivenessCheck(liveCheck); healthcheck.registerReadinessCheck(readyCheck); app.use('/ready', health.ReadinessEndpoint(healthcheck)) app.use('/health', health.LivenessEndpoint(healthcheck)) - - & Live and Ready Probes
  80. 80. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const health = require(‘@cloudnative/health-connect'); let healthcheck = new health.HealthChecker(); const livePromise = new Promise(function (resolve, _reject) { resolve(); }); let liveCheck = new health.LivenessCheck("live", livePromise); const readyPromise = new Promise(function (resolve, _reject) { resolve(); }); let readyCheck = new health.ReadinessCheck("ready", readyPromise); const shutdownPromise = new Promise(function (resolve, _reject) { resolve(); }); let shutdownCheck = new health.ShutdownCheck(“shut”, shutdownProm); healthcheck.registerlivenessCheck(liveCheck); healthcheck.registerReadinessCheck(readyCheck); healthcheck.registerShutdownCheck(shutdownCheck); app.use('/ready', health.ReadinessEndpoint(healthcheck)) app.use('/health', health.LivenessEndpoint(healthcheck)) - - & Live and Ready Probes
  81. 81. : Key Technologies Liveness Probes Readiness Probes
  82. 82. GET: /ready 200 GET: /health 200 GET: /ready 200 GET: /health 200 HTTP Requests
  83. 83. GET: /ready 200 GET: /health 200 GET: /metrics GET: /ready 200 GET: /health 200 GET: /metrics HTTP Requests
  84. 84. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const prometheus = require(‘appmetrics-prometheus’).attach(); -
  85. 85. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const prometheus = require(‘appmetrics-prometheus’).attach(); -
  86. 86. : Key Technologies Liveness Probes Readiness Probes
  87. 87. PUBLIC NETWORK CLOUD NETWORK CATALOG ORDER INVENTORY USER MySQL MongoDB SPARK ELASTICSEARCH BACKEND FOR
 FRONTEND MICROSERVICES SERVICES LOAD
 BALANCER
  88. 88. CATALOG ORDER INVENTORY USER MySQL MongoDB SPARK ELASTICSEARCH BACKEND FOR
 FRONTEND MICROSERVICES SERVICES LOAD
 BALANCER PUBLIC NETWORK CLOUD NETWORK
  89. 89. CATALOG ORDER INVENTORY USER MySQL MongoDB SPARK ELASTICSEARCH BACKEND FOR
 FRONTEND MICROSERVICES SERVICES LOAD
 BALANCER PUBLIC NETWORK CLOUD NETWORK
  90. 90. CATALOG ORDER INVENTORY USER MySQL MongoDB SPARK ELASTICSEARCH BACKEND FOR
 FRONTEND MICROSERVICES SERVICES LOAD
 BALANCER PUBLIC NETWORK CLOUD NETWORK
  91. 91. CATALOG ORDER INVENTORY USER MySQL MongoDB SPARK ELASTICSEARCH BACKEND FOR
 FRONTEND MICROSERVICES SERVICES LOAD
 BALANCER PUBLIC NETWORK CLOUD NETWORK
  92. 92. CATALOG ORDER INVENTORY USER MySQL MongoDB SPARK ELASTICSEARCH BACKEND FOR
 FRONTEND MICROSERVICES SERVICES LOAD
 BALANCER PUBLIC NETWORK CLOUD NETWORK
  93. 93. CATALOG ORDER INVENTORY USER MySQL MongoDB SPARK ELASTICSEARCH BACKEND FOR
 FRONTEND MICROSERVICES SERVICES LOAD
 BALANCER PUBLIC NETWORK CLOUD NETWORK
  94. 94. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const zipkin = require(‘appmetrics-zipkin’);-
  95. 95. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const zipkin = require(‘appmetrics-zipkin’);-
  96. 96. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const zipkin = require(‘appmetrics-zipkin’);-
  97. 97. Create CloudCompose| |
  98. 98. : stacks Pre-built, Cloud Optimized Shared through AppsodyHub 100% Open Source, Built on Standard Technologies Appsody Build Cloud-Native Apps using any language or framework
  99. 99. : stacks > appsody : CLI Continuous, Containerized: dev | test | debug | build | deploy Pre-built, Cloud Optimized Shared through AppsodyHub 100% Open Source, Built on Standard Technologies Appsody Build Cloud-Native Apps using any language or framework
  100. 100. : deploy: stacks > appsody : CLI Continuous, Containerized: dev | test | debug | build | deploy Pre-built, Cloud Optimized Shared through AppsodyHub Production deploy to Kubernetes Server or Serverless Scaling 100% Open Source, Built on Standard Technologies Appsody Build Cloud-Native Apps using any language or framework
  101. 101. Appsody Stacks Demo
  102. 102. Cloud Configured Appsody Stacks Developer Workflow using Appsody Stacks Appsody Hub Developer > appsody
  103. 103. Cloud Configured Appsody Stacks Developer Workflow using Appsody Stacks Appsody Hub Developer Appsody Hub Discover available Appsody Stacks > appsody
  104. 104. Cloud Configured Appsody Stacks Developer Workflow using Appsody Stacks Appsody Hub Developer Appsody Hub Discover available Appsody Stacks > appsody appsody init Developer’s App
  105. 105. Cloud Configured Appsody Stacks Developer Workflow using Appsody Stacks Appsody Hub Developer Appsody Hub Discover available Appsody Stacks > appsody appsody init Developer’s App Develop in IDE Uses
 Appsody Stack run
 test debug
  106. 106. Cloud Configured Appsody Stacks Developer Workflow using Appsody Stacks Appsody Hub Developer Appsody Hub Discover available Appsody Stacks > appsody appsody init Developer’s App Develop in IDE Uses
 Appsody Stack run
 test debug git commit Developer's
 Git ProjectDeveloper’s App Save Changes
  107. 107. Cloud Configured Appsody Stacks Cloud Platform Developer Workflow using Appsody Stacks Appsody Hub Developer Appsody Hub Discover available Appsody Stacks > appsody appsody init Developer’s App Develop in IDE Uses
 Appsody Stack run
 test debug git commit Developer's
 Git ProjectDeveloper’s App Save Changes Appsody StackDeveloper’s App appsody build
  108. 108. Appsody Stack > appsody Developer Appsody Hub Discover available Appsody Stacks appsody init Developer’s App run
 test debugDevelop in IDE Uses
 Appsody Stack git commit Developer's
 Git ProjectDeveloper’s App Save Changes Cloud Configured Appsody Stacks Cloud Platform Developer’s App appsody build appsody deploy Developer Workflow using Appsody Stacks
  109. 109. Appsody Stacks nodejs-functionsnodejs nodejs-express
  110. 110. Appsody Stacks nodejs-functionsnodejs nodejs-express Application Functions Connect Application Functions Connect
  111. 111. Appsody Stacks nodejs-functionsnodejs nodejs-express Application Functions Connect Application Functions Connect DockerDockerCloud Packaged
  112. 112. Appsody Stacks Cloud Functions Cloud Native Cloud Packaged nodejs-functionsnodejs Application Functions Connect Application Functions Connect DockerDocker nodejs-express Docker Application Functions Connect Docker Application Functions Connect Docker Application Functions Connect Docker Application Functions Connect
  113. 113. Appsody Stacks Cloud Functions Cloud Native Cloud Packaged nodejs-functionsnodejs Docker Application Functions Connect Docker Application Functions Connect nodejs-express Application FunctionsApplication Functions Docker Connect Docker Connect Docker Application Functions Connect Docker Application Functions Connect
  114. 114. Appsody Stacks Demo
  115. 115. Eclipse Codewind Demo
  116. 116. http://github.com/appsody http://twitter.com/appsodydev https://appsody.dev Appsody Eclipse Codewind http://github.com/eclipse/codewind http://twitter.com/EclipseCodewind https://codewind.dev
  • vishal_ac

    Oct. 27, 2019
  • mono0926

    Oct. 20, 2019

The move to microservices enables developers to rapidly create and innovate by giving them autonomy to build and deploy applications using the languages, frameworks and technologies that they choose. However, such move requires a cost. Developers require a deeper set of skills to create apps that integrate fully with cloud-native capabilities. The additional complexity is one of the main reasons why most “cloud applications” are co-hosted. Only 38% of cloud developers are leveraging cloud services, and just 12% are building cloud-native applications. These statistics indicate that the majority of applications do not fully leverage and integrate with the additional capabilities that the platform provides. This session will introduce you how to modernize existing and build new cloud-native applications, and show how to utilize open source tools to rapidly develop and build new cloud-native applications with best practises built-in.

Views

Total views

550

On Slideshare

0

From embeds

0

Number of embeds

6

Actions

Downloads

5

Shares

0

Comments

0

Likes

2

×