SlideShare a Scribd company logo
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
#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 Development Survey
2017
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
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
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%
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
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
: 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 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"]
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
$ 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
/config/hpa.yaml
/config/istio.yaml
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
$ 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-connect');
let healthcheck = new health.HealthChecker();-
& 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-connect');
let healthcheck = new health.HealthChecker();
app.use('/ready', health.ReadinessEndpoint(healthcheck))
app.use('/health', health.LivenessEndpoint(healthcheck))-
& 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-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
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
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
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
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
: 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-prometheus’).attach();
-
func add(_ a: Int,
to b: Int) -> Void
{
print(a + b)
}
let a = ”5”
let b = 3
const prometheus = require(‘appmetrics-prometheus’).attach();
-
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
: Key Technologies
Liveness Probes
Readiness Probes
PUBLIC NETWORK CLOUD NETWORK
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
PUBLIC NETWORK CLOUD NETWORK
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER
PUBLIC NETWORK CLOUD NETWORK
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER
PUBLIC NETWORK CLOUD NETWORK
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER
PUBLIC NETWORK CLOUD NETWORK
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER
PUBLIC NETWORK CLOUD NETWORK
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR

FRONTEND
MICROSERVICES SERVICES
LOAD

BALANCER
PUBLIC NETWORK CLOUD NETWORK
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
Build Cloud-Native Apps using any language or framework
: 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
: 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
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
available
Appsody Stacks
> appsody
Cloud Configured Appsody Stacks
Developer Workflow using Appsody Stacks
Appsody Hub
Developer
Appsody Hub
Discover
available
Appsody Stacks
> appsody
appsody init
Developer’s App
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
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
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
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
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
DockerDockerCloud Packaged
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
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
Appsody Stacks
Demo
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Eclipse Codewind
Demo
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

More Related Content

PDF
Node Summit 2018: Cloud Native Node.js
PPTX
London Node.js User Group - Cloud-native Node.js
PDF
FullStack London - Cloud Native Node.js
PDF
Cloud Foundry Summit 2015: 10 common errors when pushing apps to cloud foundry
PDF
今すぐ始めるCloud Foundry #hackt #hackt_k
PDF
BOSH / CF Deployment in modern ways #cf_tokyo
PDF
DevOps with Serverless
PDF
Play on Docker
Node Summit 2018: Cloud Native Node.js
London Node.js User Group - Cloud-native Node.js
FullStack London - Cloud Native Node.js
Cloud Foundry Summit 2015: 10 common errors when pushing apps to cloud foundry
今すぐ始めるCloud Foundry #hackt #hackt_k
BOSH / CF Deployment in modern ways #cf_tokyo
DevOps with Serverless
Play on Docker

What's hot (20)

ODP
Pyramid deployment
PPTX
Optimizing Spring Boot apps for Docker
PDF
Jenkins Docker
PDF
Behind the scenes of Scaleway Functions : when Kubernetes meets our products
PDF
Spring Boot 1.3 News #渋谷Java
PDF
Introduction to Concourse CI #渋谷Java
PDF
DevCon Summit 2014: Trends in Android Development by Evan Dale Aromin
PDF
Concourse CI Meetup Demo
PDF
Effective Platform Building with Kubernetes. Is K8S new Linux?
PDF
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
PDF
AtlasCamp 2015 Docker continuous integration training
PPT
Python virtualenv & pip in 90 minutes
PPTX
Web deploy command line
PDF
Why PCF is the best platform for Spring Boot
PDF
Angular JS2 Training Session #3
PDF
Angular is one fire(base)! - Shmuela Jacobs
PDF
DockerCon EU 2018 - Dockerfile Best Practices
PPTX
Cross platform mobile apps using .NET
PDF
Introduction to Spring WebFlux #jsug #sf_a1
PPTX
Zero to Continuous Delivery on Google Cloud
Pyramid deployment
Optimizing Spring Boot apps for Docker
Jenkins Docker
Behind the scenes of Scaleway Functions : when Kubernetes meets our products
Spring Boot 1.3 News #渋谷Java
Introduction to Concourse CI #渋谷Java
DevCon Summit 2014: Trends in Android Development by Evan Dale Aromin
Concourse CI Meetup Demo
Effective Platform Building with Kubernetes. Is K8S new Linux?
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
AtlasCamp 2015 Docker continuous integration training
Python virtualenv & pip in 90 minutes
Web deploy command line
Why PCF is the best platform for Spring Boot
Angular JS2 Training Session #3
Angular is one fire(base)! - Shmuela Jacobs
DockerCon EU 2018 - Dockerfile Best Practices
Cross platform mobile apps using .NET
Introduction to Spring WebFlux #jsug #sf_a1
Zero to Continuous Delivery on Google Cloud
Ad

