The move to microservices enables developers to rapidly create and innovate by giving them autonomy to build and deploy applications using the languages, frameworks and technologies that they choose. However, such move requires a cost. Developers require a deeper set of skills to create apps that integrate fully with cloud-native capabilities. The additional complexity is one of the main reasons why most “cloud applications” are co-hosted. Only 38% of cloud developers are leveraging cloud services, and just 12% are building cloud-native applications. These statistics indicate that the majority of applications do not fully leverage and integrate with the additional capabilities that the platform provides. This session will introduce you how to modernize existing and build new cloud-native applications, and show how to utilize open source tools to rapidly develop and build new cloud-native applications with best practises built-in.
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
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
88. PUBLIC NETWORK CLOUD NETWORK
CATALOG
ORDER
INVENTORY
USER
MySQL
MongoDB
SPARK
ELASTICSEARCH
BACKEND FOR
FRONTEND
MICROSERVICES SERVICES
LOAD
BALANCER
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