SlideShare a Scribd company logo
SDLC for Pivotal Platform, Powered by
Spring Initializr, Concourse and
Spinnaker
October 7–10, 2019
Austin Convention Center
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Pivotal Developer’s Haiku
"here is my source code
run it on the cloud for me
i do not care how"
However, someone must care…….namely the platform SRE team.
2
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Pivotal SRE Team Haiku
"here are my servers
go make them a cloud foundry
i do not care how"
However, someone must care…….namely the CF engineering team!
3
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spring Boot SDLC Haiku
“Initialzer
complexity disappears
i do not care how”
However, someone must care…….namely the development team!
4
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Microservices in an enterprise landscape
Issue: Amount of microservices, multi-cloud, redundant code, manual setup
Reality: In a complex environment we needed to:
• Unifying development
• Logging, monitoring, metrics, configuration, code structure
• Find a way to setup new microservices fast in our SDLC
• Repository, pipelines, monitoring, logging, etc.
• Apply changes in our SDLC fast to the existing services
5
Automation is key in a world of microservices
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
SDLC components
6
Microservice
Code Repo
Build pipeline
Artifact Repo
Security Scan Code Quality
Test exec.
Deployment
Runtime env.
Log dashboard
Monitoring /
alerting
Document CollaborationMetrics
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Automation requires APIs
To automate the setup of a new service in all SDLC components, the components
need to provide an API or other way to configure it
• REST and/or Web-service APIs
• Command line interfaces (CLI)
• The capability to define the configuration in a text format (YAML for example)
Provide a templating mechanism would be great
7
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The perfect fit
Pivotal platform, Concourse and Spinnaker provide all we need for an automated setup
• Pivotal platform - platform as a service to manage containers and / or micro services
• cf CLI - cf push myApp.yml
• Manifest files with variable substitution support
• Concourse - build pipeline tool
• fly CLI - fly -t myTeam sp -p myPipeline.yml
• Pipelines defined in yaml format with variable substitution support
• Spinnaker - Continuous delivery platform
• spin CLI - spin pipeline save --file myApp.json
• Template inheritance
8
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Generate vs. Inject
Generating pipelines, job descriptions or manifest files should be avoided.
Instead, focus on injecting dynamic values into standard pipeline/processes
• Jobs, pipelines, etc. will continuously be improved. You do not want to
regenerate them all the time
• Your infrastructure landscape might be complex
• Different environments (dev, qa, customer test, performance, prod, etc.)
• Multiple data centers (primary, disaster recovery)
• Multiple Pivotal platform foundations in each data center
• Multiple regions (US, Europe, Asia, etc.)
9
Always generate only, what is service specific
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Handling permutations?
Define your configuration and then create files per permutation. An example:
10
Dev
Env
Qa
Prod
Foundation
Primary nonprod
DR prod
Primary prod
Region
US
Europe
ASIA
Template
MyApp
config for
Prod primary
datacenter
in Europe
MyApp
App
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Pivotal Platform manifest file example
11
Env Foundation
host: prim-host.abc.com
Region
region: europename: my-app
App
env: prod
- - -
Applications:
- name: ((name))
- memory: 2G
- routes:
- route: ((name))-((env)).((region))-((host))
- - -
Applications:
- name: my-app
- memory: 2G
- routes:
- route: my-app-prod.europe-prim-host.abc.com
Template
Result
cf push --vars-file app.yml --vars-file prod.yml --vars-file primary.yml --vars-file europe.yml -f template.yml
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Concourse example
12
resources:
- name: cf-performance
type: cf
source:
api: https://api.system.((region))-((host))
username: ((cf_username))
password: ((cf_password))
organization: ((org))
Org Foundation
host: prim-np.abc.com
Region
region: europename: my-app
App
org: MY_ORG
fly -t np_us set-pipeline -p perf_my-app -c perf-pipeline.yml -l perf.yml -l team.yml -l primNonProd.yml …
fly -t np_us unpause-pipeline -p perf_my-app
resources:
- name: cf-performance
type: cf
source:
api: https://api.system.europe-prim-np.abc.com
username: my_deployment_user
password: the_secret
organization: MY_ORG
env: perf
Env
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Spinnaker provides template inheritance
13
spin application save --application-name myApp --owner-email theemail@company.com --cloud-providers "cloudfoundry"
spin pipeline save --file thepipeline.json
{
"schema": "v2",
"application": "{{name}}",
"name": "Deploy Red/Black",
"template": {
"artifactAccount": "front50ArtifactCredentials",
"reference": "spinnaker://RedBlackDeplTemplate",
"type": "front50/pipelineTemplate",
},
"variables": {
"waitTime": 4
},
"exclude": [],
…
{
"schema": "v2",
"application": "myApp",
"name": "Deploy Red/Black",
"template": {
"artifactAccount": "front50ArtifactCredentials",
"reference": "spinnaker://RedBlackDeplTemplate",
"type": "front50/pipelineTemplate",
},
"variables": {
"waitTime": 4
},
"exclude": [],
…
Before Result
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Extending Spring Initializr
14
Spring Initializr supports generation of standardized Spring Boot applications out
of the box.
However, it can be also easily extended to create customized applications:
Demo will show how to:
• Add your company libraries
• Create your own files (e.g. service specific variable files like app.yml)
• Extend the UI to add your own values
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Initializr related projects
https://github.com/spring-io/
start.spring.io
start-site
https://github.com/spring-io/initializr
start-client
Web project Generator
(do not touch)
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Extending Spring Initializr
16
DEMO
Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Adding fields to the Initializr
Controller
ModelAttribute
UI
applicationId
start-client Start-site
WebProjectRequest
Initializr
Request parameter to
bean mapping
Generator
ProjectDescription
Project request to
description converter
Spring boot app
Thanks for listening
joachim@pasquali.de
Code:
https://github.com/jpasquali/start.spring.io
#springone@s1p

More Related Content

What's hot (20)

PDF
JAX London 2015: Java vs Nodejs
Chris Bailey
 
PDF
Burns jsf-confess-2015
Edward Burns
 
PDF
JavaOne2013: Securing Java in the Server Room - Tim Ellison
Chris Bailey
 
PDF
20190205 AWS Black Belt Online Seminar 公共機関によるAWSの利活用
Amazon Web Services Japan
 
PDF
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Bart Jonkers
 
PPTX
Spring Integration Hazelcast Extension - SpringOne Conference 2015
Eren Avşaroğulları
 
PDF
JSF 2.2 Input Output JavaLand 2015
Edward Burns
 
PPTX
Ed presents JSF 2.2 and WebSocket to Gameduell.
Edward Burns
 
PPTX
Pivotal cloud foundry introduction
Gaurav Shukla
 
PPTX
Best Practices for JSF, Gameduell 2013
Edward Burns
 
PPTX
Taking the Application Server to Web Scale with Netflix Open Source Software
David Currie
 
PDF
Serverless Java: JJUG CCC 2019
Shaun Smith
 
PDF
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Edward Burns
 
ODP
JMP102 Extending Your App Arsenal With OpenSocial
Ryan Baxter
 
PDF
IPT angular2 typescript SPA 2016
Trayan Iliev
 
PDF
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Chris Muir
 
PDF
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
François Le Droff
 
PDF
C++ API 디자인 - 확장성
HyeonSeok Choi
 
PDF
A Java Implementer's Guide to Better Apache Spark Performance
Tim Ellison
 
PPTX
AWS DevDay Berlin - Automating building blocks choices you will face with con...
Cobus Bernard
 
JAX London 2015: Java vs Nodejs
Chris Bailey
 
Burns jsf-confess-2015
Edward Burns
 
JavaOne2013: Securing Java in the Server Room - Tim Ellison
Chris Bailey
 
20190205 AWS Black Belt Online Seminar 公共機関によるAWSの利活用
Amazon Web Services Japan
 
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Bart Jonkers
 
Spring Integration Hazelcast Extension - SpringOne Conference 2015
Eren Avşaroğulları
 
JSF 2.2 Input Output JavaLand 2015
Edward Burns
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Edward Burns
 
Pivotal cloud foundry introduction
Gaurav Shukla
 
Best Practices for JSF, Gameduell 2013
Edward Burns
 
Taking the Application Server to Web Scale with Netflix Open Source Software
David Currie
 
Serverless Java: JJUG CCC 2019
Shaun Smith
 
Java EE 7 from an HTML5 Perspective, JavaLand 2015
Edward Burns
 
JMP102 Extending Your App Arsenal With OpenSocial
Ryan Baxter
 
IPT angular2 typescript SPA 2016
Trayan Iliev
 
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Chris Muir
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
François Le Droff
 
C++ API 디자인 - 확장성
HyeonSeok Choi
 
A Java Implementer's Guide to Better Apache Spark Performance
Tim Ellison
 
AWS DevDay Berlin - Automating building blocks choices you will face with con...
Cobus Bernard
 

Similar to SDLC for Pivotal Platform powered by Spring Initializr and Concourse (20)

PDF
Fast 5 Things You Can Do Now to Get Ready for the Cloud
VMware Tanzu
 
PPTX
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
cornelia davis
 
PDF
Pivotal spring boot-cloud workshop
Sufyaan Kazi
 
PPTX
The Cloud Native Journey
VMware Tanzu
 
PDF
Development on Cloud,PaaS and SDDC
seungdon Choi
 
PDF
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
PDF
Pivotal Cloud Foundry: A Technical Overview
VMware Tanzu
 
PDF
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
VMware Tanzu
 
PDF
Development on cloud_paa_s_sddc_mkim_20141216_final
minseok kim
 
PDF
Pivotal Cloud Foundry: A Technical Overview
VMware Tanzu
 
PDF
Modernizing Digital APIs Platform to Cloud-Native Microservices
VMware Tanzu
 
PPTX
Cloud-Native Workshop New York- Pivotal
VMware Tanzu
 
PDF
The Cloud Native Journey
Matt Stine
 
PDF
Cloud native Microservices using Spring Boot
Sufyaan Kazi
 
PDF
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
VMware Tanzu
 
PPTX
Spring on PAS - Fabio Marinelli
VMware Tanzu
 
PPTX
Accelerating the Consumption of APIs Built on Cloud Foundry
VMware Tanzu
 
PDF
Spring Boot & Spring Cloud on Pivotal Application Service
VMware Tanzu
 
PPTX
Automate Project Initiation to Deploy in Minutes
VMware Tanzu
 
PPTX
SpringOne2GX 2014 Splunk Presentation
Damien Dallimore
 
Fast 5 Things You Can Do Now to Get Ready for the Cloud
VMware Tanzu
 
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
cornelia davis
 
Pivotal spring boot-cloud workshop
Sufyaan Kazi
 
The Cloud Native Journey
VMware Tanzu
 
Development on Cloud,PaaS and SDDC
seungdon Choi
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
Pivotal Cloud Foundry: A Technical Overview
VMware Tanzu
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
VMware Tanzu
 
Development on cloud_paa_s_sddc_mkim_20141216_final
minseok kim
 
Pivotal Cloud Foundry: A Technical Overview
VMware Tanzu
 
Modernizing Digital APIs Platform to Cloud-Native Microservices
VMware Tanzu
 
Cloud-Native Workshop New York- Pivotal
VMware Tanzu
 
The Cloud Native Journey
Matt Stine
 
Cloud native Microservices using Spring Boot
Sufyaan Kazi
 
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
VMware Tanzu
 
Spring on PAS - Fabio Marinelli
VMware Tanzu
 
Accelerating the Consumption of APIs Built on Cloud Foundry
VMware Tanzu
 
Spring Boot & Spring Cloud on Pivotal Application Service
VMware Tanzu
 
Automate Project Initiation to Deploy in Minutes
VMware Tanzu
 
SpringOne2GX 2014 Splunk Presentation
Damien Dallimore
 
Ad

More from VMware Tanzu (20)

PDF
Spring into AI presented by Dan Vega 5/14
VMware Tanzu
 
PDF
What AI Means For Your Product Strategy And What To Do About It
VMware Tanzu
 
PDF
Make the Right Thing the Obvious Thing at Cardinal Health 2023
VMware Tanzu
 
PPTX
Enhancing DevEx and Simplifying Operations at Scale
VMware Tanzu
 
PDF
Spring Update | July 2023
VMware Tanzu
 
PPTX
Platforms, Platform Engineering, & Platform as a Product
VMware Tanzu
 
PPTX
Building Cloud Ready Apps
VMware Tanzu
 
PDF
Spring Boot 3 And Beyond
VMware Tanzu
 
PDF
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
VMware Tanzu
 
PDF
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
VMware Tanzu
 
PDF
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
VMware Tanzu
 
PPTX
tanzu_developer_connect.pptx
VMware Tanzu
 
PDF
Tanzu Virtual Developer Connect Workshop - French
VMware Tanzu
 
PDF
Tanzu Developer Connect Workshop - English
VMware Tanzu
 
PDF
Virtual Developer Connect Workshop - English
VMware Tanzu
 
PDF
Tanzu Developer Connect - French
VMware Tanzu
 
PDF
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
VMware Tanzu
 
PDF
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
VMware Tanzu
 
PDF
SpringOne Tour: The Influential Software Engineer
VMware Tanzu
 
PDF
SpringOne Tour: Domain-Driven Design: Theory vs Practice
VMware Tanzu
 
Spring into AI presented by Dan Vega 5/14
VMware Tanzu
 
What AI Means For Your Product Strategy And What To Do About It
VMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
VMware Tanzu
 
Spring Update | July 2023
VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
VMware Tanzu
 
Building Cloud Ready Apps
VMware Tanzu
 
Spring Boot 3 And Beyond
VMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
VMware Tanzu
 
tanzu_developer_connect.pptx
VMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
VMware Tanzu
 
Tanzu Developer Connect Workshop - English
VMware Tanzu
 
Virtual Developer Connect Workshop - English
VMware Tanzu
 
Tanzu Developer Connect - French
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
VMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
VMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
VMware Tanzu
 
Ad

Recently uploaded (20)

PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 

SDLC for Pivotal Platform powered by Spring Initializr and Concourse

  • 1. SDLC for Pivotal Platform, Powered by Spring Initializr, Concourse and Spinnaker October 7–10, 2019 Austin Convention Center
  • 2. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Pivotal Developer’s Haiku "here is my source code run it on the cloud for me i do not care how" However, someone must care…….namely the platform SRE team. 2
  • 3. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Pivotal SRE Team Haiku "here are my servers go make them a cloud foundry i do not care how" However, someone must care…….namely the CF engineering team! 3
  • 4. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spring Boot SDLC Haiku “Initialzer complexity disappears i do not care how” However, someone must care…….namely the development team! 4
  • 5. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Microservices in an enterprise landscape Issue: Amount of microservices, multi-cloud, redundant code, manual setup Reality: In a complex environment we needed to: • Unifying development • Logging, monitoring, metrics, configuration, code structure • Find a way to setup new microservices fast in our SDLC • Repository, pipelines, monitoring, logging, etc. • Apply changes in our SDLC fast to the existing services 5 Automation is key in a world of microservices
  • 6. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ SDLC components 6 Microservice Code Repo Build pipeline Artifact Repo Security Scan Code Quality Test exec. Deployment Runtime env. Log dashboard Monitoring / alerting Document CollaborationMetrics
  • 7. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Automation requires APIs To automate the setup of a new service in all SDLC components, the components need to provide an API or other way to configure it • REST and/or Web-service APIs • Command line interfaces (CLI) • The capability to define the configuration in a text format (YAML for example) Provide a templating mechanism would be great 7
  • 8. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ The perfect fit Pivotal platform, Concourse and Spinnaker provide all we need for an automated setup • Pivotal platform - platform as a service to manage containers and / or micro services • cf CLI - cf push myApp.yml • Manifest files with variable substitution support • Concourse - build pipeline tool • fly CLI - fly -t myTeam sp -p myPipeline.yml • Pipelines defined in yaml format with variable substitution support • Spinnaker - Continuous delivery platform • spin CLI - spin pipeline save --file myApp.json • Template inheritance 8
  • 9. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Generate vs. Inject Generating pipelines, job descriptions or manifest files should be avoided. Instead, focus on injecting dynamic values into standard pipeline/processes • Jobs, pipelines, etc. will continuously be improved. You do not want to regenerate them all the time • Your infrastructure landscape might be complex • Different environments (dev, qa, customer test, performance, prod, etc.) • Multiple data centers (primary, disaster recovery) • Multiple Pivotal platform foundations in each data center • Multiple regions (US, Europe, Asia, etc.) 9 Always generate only, what is service specific
  • 10. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Handling permutations? Define your configuration and then create files per permutation. An example: 10 Dev Env Qa Prod Foundation Primary nonprod DR prod Primary prod Region US Europe ASIA Template MyApp config for Prod primary datacenter in Europe MyApp App
  • 11. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Pivotal Platform manifest file example 11 Env Foundation host: prim-host.abc.com Region region: europename: my-app App env: prod - - - Applications: - name: ((name)) - memory: 2G - routes: - route: ((name))-((env)).((region))-((host)) - - - Applications: - name: my-app - memory: 2G - routes: - route: my-app-prod.europe-prim-host.abc.com Template Result cf push --vars-file app.yml --vars-file prod.yml --vars-file primary.yml --vars-file europe.yml -f template.yml
  • 12. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Concourse example 12 resources: - name: cf-performance type: cf source: api: https://api.system.((region))-((host)) username: ((cf_username)) password: ((cf_password)) organization: ((org)) Org Foundation host: prim-np.abc.com Region region: europename: my-app App org: MY_ORG fly -t np_us set-pipeline -p perf_my-app -c perf-pipeline.yml -l perf.yml -l team.yml -l primNonProd.yml … fly -t np_us unpause-pipeline -p perf_my-app resources: - name: cf-performance type: cf source: api: https://api.system.europe-prim-np.abc.com username: my_deployment_user password: the_secret organization: MY_ORG env: perf Env
  • 13. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Spinnaker provides template inheritance 13 spin application save --application-name myApp --owner-email [email protected] --cloud-providers "cloudfoundry" spin pipeline save --file thepipeline.json { "schema": "v2", "application": "{{name}}", "name": "Deploy Red/Black", "template": { "artifactAccount": "front50ArtifactCredentials", "reference": "spinnaker://RedBlackDeplTemplate", "type": "front50/pipelineTemplate", }, "variables": { "waitTime": 4 }, "exclude": [], … { "schema": "v2", "application": "myApp", "name": "Deploy Red/Black", "template": { "artifactAccount": "front50ArtifactCredentials", "reference": "spinnaker://RedBlackDeplTemplate", "type": "front50/pipelineTemplate", }, "variables": { "waitTime": 4 }, "exclude": [], … Before Result
  • 14. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Extending Spring Initializr 14 Spring Initializr supports generation of standardized Spring Boot applications out of the box. However, it can be also easily extended to create customized applications: Demo will show how to: • Add your company libraries • Create your own files (e.g. service specific variable files like app.yml) • Extend the UI to add your own values
  • 15. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Initializr related projects https://github.com/spring-io/ start.spring.io start-site https://github.com/spring-io/initializr start-client Web project Generator (do not touch)
  • 16. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Extending Spring Initializr 16 DEMO
  • 17. Unless otherwise indicated, these slides are © 2013-2019 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Adding fields to the Initializr Controller ModelAttribute UI applicationId start-client Start-site WebProjectRequest Initializr Request parameter to bean mapping Generator ProjectDescription Project request to description converter Spring boot app