SlideShare a Scribd company logo
1 of 119
Download to read offline
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();
-
: 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
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

What's hot

Optimizing Spring Boot apps for Docker
Optimizing Spring Boot apps for DockerOptimizing Spring Boot apps for Docker
Optimizing Spring Boot apps for DockerGraham Charters
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins DockerAlex Soto
 
Behind the scenes of Scaleway Functions : when Kubernetes meets our products
Behind the scenes of Scaleway Functions : when Kubernetes meets our productsBehind the scenes of Scaleway Functions : when Kubernetes meets our products
Behind the scenes of Scaleway Functions : when Kubernetes meets our productsScaleway
 
Spring Boot 1.3 News #渋谷Java
Spring Boot 1.3 News #渋谷JavaSpring Boot 1.3 News #渋谷Java
Spring Boot 1.3 News #渋谷JavaToshiaki Maki
 
Introduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaIntroduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaToshiaki Maki
 
DevCon Summit 2014: Trends in Android Development by Evan Dale Aromin
DevCon Summit 2014: Trends in Android Development by Evan Dale ArominDevCon Summit 2014: Trends in Android Development by Evan Dale Aromin
DevCon Summit 2014: Trends in Android Development by Evan Dale ArominDEVCON
 
Concourse CI Meetup Demo
Concourse CI Meetup DemoConcourse CI Meetup Demo
Concourse CI Meetup DemoToshiaki Maki
 
Effective Platform Building with Kubernetes. Is K8S new Linux?
Effective Platform Building with Kubernetes. Is K8S new Linux?Effective Platform Building with Kubernetes. Is K8S new Linux?
Effective Platform Building with Kubernetes. Is K8S new Linux?Wojciech Barczyński
 
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020AWSKRUG - AWS한국사용자모임
 
AtlasCamp 2015 Docker continuous integration training
AtlasCamp 2015 Docker continuous integration trainingAtlasCamp 2015 Docker continuous integration training
AtlasCamp 2015 Docker continuous integration trainingSteve Smith
 
Python virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutesPython virtualenv & pip in 90 minutes
Python virtualenv & pip in 90 minutesLarry Cai
 
Web deploy command line
Web deploy command lineWeb deploy command line
Web deploy command lineLarry Nung
 
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootWhy PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootToshiaki Maki
 
Angular JS2 Training Session #3
Angular JS2 Training Session #3Angular JS2 Training Session #3
Angular JS2 Training Session #3Paras Mendiratta
 
Angular is one fire(base)! - Shmuela Jacobs
Angular is one fire(base)! - Shmuela JacobsAngular is one fire(base)! - Shmuela Jacobs
Angular is one fire(base)! - Shmuela JacobsCodemotion Tel Aviv
 
DockerCon EU 2018 - Dockerfile Best Practices
DockerCon EU 2018 - Dockerfile Best PracticesDockerCon EU 2018 - Dockerfile Best Practices
DockerCon EU 2018 - Dockerfile Best PracticesTibor Vass
 
Cross platform mobile apps using .NET
Cross platform mobile apps using .NETCross platform mobile apps using .NET
Cross platform mobile apps using .NETJonas Follesø
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Toshiaki Maki
 
Zero to Continuous Delivery on Google Cloud
Zero to Continuous Delivery on Google CloudZero to Continuous Delivery on Google Cloud
Zero to Continuous Delivery on Google CloudJames Heggs
 

What's hot (20)

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

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

IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesChris Bailey
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesChris Bailey
 
Pluralsight Webinar: Simplify Your Project Builds with Docker
Pluralsight Webinar: Simplify Your Project Builds with DockerPluralsight Webinar: Simplify Your Project Builds with Docker
Pluralsight Webinar: Simplify Your Project Builds with DockerElton Stoneman
 
#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with Docker#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with DockerElton Stoneman
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on DockerDaniel Ku
 
#SDD2017 - Modernizing .NET Apps with Docker
#SDD2017 - Modernizing .NET Apps with Docker#SDD2017 - Modernizing .NET Apps with Docker
#SDD2017 - Modernizing .NET Apps with DockerElton Stoneman
 
Taking Docker to Dance: Continuous Delivery on AWS
Taking Docker to Dance: Continuous Delivery on AWSTaking Docker to Dance: Continuous Delivery on AWS
Taking Docker to Dance: Continuous Delivery on AWSJessie Yi Wei
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containersinside-BigData.com
 
Hosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceHosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceQuinlan Jung
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopleffen
 
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 
Infrastructure = code - 1 year later
Infrastructure = code - 1 year laterInfrastructure = code - 1 year later
Infrastructure = code - 1 year laterChristian Ortner
 
Nodejs Intro - Part2 Introduction to Web Applications
Nodejs Intro - Part2 Introduction to Web ApplicationsNodejs Intro - Part2 Introduction to Web Applications
Nodejs Intro - Part2 Introduction to Web ApplicationsBudh Ram Gurung
 
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty GenovaScale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty GenovaCorley S.r.l.
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsSarath C
 