Similar to Silicon Valley Code Camp 2019 - Reaching the Cloud Native World (20)

PDF
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
PDF
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
PDF
Getting started docker notes
PPTX
Build Once, Run Anywhere: The Rise of Containerization in Modern IT
PDF
"Master production-grade best practices to build your Node.js Docker images",...
PDF
Using Docker For Development
PDF
(C)NodeJS
PDF
Containerizing a Web Application with Vue.js and Java
PPTX
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
PDF
Présentation "Docker + Kubernetes" @ Pastis.tech #2
PDF
DCSF 19 Node.js Rocks in Docker for Dev and Ops
PDF
Node.js Rocks in Docker for Dev and Ops
PPTX
Docker for Development
PDF
Webconf nodejs-production-architecture
PPTX
Pluralsight Webinar: Simplify Your Project Builds with Docker
PPTX
8 good reasons to learn docker
PPTX
Learn Electron for Web Developers
PPT
Node js
KEY
Dcjq node.js presentation
PPTX
Setup docker on existing application
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Getting started docker notes
Build Once, Run Anywhere: The Rise of Containerization in Modern IT
"Master production-grade best practices to build your Node.js Docker images",...
Using Docker For Development
(C)NodeJS
Containerizing a Web Application with Vue.js and Java
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
Présentation "Docker + Kubernetes" @ Pastis.tech #2
DCSF 19 Node.js Rocks in Docker for Dev and Ops
Node.js Rocks in Docker for Dev and Ops
Docker for Development
Webconf nodejs-production-architecture
Pluralsight Webinar: Simplify Your Project Builds with Docker
8 good reasons to learn docker
Learn Electron for Web Developers
Node js
Dcjq node.js presentation
Setup docker on existing application
Ad

More from Chris Bailey (20)

PDF
NodeJS Interactive 2019: FaaS meets Frameworks
PDF
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
PDF
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
PDF
AltConf 2019: Server-Side Swift State of the Union
PDF
Server-side Swift with Swagger
PDF
Index - BFFs vs GraphQL
PDF
Swift Cloud Workshop - Swift Microservices
PDF
Swift Cloud Workshop - Codable, the key to Fullstack Swift
PDF
Try!Swift India 2017: All you need is Swift
PDF
Swift Summit 2017: Server Swift State of the Union
PDF
IBM Cloud University: Java, Node.js and Swift
PDF
FrenchKit 2017: Server(less) Swift
PDF
AltConf 2017: Full Stack Swift in 30 Minutes
PDF
InterConnect: Server Side Swift for Java Developers
PDF
InterConnect: Java, Node.js and Swift - Which, Why and When
PDF
Playgrounds: Mobile + Swift = BFF
PDF
Swift Summit: Pushing the boundaries of Swift to the Server
PDF
O'Reilly Software Architecture Conf: Cloud Economics
PDF
FrenchKit: End to End Application Development with Swift
PPTX
Node Summit 2016: Web App Architectures
NodeJS Interactive 2019: FaaS meets Frameworks
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
AltConf 2019: Server-Side Swift State of the Union
Server-side Swift with Swagger
Index - BFFs vs GraphQL
Swift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Try!Swift India 2017: All you need is Swift
Swift Summit 2017: Server Swift State of the Union
IBM Cloud University: Java, Node.js and Swift
FrenchKit 2017: Server(less) Swift
AltConf 2017: Full Stack Swift in 30 Minutes
InterConnect: Server Side Swift for Java Developers
InterConnect: Java, Node.js and Swift - Which, Why and When
Playgrounds: Mobile + Swift = BFF
Swift Summit: Pushing the boundaries of Swift to the Server
O'Reilly Software Architecture Conf: Cloud Economics
FrenchKit: End to End Application Development with Swift
Node Summit 2016: Web App Architectures

Recently uploaded (20)

PDF
System and Network Administraation Chapter 3
PPTX
Online Work Permit System for Fast Permit Processing
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Operating system designcfffgfgggggggvggggggggg
PPT
Introduction Database Management System for Course Database
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
AI in Product Development-omnex systems
PPTX
history of c programming in notes for students .pptx
PDF
medical staffing services at VALiNTRY
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
System and Network Administraation Chapter 3
Online Work Permit System for Fast Permit Processing
How to Choose the Right IT Partner for Your Business in Malaysia
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Operating system designcfffgfgggggggvggggggggg
Introduction Database Management System for Course Database
Odoo Companies in India – Driving Business Transformation.pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
ISO 45001 Occupational Health and Safety Management System
PTS Company Brochure 2025 (1).pdf.......
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
AI in Product Development-omnex systems
history of c programming in notes for students .pptx
medical staffing services at VALiNTRY
How Creative Agencies Leverage Project Management Software.pdf
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Which alternative to Crystal Reports is best for small or large businesses.pdf

