Managing Distributed Cloud
Native Applications Made Easy
Nikolay Valchev and Klaus Kopecz, SAP SE
hello!
Managing Distributed Cloud
Native Applications Made Easy
Distributed Applications
in the Cloud
Distributed Applications in the Cloud
User
Web
DB
Web
Web
DB
DB
Ruby
Ruby
Java
Java
Java
Node.js
Node.js
Node.js
]
Node.js
Any
Distributed Applications in the Cloud
Application
DevOps Team
(~ 2 Pizzas)
Web
DB
Web
Web
DB
DB
Ruby
Ruby
Java
Java
Java
Node.js
Node.js
Node.js
]
Node.js
Any
Version x.y.z
Responsibility to develop,
test, configure, deploy,
update, remove, migrate,
patch, trace, analyze, ...
User
Example
Application
DevOps Team
(~ 2 Pizzas)
Other Service
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(user request
processing)
”FRONTEND”
DB service
instance
“PERSISTE
NCE”
Geo-spatial
Service
“EXTERNAL
RESOURCE“
What are the Challenges?
✘
Application
DevOps Team
(~ 2 Pizzas)
Other Service
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(heavy data
processing)
”FRONTEND”
DB service
instance
“PERSISTE
NCE”
Geo-spatial
Service
“EXTERNAL
RESOURCE“
What are the Challenges?
✘
✘
Application
DevOps Team
(~ 2 Pizzas)
Other Service
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(heavy data
processing)
”FRONTEND”
DB service
instance
“PERSISTE
NCE”
Geo-spatial
Service
“EXTERNAL
RESOURCE“
What are the Challenges?
✘
✘
✘
Application
DevOps Team
(~ 2 Pizzas)
Other Service
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(heavy data
processing)
”FRONTEND”
DB service
instance
“PERSISTE
NCE”
Geo-spatial
Service
“EXTERNAL
RESOURCE“
What are the Challenges?
✘
✘
✘
✘
Application
DevOps Team
(~ 2 Pizzas)
Other Service
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(heavy data
processing)
”FRONTEND”
DB service
instance
“PERSISTE
NCE”
Geo-spatial
Service
“EXTERNAL
RESOURCE“
What are the Challenges?
✘
✘
✘
✘
✘
Application
DevOps Team
(~ 2 Pizzas)
Other Service
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(heavy data
processing)
”FRONTEND”
DB service
instance
“PERSISTE
NCE”
Geo-spatial
Service
“EXTERNAL
RESOURCE“
What are the Challenges?
✘
✘
✘
✘
✘
✘ Application
DevOps Team
(~ 2 Pizzas)
Other Service
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(heavy data
processing)
”FRONTEND”
DB service
instance
“PERSISTE
NCE”
Geo-spatial
Service
“EXTERNAL
RESOURCE“
What are the Challenges?
✘
✘
✘
✘
✘
✘
✘
Application
DevOps Team
(~ 2 Pizzas)
Other Service
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(heavy data
processing)
”FRONTEND”
DB service
instance
“PERSISTE
NCE”
Geo-spatial
Service
“EXTERNAL
RESOURCE“
Solutions
✘
Solutions
✘
Solutions
✘
✘
Multi-Target
Application (MTA)
Multi-Target Application (MTA)
Business capability
Lifecycle
Management
Unit
Version x.y.z
Java
(heavy data
processing)
“BACKEND”
Node.Js
(user request
processing)
”FRONTEND”
DB service
instance
“PERSISTEN
CE”
Geo-spatial
service
“EXTERNAL
RESOURCE“
MTA: my-app
Module1
type
Resource
type
Module1
type
Resource
type
Version x.y.z
Three things it is good for
MTA: my-app
Module1
typ
e
Resource
type
Module1
typ
e
Resource
type
Version x.y.z
Business capability
Lifecycle Management Unit
Version x.y.z
Java
(heavy data processing)
“BACKEND”
Node.Js
(heavy data processing)
”FRONTEND”
DB service
instance
“PERSISTENC
E”
Geo-spatial
service
“EXTERNAL
RESOURCE“
Three things it is good for
MTA: my-app
Module1
typ
e
Resource
type
Module1
typ
e
Resource
type
Version x.y.z
Business capability
Lifecycle Management Unit
Version x.y.z
Java
(heavy data processing)
“BACKEND”
Node.Js
(heavy data processing)
”FRONTEND”
DB service
instance
“PERSISTENC
E”
Geo-spatial
service
“EXTERNAL
RESOURCE“
Three things it is good for
MTA: my-app
Module1
typ
e
Resource
type
Module1
typ
e
Resource
type
Version x.y.z
Business capability
Lifecycle Management Unit
Version x.y.z
Java
(heavy data processing)
“BACKEND”
Node.Js
(heavy data processing)
”FRONTEND”
DB service
instance
“PERSISTENC
E”
Geo-spatial
service
“EXTERNAL
RESOURCE“
MTA Lifecycle
Develop
Spring Music MTA
✘
✘
✘
spring-music
Lifecycle
Management
Unit
Version 1.0.0
news
provider
web
DB
service
instance
external
news
provider
MTA Descriptors
✘
extends
MTA
deployment
descriptor
MTA
extension
descriptor
*1
extends
MTA Descriptors
✘
✘ mtad.yaml
extends
MTA
deployment
descriptor
MTA
extension
descriptor
*1
extends
MTA Descriptors
✘
✘ mtad.yaml
✘ *.mtaext
extends
MTA
deployment
descriptor
MTA
extension
descriptor
*1
extends
MTA Deployment Descriptor
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
spring-music
Lifecycle
Management
Unit
Version 1.0.0
news
provide
r
web
DB
service
instance
external
news
provider
MTA Deployment Descriptor
✘
✘
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
✘
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
✘
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
${default-url}
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
~{url}
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
✘
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Deployment Descriptor
✘
_schema-version: 3
ID: org.cf.samples.spring-music
version: 1.0.0
modules:
- name: spring-music-web
type: java.tomcat
path: build/libs/spring-music.jar
requires:
- name: news-provider
properties:
NEWS_URL: ~{url}
- name: spring-music-db
- name: spring-music-news-external
parameters:
buildpack: java_buildpack
properties:
POPULATE_ALBUM_REPOSITORY: true
- name: spring-music-news
type: javascript.nodejs
path: spring-music-news/
provides:
- name: news-provider
properties:
url: ${default-url}/news
resources:
- name: spring-music-db
type: managed-service
parameters:
service: postgresql
service-plan: v9.4-container
- name: spring-music-news-external
type: user-provided-service
parameters:
config:
url:
MTA Extension Descriptor
_schema-version: 3
ID: cf.samples.spring-music.prod-config
extends: cf.samples.spring.music
modules:
- name: spring-music-web
parameters:
memory: 1G
instances: 2
properties:
POPULATE_ALBUM_REPOSITORY: false
- name: spring-music-news
parameters:
memory: 128M
resources:
- name: spring-music-news-external
parameters:
config:
url: https://news-external.my.domain/news
Build
What is an MTA Archive (MTAR)?
✘
✘
✘
MTA
deployment
descriptor
Java
WAR
Node.Js
Code
…
...
Building MTA Archives
text
editor
developer
JAR or
maven
plugin
MTA
deployment
descriptor
MTA archive
module
package
MTA
deployment
descriptor
(3)
(1)
(5)
dev &
build tools
module
(2)
Mani
fest.
MF
(4)
Building MTA Archives
text
editor
developer
JAR or
maven
plugin
MTA
deployment
descriptor
MTA archive
module
package
MTA
deployment
descriptor
(3)
(1)
(5)
dev &
build tools
module
(2)
Mani
fest.
MF
(4)
Building MTA Archives
mtad.yaml text
editor
developer
JAR or
maven
plugin
MTA
deployment
descriptor
MTA archive
module
package
MTA
deployment
descriptor
(3)
(1)
(5)
dev &
build tools
module
(2)
Mani
fest.
MF
(4)
Building MTA Archives
mtad.yaml
MANIFEST.MF
text
editor
developer
JAR or
maven
plugin
MTA
deployment
descriptor
MTA archive
module
package
MTA
deployment
descriptor
(3)
(1)
(5)
dev &
build tools
module
(2)
Mani
fest.
MF
(4)
Building MTA Archives
mtad.yaml
MANIFEST.MF
text
editor
developer
MTA
deployment
descriptor
MTA archive
module
package
MTA
deployment
descriptor
(3)
(1)
(5)
dev &
build tools
module
(2)
Mani
fest.
MF
(4)
JAR or
maven
plugin
Deploy
Cloud
Foundry
CF Deploy Service
MTA
deployment
descriptor
MTA archive
module
MTA
extension
descriptor
CF CLI
operator
Cloud Foundry
Cloud
Controller
CF Deploy Service
PostgreSQL
database
target
state
workflows
cf deploy
current
state
CF Deploy Service
MTA
deployment
descriptor
MTA archive
module
MTA
extension
descriptor
CF CLI
operator
Cloud Foundry
Cloud
Controller
CF Deploy Service
PostgreSQL
database
target
state
workflows
cf deploy
current
state
Supported Operations
✘
✘
✘
✘
Enterprise Qualities
✘
✘
✘
✘
✘
>1000
>100
>1500
It is Open Source
Open Source Availability
Outlook
Outlook
✘
✘
✘
✘
✘
Cloud
Foundry
Key Takeaways
thanks!
Credits
✘
✘
●
●
Extra graphics