Was is Docker? Or: Docker for Software Developers
Was is Docker? Or: Docker for Software DevelopersWas is Docker? Or: Docker for Software Developers
Was is Docker? Or: Docker for Software DevelopersChristian Nagel
 
AWS 고객사를 위한 ‘AWS 컨테이너 교육’ - 유재석, AWS 솔루션즈 아키텍트
AWS 고객사를 위한 ‘AWS 컨테이너 교육’ - 유재석, AWS 솔루션즈 아키텍트AWS 고객사를 위한 ‘AWS 컨테이너 교육’ - 유재석, AWS 솔루션즈 아키텍트
AWS 고객사를 위한 ‘AWS 컨테이너 교육’ - 유재석, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 

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

IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
 
Pluralsight Webinar: Simplify Your Project Builds with Docker
Pluralsight Webinar: Simplify Your Project Builds with DockerPluralsight Webinar: Simplify Your Project Builds with Docker
Pluralsight Webinar: Simplify Your Project Builds with Docker
 
#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with Docker#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with Docker
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
 
#SDD2017 - Modernizing .NET Apps with Docker
#SDD2017 - Modernizing .NET Apps with Docker#SDD2017 - Modernizing .NET Apps with Docker
#SDD2017 - Modernizing .NET Apps with Docker
 
Taking Docker to Dance: Continuous Delivery on AWS
Taking Docker to Dance: Continuous Delivery on AWSTaking Docker to Dance: Continuous Delivery on AWS
Taking Docker to Dance: Continuous Delivery on AWS
 
Docker
DockerDocker
Docker
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
 
Hosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceHosting Your Own OTA Update Service
Hosting Your Own OTA Update Service
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
 
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
K8s, Amazon EKS - 유재석, AWS 솔루션즈 아키텍트
 
Infrastructure = code - 1 year later
Infrastructure = code - 1 year laterInfrastructure = code - 1 year later
Infrastructure = code - 1 year later
 
Nodejs Intro - Part2 Introduction to Web Applications
Nodejs Intro - Part2 Introduction to Web ApplicationsNodejs Intro - Part2 Introduction to Web Applications
Nodejs Intro - Part2 Introduction to Web Applications
 
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty GenovaScale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS Apps
 
Docker
DockerDocker
Docker
 
Was is Docker? Or: Docker for Software Developers
Was is Docker? Or: Docker for Software DevelopersWas is Docker? Or: Docker for Software Developers
Was is Docker? Or: Docker for Software Developers
 
AWS 고객사를 위한 ‘AWS 컨테이너 교육’ - 유재석, AWS 솔루션즈 아키텍트
AWS 고객사를 위한 ‘AWS 컨테이너 교육’ - 유재석, AWS 솔루션즈 아키텍트AWS 고객사를 위한 ‘AWS 컨테이너 교육’ - 유재석, AWS 솔루션즈 아키텍트
AWS 고객사를 위한 ‘AWS 컨테이너 교육’ - 유재석, AWS 솔루션즈 아키텍트
 

More from Chris Bailey

NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets FrameworksChris Bailey
 
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSVoxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSChris Bailey
 
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedFaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedChris Bailey
 
AltConf 2019: Server-Side Swift State of the Union
AltConf 2019:  Server-Side Swift State of the UnionAltConf 2019:  Server-Side Swift State of the Union
AltConf 2019: Server-Side Swift State of the UnionChris Bailey
 
Server-side Swift with Swagger
Server-side Swift with SwaggerServer-side Swift with Swagger
Server-side Swift with SwaggerChris Bailey
 
Index - BFFs vs GraphQL
Index - BFFs vs GraphQLIndex - BFFs vs GraphQL
Index - BFFs vs GraphQLChris Bailey
 
Swift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesSwift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesChris Bailey
 
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftSwift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftChris Bailey
 
Try!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftTry!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftChris Bailey
 
Swift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionSwift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionChris Bailey
 
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and SwiftIBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and SwiftChris Bailey
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftChris Bailey
 
AltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesAltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesChris Bailey
 
InterConnect: Server Side Swift for Java Developers
InterConnect:  Server Side Swift for Java DevelopersInterConnect:  Server Side Swift for Java Developers
InterConnect: Server Side Swift for Java DevelopersChris Bailey
 
InterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and WhenInterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and WhenChris Bailey
 
Playgrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFPlaygrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFChris Bailey
 
Swift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the ServerSwift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the ServerChris Bailey
 
O'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsO'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsChris Bailey
 
FrenchKit: End to End Application Development with Swift
FrenchKit: End to End Application Development with SwiftFrenchKit: End to End Application Development with Swift
FrenchKit: End to End Application Development with SwiftChris Bailey
 
Node Summit 2016: Web App Architectures
Node Summit 2016:  Web App ArchitecturesNode Summit 2016:  Web App Architectures
Node Summit 2016: Web App ArchitecturesChris Bailey
 

More from Chris Bailey (20)

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

Recently uploaded

What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 

Recently uploaded (20)

What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 

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(); -
  • 86.
  • 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
  • 116.
  • 117.