Silicon Valley Code Camp 2019 - Reaching the Cloud Native World

  • 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
  • 3. 3 #1 On IBM Cloud Using Cloud Foundry Node.js
  • 4. 4 #1 On IBM Cloud Using Cloud Foundry Node.js
  • 6. 6 #1 On Serverless Using AWS Lambda Node.js https://thenewstack.io/what-aws-lambdas-performance-stats-reveal/
  • 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. 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. 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. 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. 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. 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
  • 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. 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. 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. 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. 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. 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. 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. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. $ docker build -t node-app -f Dockerfile-run .

  • 36. $ docker build -t node-app -f Dockerfile-run .
 $ docker run -d —p 3000:3000 -t node-app
  • 37. $ docker build -t node-app -f Dockerfile-run .
 $ docker run -d —p 3000:3000 -t node-app
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. $ cd ./config/ $ kubectl apply -f .
  • 59. $ cd ./config/ $ kubectl apply -f .
  • 60. $ cd ./config/ $ kubectl apply -f .
  • 61. : Key Technologies Liveness Probes Readiness Probes
  • 62. HTTP Requests & Live and Ready Probes
  • 63. HTTP Requests GET: /ready GET: /ready & Live and Ready Probes
  • 64. HTTP Requests GET: /ready 200 GET: /ready 200 & Live and Ready Probes
  • 65. HTTP Requests GET: /ready 200 GET: /health 200 GET: /ready 200 GET: /health 200 & Live and Ready Probes
  • 66. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 & Live and Ready Probes
  • 67. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 SIGTERM & Live and Ready Probes
  • 68. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 SIGTERM SIGKILL & Live and Ready Probes
  • 69. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 SIGTERM SIGKILL & Live and Ready Probes
  • 70. HTTP Requests GET: /ready 503 GET: /health 503 GET: /ready 200 GET: /health 200 & Live and Ready Probes
  • 71. HTTP Requests GET: /ready 503 GET: /health 200 GET: /ready 200 GET: /health 200 & Live and Ready Probes
  • 72. GET: /ready 200 GET: /health 200 GET: /ready 200 GET: /health 200 HTTP Requests & Live and Ready Probes
  • 73. GET: /ready 200 GET: /health 200 GET: /ready 200 GET: /health 200 HTTP Requests & Live and Ready Probes
  • 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. 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. 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. 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. 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. 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. 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. : Key Technologies Liveness Probes Readiness Probes
  • 82. GET: /ready 200 GET: /health 200 GET: /ready 200 GET: /health 200 HTTP Requests
  • 83. GET: /ready 200 GET: /health 200 GET: /metrics GET: /ready 200 GET: /health 200 GET: /metrics HTTP Requests
  • 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. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const prometheus = require(‘appmetrics-prometheus’).attach(); -
  • 87. : Key Technologies Liveness Probes Readiness Probes
  • 88. PUBLIC NETWORK CLOUD NETWORK CATALOG ORDER INVENTORY USER MySQL MongoDB SPARK ELASTICSEARCH BACKEND FOR
 FRONTEND MICROSERVICES SERVICES LOAD
 BALANCER
  • 95. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const zipkin = require(‘appmetrics-zipkin’);-
  • 96. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const zipkin = require(‘appmetrics-zipkin’);-
  • 97. func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 const zipkin = require(‘appmetrics-zipkin’);-
  • 99. : 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
  • 100. : 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
  • 101. : 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
  • 103. Cloud Configured Appsody Stacks Developer Workflow using Appsody Stacks Appsody Hub Developer > appsody
  • 104. Cloud Configured Appsody Stacks Developer Workflow using Appsody Stacks Appsody Hub Developer Appsody Hub Discover available Appsody Stacks > appsody
  • 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
  • 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
  • 107. 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
  • 108. 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
  • 109. 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
  • 111. Appsody Stacks nodejs-functionsnodejs nodejs-express Application Functions Connect Application Functions Connect
  • 112. Appsody Stacks nodejs-functionsnodejs nodejs-express Application Functions Connect Application Functions Connect DockerDockerCloud Packaged
  • 113. 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
  • 114. 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