Managing distributed-cloud-apps

  • 1.
    Managing Distributed Cloud NativeApplications Made Easy Nikolay Valchev and Klaus Kopecz, SAP SE
  • 2.
  • 3.
    Managing Distributed Cloud NativeApplications Made Easy
  • 4.
  • 5.
    Distributed Applications inthe Cloud User Web DB Web Web DB DB Ruby Ruby Java Java Java Node.js Node.js Node.js ] Node.js Any
  • 6.
    Distributed Applications inthe Cloud Application DevOps Team (~ 2 Pizzas) Web DB Web Web DB DB Ruby Ruby Java Java Java Node.js Node.js Node.js ] Node.js Any Version x.y.z Responsibility to develop, test, configure, deploy, update, remove, migrate, patch, trace, analyze, ... User
  • 7.
    Example Application DevOps Team (~ 2Pizzas) Other Service Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (user request processing) ”FRONTEND” DB service instance “PERSISTE NCE” Geo-spatial Service “EXTERNAL RESOURCE“
  • 8.
    What are theChallenges? ✘ Application DevOps Team (~ 2 Pizzas) Other Service Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTE NCE” Geo-spatial Service “EXTERNAL RESOURCE“
  • 9.
    What are theChallenges? ✘ ✘ Application DevOps Team (~ 2 Pizzas) Other Service Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTE NCE” Geo-spatial Service “EXTERNAL RESOURCE“
  • 10.
    What are theChallenges? ✘ ✘ ✘ Application DevOps Team (~ 2 Pizzas) Other Service Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTE NCE” Geo-spatial Service “EXTERNAL RESOURCE“
  • 11.
    What are theChallenges? ✘ ✘ ✘ ✘ Application DevOps Team (~ 2 Pizzas) Other Service Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTE NCE” Geo-spatial Service “EXTERNAL RESOURCE“
  • 12.
    What are theChallenges? ✘ ✘ ✘ ✘ ✘ Application DevOps Team (~ 2 Pizzas) Other Service Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTE NCE” Geo-spatial Service “EXTERNAL RESOURCE“
  • 13.
    What are theChallenges? ✘ ✘ ✘ ✘ ✘ ✘ Application DevOps Team (~ 2 Pizzas) Other Service Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTE NCE” Geo-spatial Service “EXTERNAL RESOURCE“
  • 14.
    What are theChallenges? ✘ ✘ ✘ ✘ ✘ ✘ ✘ Application DevOps Team (~ 2 Pizzas) Other Service Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTE NCE” Geo-spatial Service “EXTERNAL RESOURCE“
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    Multi-Target Application (MTA) Businesscapability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (user request processing) ”FRONTEND” DB service instance “PERSISTEN CE” Geo-spatial service “EXTERNAL RESOURCE“ MTA: my-app Module1 type Resource type Module1 type Resource type Version x.y.z
  • 20.
    Three things itis good for MTA: my-app Module1 typ e Resource type Module1 typ e Resource type Version x.y.z Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTENC E” Geo-spatial service “EXTERNAL RESOURCE“
  • 21.
    Three things itis good for MTA: my-app Module1 typ e Resource type Module1 typ e Resource type Version x.y.z Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTENC E” Geo-spatial service “EXTERNAL RESOURCE“
  • 22.
    Three things itis good for MTA: my-app Module1 typ e Resource type Module1 typ e Resource type Version x.y.z Business capability Lifecycle Management Unit Version x.y.z Java (heavy data processing) “BACKEND” Node.Js (heavy data processing) ”FRONTEND” DB service instance “PERSISTENC E” Geo-spatial service “EXTERNAL RESOURCE“
  • 23.
  • 24.
  • 25.
    Spring Music MTA ✘ ✘ ✘ spring-music Lifecycle Management Unit Version1.0.0 news provider web DB service instance external news provider
  • 26.
  • 27.
  • 28.
    MTA Descriptors ✘ ✘ mtad.yaml ✘*.mtaext extends MTA deployment descriptor MTA extension descriptor *1 extends
  • 29.
    MTA Deployment Descriptor _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url: spring-music Lifecycle Management Unit Version 1.0.0 news provide r web DB service instance external news provider
  • 30.
    MTA Deployment Descriptor ✘ ✘ ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 31.
    MTA Deployment Descriptor ✘ ✘ ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 32.
    MTA Deployment Descriptor ✘ ✘ ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 33.
    MTA Deployment Descriptor ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 34.
    MTA Deployment Descriptor ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 35.
    MTA Deployment Descriptor ✘ ${default-url} _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 36.
    MTA Deployment Descriptor ✘ ~{url} _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 37.
    MTA Deployment Descriptor ✘ ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 38.
    MTA Deployment Descriptor ✘ ✘ ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 39.
    MTA Deployment Descriptor ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 40.
    MTA Deployment Descriptor ✘ _schema-version:3 ID: org.cf.samples.spring-music version: 1.0.0 modules: - name: spring-music-web type: java.tomcat path: build/libs/spring-music.jar requires: - name: news-provider properties: NEWS_URL: ~{url} - name: spring-music-db - name: spring-music-news-external parameters: buildpack: java_buildpack properties: POPULATE_ALBUM_REPOSITORY: true - name: spring-music-news type: javascript.nodejs path: spring-music-news/ provides: - name: news-provider properties: url: ${default-url}/news resources: - name: spring-music-db type: managed-service parameters: service: postgresql service-plan: v9.4-container - name: spring-music-news-external type: user-provided-service parameters: config: url:
  • 41.
    MTA Extension Descriptor _schema-version:3 ID: cf.samples.spring-music.prod-config extends: cf.samples.spring.music modules: - name: spring-music-web parameters: memory: 1G instances: 2 properties: POPULATE_ALBUM_REPOSITORY: false - name: spring-music-news parameters: memory: 128M resources: - name: spring-music-news-external parameters: config: url: https://news-external.my.domain/news
  • 42.
  • 43.
    What is anMTA Archive (MTAR)? ✘ ✘ ✘ MTA deployment descriptor Java WAR Node.Js Code … ...
  • 44.
    Building MTA Archives text editor developer JARor maven plugin MTA deployment descriptor MTA archive module package MTA deployment descriptor (3) (1) (5) dev & build tools module (2) Mani fest. MF (4)
  • 45.
    Building MTA Archives text editor developer JARor maven plugin MTA deployment descriptor MTA archive module package MTA deployment descriptor (3) (1) (5) dev & build tools module (2) Mani fest. MF (4)
  • 46.
    Building MTA Archives mtad.yamltext editor developer JAR or maven plugin MTA deployment descriptor MTA archive module package MTA deployment descriptor (3) (1) (5) dev & build tools module (2) Mani fest. MF (4)
  • 47.
    Building MTA Archives mtad.yaml MANIFEST.MF text editor developer JARor maven plugin MTA deployment descriptor MTA archive module package MTA deployment descriptor (3) (1) (5) dev & build tools module (2) Mani fest. MF (4)
  • 48.
    Building MTA Archives mtad.yaml MANIFEST.MF text editor developer MTA deployment descriptor MTAarchive module package MTA deployment descriptor (3) (1) (5) dev & build tools module (2) Mani fest. MF (4) JAR or maven plugin
  • 49.
  • 50.
    CF Deploy Service MTA deployment descriptor MTAarchive module MTA extension descriptor CF CLI operator Cloud Foundry Cloud Controller CF Deploy Service PostgreSQL database target state workflows cf deploy current state
  • 51.
    CF Deploy Service MTA deployment descriptor MTAarchive module MTA extension descriptor CF CLI operator Cloud Foundry Cloud Controller CF Deploy Service PostgreSQL database target state workflows cf deploy current state
  • 52.
  • 53.
  • 54.
  • 55.
    It is OpenSource
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.