SlideShare a Scribd company logo
1 of 21
Batch Processing With Spring Cloud
Data Flow Server in Cloud Foundry
By Bruce Thelen
@brucethelen
1
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Introduction
2
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
RiskMeter Order Flow
3
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Problem Statement
4
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Solution Design
5
Choose Products Upload Input Verify Input Process Batch Download
Output
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
RiskMeter Batch Order Flow
6
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Solution Overview
7
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Process To Implement Solution
8
http://www.appcontinuum.io/
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Process To Implement Solution
9
SingleApplicationwith
Namespaces
• Monolith
SingleApplicationand
Components
• Monolith
• Web
• Batch
• Shared
MultipleApplicationsand
Components
• Web
• Web
• Shared
• Data Flow Server
• Batch
• Batch
• Shared
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Solution Diagram
10
Lessons Learned
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Register Tasks With SCDF
12
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Deploy
New Web
Smoke Test
New Web
Reroute to
New Web
Stop Old
Web
Deploy
New Web
Register
New Batch
Smoke Test
New Web
Smoke Test
New Batch
Reroute to
New Web
Stop Old
Web
Cleanup
Any
Completed
Batch
Blue Green Deployment Process
13
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Cleaning Up CF Tasks
14
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Passing Data Between Web And Batch
15
@Service
public class BatchRunner {
…
public JobExecution runBatch() {
…
return jobLauncher.run(batchJob, batchJobParameters);
}
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Passing Data Between Web And Batch
16
public void execute(String batchJobId) {
…
MultiValueMap<String, String> params = new …
params.add("name", taskName);
params.add("arguments", "--batchJobId=" + batchJobId);
…
HttpEntity<MultiValueMap<String, String>> requestEntity =
new HttpEntity<>(params, null);
…
asyncRestTemplate.postForLocation(uri, requestEntity);
}
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Passing Data Between Web And Batch
17
$ curl -s -X POST -u scdfuser:password 
http://localhost:9393/tasks/executions -d  'name=riskmeter-batch-
app-527b9c8-task&arguments=--batchJobId%3D1'
Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Injecting Configuration Into SCDF and TASK
18
spring:
cloud:
deployer:
cloudfoundry:
domain: clgxlabs.com
org: Corelogic
password: "{cipher}ThisIZAFakePazzW0Rd"
space: rmeter-prod
url: "https://api.sys.clgxlabs.io"
username: ciprodadmin
task:
buildpack: java_buildpack_offline
services: "config-server,riskmeter-rabbit,splunk-syslog"
memory: 2048
Demo
Conclusion
Learn More. Stay Connected.
Orchestrating Data Microservices with Spring Cloud Data Flow
Tomorrow 10:30am Room 2005
Latency and Event Tracing with Spring Cloud Data Flow
Tomorrow 11:50am Room 2005
21
#springone@s1p

More Related Content

What's hot

Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsMatt Stine
 
A Leader’s Guide to DevOps Practices and Culture
A Leader’s Guide to DevOps Practices and CultureA Leader’s Guide to DevOps Practices and Culture
A Leader’s Guide to DevOps Practices and CultureVMware Tanzu
 
Deep Dive into Pivotal Cloud Foundry 2.0
Deep Dive into Pivotal Cloud Foundry 2.0Deep Dive into Pivotal Cloud Foundry 2.0
Deep Dive into Pivotal Cloud Foundry 2.0VMware Tanzu
 
Distribute Your App and Engage Your Community with a Helm Repository
Distribute Your App and Engage Your Community with a Helm RepositoryDistribute Your App and Engage Your Community with a Helm Repository
Distribute Your App and Engage Your Community with a Helm RepositoryVMware Tanzu
 
Kubernetes and Windows: At Scale with Enterprise PKS
Kubernetes and Windows: At Scale with Enterprise PKSKubernetes and Windows: At Scale with Enterprise PKS
Kubernetes and Windows: At Scale with Enterprise PKSVMware Tanzu
 
Trivadis TechEvent 2016 Cloud-Development - Starting out with PaaS - a develo...
Trivadis TechEvent 2016 Cloud-Development - Starting out with PaaS - a develo...Trivadis TechEvent 2016 Cloud-Development - Starting out with PaaS - a develo...
Trivadis TechEvent 2016 Cloud-Development - Starting out with PaaS - a develo...Trivadis
 
More Devs, No Problems: Enabling Self-Service Access to Kubernetes
More Devs, No Problems: Enabling Self-Service Access to KubernetesMore Devs, No Problems: Enabling Self-Service Access to Kubernetes
More Devs, No Problems: Enabling Self-Service Access to KubernetesVMware Tanzu
 
Reactor 3.0, a reactive foundation for java 8 and Spring
Reactor 3.0, a reactive foundation for java 8 and SpringReactor 3.0, a reactive foundation for java 8 and Spring
Reactor 3.0, a reactive foundation for java 8 and SpringStéphane Maldini
 
IBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon AcceleratorIBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon Acceleratorgjuljo
 
Extending the Platform
Extending the PlatformExtending the Platform
Extending the PlatformVMware Tanzu
 
Declarative Infrastructure with Cloud Foundry BOSH
Declarative Infrastructure with Cloud Foundry BOSHDeclarative Infrastructure with Cloud Foundry BOSH
Declarative Infrastructure with Cloud Foundry BOSHcornelia davis
 
70 534 microsoft real exam
70 534 microsoft real exam70 534 microsoft real exam
70 534 microsoft real examadam_jhon
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015gjuljo
 
Build cloud native solution using open source
Build cloud native solution using open source Build cloud native solution using open source
Build cloud native solution using open source Nitesh Jadhav
 

What's hot (15)

Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
 
A Leader’s Guide to DevOps Practices and Culture
A Leader’s Guide to DevOps Practices and CultureA Leader’s Guide to DevOps Practices and Culture
A Leader’s Guide to DevOps Practices and Culture
 
Deep Dive into Pivotal Cloud Foundry 2.0
Deep Dive into Pivotal Cloud Foundry 2.0Deep Dive into Pivotal Cloud Foundry 2.0
Deep Dive into Pivotal Cloud Foundry 2.0
 
Distribute Your App and Engage Your Community with a Helm Repository
Distribute Your App and Engage Your Community with a Helm RepositoryDistribute Your App and Engage Your Community with a Helm Repository
Distribute Your App and Engage Your Community with a Helm Repository
 
Kubernetes and Windows: At Scale with Enterprise PKS
Kubernetes and Windows: At Scale with Enterprise PKSKubernetes and Windows: At Scale with Enterprise PKS
Kubernetes and Windows: At Scale with Enterprise PKS
 
Trivadis TechEvent 2016 Cloud-Development - Starting out with PaaS - a develo...
Trivadis TechEvent 2016 Cloud-Development - Starting out with PaaS - a develo...Trivadis TechEvent 2016 Cloud-Development - Starting out with PaaS - a develo...
Trivadis TechEvent 2016 Cloud-Development - Starting out with PaaS - a develo...
 
More Devs, No Problems: Enabling Self-Service Access to Kubernetes
More Devs, No Problems: Enabling Self-Service Access to KubernetesMore Devs, No Problems: Enabling Self-Service Access to Kubernetes
More Devs, No Problems: Enabling Self-Service Access to Kubernetes
 
Reactor 3.0, a reactive foundation for java 8 and Spring
Reactor 3.0, a reactive foundation for java 8 and SpringReactor 3.0, a reactive foundation for java 8 and Spring
Reactor 3.0, a reactive foundation for java 8 and Spring
 
IBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon AcceleratorIBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon Accelerator
 
Extending the Platform
Extending the PlatformExtending the Platform
Extending the Platform
 
Declarative Infrastructure with Cloud Foundry BOSH
Declarative Infrastructure with Cloud Foundry BOSHDeclarative Infrastructure with Cloud Foundry BOSH
Declarative Infrastructure with Cloud Foundry BOSH
 
70 534 microsoft real exam
70 534 microsoft real exam70 534 microsoft real exam
70 534 microsoft real exam
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015
 
Build cloud native solution using open source
Build cloud native solution using open source Build cloud native solution using open source
Build cloud native solution using open source
 
Cloud Computing Opportunities in the Goverment Military Sectors
Cloud Computing Opportunities in the Goverment Military SectorsCloud Computing Opportunities in the Goverment Military Sectors
Cloud Computing Opportunities in the Goverment Military Sectors
 

Similar to Case Study of Batch Processing With Spring Cloud Data Flow Server in Cloud Foundry

A journey of mobile, microservices, and speed to market at the world's larges...
A journey of mobile, microservices, and speed to market at the world's larges...A journey of mobile, microservices, and speed to market at the world's larges...
A journey of mobile, microservices, and speed to market at the world's larges...VMware Tanzu
 
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...VMware Tanzu
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesVMware Tanzu
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...VMware Tanzu
 
Marcin Grzejszczak - Contract Tests in the Enterprise
Marcin Grzejszczak - Contract Tests in the EnterpriseMarcin Grzejszczak - Contract Tests in the Enterprise
Marcin Grzejszczak - Contract Tests in the EnterpriseSegFaultConf
 
Concourse in the Real World: A Case Study in CI/CD and DevOps
Concourse in the Real World: A Case Study in CI/CD and DevOpsConcourse in the Real World: A Case Study in CI/CD and DevOps
Concourse in the Real World: A Case Study in CI/CD and DevOpsVMware Tanzu
 
Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)VMware Tanzu
 
Implementing microservices tracing with spring cloud and zipkin (spring one)
Implementing microservices tracing with spring cloud and zipkin (spring one)Implementing microservices tracing with spring cloud and zipkin (spring one)
Implementing microservices tracing with spring cloud and zipkin (spring one)Reshmi Krishna
 
Caching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud CacheCaching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud CacheVMware Tanzu
 
State of Securing Restful APIs s12gx2015
State of Securing Restful APIs s12gx2015State of Securing Restful APIs s12gx2015
State of Securing Restful APIs s12gx2015robwinch
 
Avoiding that $1M Dollar AWS Bill
Avoiding that $1M Dollar AWS BillAvoiding that $1M Dollar AWS Bill
Avoiding that $1M Dollar AWS BillVMware Tanzu
 
Extending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryExtending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryKenny Bastani
 
PCF Platform Monitoring with Prometheus and Grafana
PCF Platform Monitoring with Prometheus and GrafanaPCF Platform Monitoring with Prometheus and Grafana
PCF Platform Monitoring with Prometheus and GrafanaVMware Tanzu
 
Latency analysis for your microservices using Spring Cloud & Zipkin
Latency analysis for your microservices using Spring Cloud & ZipkinLatency analysis for your microservices using Spring Cloud & Zipkin
Latency analysis for your microservices using Spring Cloud & ZipkinVMware Tanzu
 
Containers Were Never Your End State
Containers Were Never Your End StateContainers Were Never Your End State
Containers Were Never Your End StateVMware Tanzu
 
Fast 5 Things You Can Do Now to Get Ready for the Cloud
Fast 5 Things You Can Do Now to Get Ready for the CloudFast 5 Things You Can Do Now to Get Ready for the Cloud
Fast 5 Things You Can Do Now to Get Ready for the CloudVMware Tanzu
 
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...VMware Tanzu
 
Experience + Education = Empowerment
Experience + Education = EmpowermentExperience + Education = Empowerment
Experience + Education = EmpowermentVMware Tanzu
 
PCF 2.3: A First Look
PCF 2.3: A First LookPCF 2.3: A First Look
PCF 2.3: A First LookVMware Tanzu
 

Similar to Case Study of Batch Processing With Spring Cloud Data Flow Server in Cloud Foundry (20)

A journey of mobile, microservices, and speed to market at the world's larges...
A journey of mobile, microservices, and speed to market at the world's larges...A journey of mobile, microservices, and speed to market at the world's larges...
A journey of mobile, microservices, and speed to market at the world's larges...
 
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
 
Zuul @ Netflix SpringOne Platform
Zuul @ Netflix SpringOne PlatformZuul @ Netflix SpringOne Platform
Zuul @ Netflix SpringOne Platform
 
Cloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud ServicesCloud Native Java with Spring Cloud Services
Cloud Native Java with Spring Cloud Services
 
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
 
Marcin Grzejszczak - Contract Tests in the Enterprise
Marcin Grzejszczak - Contract Tests in the EnterpriseMarcin Grzejszczak - Contract Tests in the Enterprise
Marcin Grzejszczak - Contract Tests in the Enterprise
 
Concourse in the Real World: A Case Study in CI/CD and DevOps
Concourse in the Real World: A Case Study in CI/CD and DevOpsConcourse in the Real World: A Case Study in CI/CD and DevOps
Concourse in the Real World: A Case Study in CI/CD and DevOps
 
Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)
 
Implementing microservices tracing with spring cloud and zipkin (spring one)
Implementing microservices tracing with spring cloud and zipkin (spring one)Implementing microservices tracing with spring cloud and zipkin (spring one)
Implementing microservices tracing with spring cloud and zipkin (spring one)
 
Caching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud CacheCaching for Microservives - Introduction to Pivotal Cloud Cache
Caching for Microservives - Introduction to Pivotal Cloud Cache
 
State of Securing Restful APIs s12gx2015
State of Securing Restful APIs s12gx2015State of Securing Restful APIs s12gx2015
State of Securing Restful APIs s12gx2015
 
Avoiding that $1M Dollar AWS Bill
Avoiding that $1M Dollar AWS BillAvoiding that $1M Dollar AWS Bill
Avoiding that $1M Dollar AWS Bill
 
Extending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud FoundryExtending the Platform with Spring Boot and Cloud Foundry
Extending the Platform with Spring Boot and Cloud Foundry
 
PCF Platform Monitoring with Prometheus and Grafana
PCF Platform Monitoring with Prometheus and GrafanaPCF Platform Monitoring with Prometheus and Grafana
PCF Platform Monitoring with Prometheus and Grafana
 
Latency analysis for your microservices using Spring Cloud & Zipkin
Latency analysis for your microservices using Spring Cloud & ZipkinLatency analysis for your microservices using Spring Cloud & Zipkin
Latency analysis for your microservices using Spring Cloud & Zipkin
 
Containers Were Never Your End State
Containers Were Never Your End StateContainers Were Never Your End State
Containers Were Never Your End State
 
Fast 5 Things You Can Do Now to Get Ready for the Cloud
Fast 5 Things You Can Do Now to Get Ready for the CloudFast 5 Things You Can Do Now to Get Ready for the Cloud
Fast 5 Things You Can Do Now to Get Ready for the Cloud
 
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
Cloud-Native Streaming Platform: Running Apache Kafka on PKS (Pivotal Contain...
 
Experience + Education = Empowerment
Experience + Education = EmpowermentExperience + Education = Empowerment
Experience + Education = Empowerment
 
PCF 2.3: A First Look
PCF 2.3: A First LookPCF 2.3: A First Look
PCF 2.3: A First Look
 

More from VMware Tanzu

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItVMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleVMware Tanzu
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductVMware Tanzu
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready AppsVMware Tanzu
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And BeyondVMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023VMware Tanzu
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptxVMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchVMware Tanzu
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishVMware Tanzu
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVMware Tanzu
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - FrenchVMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootVMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerVMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeVMware Tanzu
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsVMware Tanzu
 

More from VMware Tanzu (20)

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
 

Recently uploaded

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 

Case Study of Batch Processing With Spring Cloud Data Flow Server in Cloud Foundry

  • 1. Batch Processing With Spring Cloud Data Flow Server in Cloud Foundry By Bruce Thelen @brucethelen 1
  • 2. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Introduction 2
  • 3. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ RiskMeter Order Flow 3
  • 4. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Problem Statement 4
  • 5. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Solution Design 5 Choose Products Upload Input Verify Input Process Batch Download Output
  • 6. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ RiskMeter Batch Order Flow 6
  • 7. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Solution Overview 7
  • 8. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Process To Implement Solution 8 http://www.appcontinuum.io/
  • 9. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Process To Implement Solution 9 SingleApplicationwith Namespaces • Monolith SingleApplicationand Components • Monolith • Web • Batch • Shared MultipleApplicationsand Components • Web • Web • Shared • Data Flow Server • Batch • Batch • Shared
  • 10. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Solution Diagram 10
  • 12. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Register Tasks With SCDF 12
  • 13. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Deploy New Web Smoke Test New Web Reroute to New Web Stop Old Web Deploy New Web Register New Batch Smoke Test New Web Smoke Test New Batch Reroute to New Web Stop Old Web Cleanup Any Completed Batch Blue Green Deployment Process 13
  • 14. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Cleaning Up CF Tasks 14
  • 15. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Passing Data Between Web And Batch 15 @Service public class BatchRunner { … public JobExecution runBatch() { … return jobLauncher.run(batchJob, batchJobParameters); } }
  • 16. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Passing Data Between Web And Batch 16 public void execute(String batchJobId) { … MultiValueMap<String, String> params = new … params.add("name", taskName); params.add("arguments", "--batchJobId=" + batchJobId); … HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, null); … asyncRestTemplate.postForLocation(uri, requestEntity); }
  • 17. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Passing Data Between Web And Batch 17 $ curl -s -X POST -u scdfuser:password http://localhost:9393/tasks/executions -d 'name=riskmeter-batch- app-527b9c8-task&arguments=--batchJobId%3D1'
  • 18. Unless otherwise indicated, these slides are © 2013 -2016 Piv otal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Injecting Configuration Into SCDF and TASK 18 spring: cloud: deployer: cloudfoundry: domain: clgxlabs.com org: Corelogic password: "{cipher}ThisIZAFakePazzW0Rd" space: rmeter-prod url: "https://api.sys.clgxlabs.io" username: ciprodadmin task: buildpack: java_buildpack_offline services: "config-server,riskmeter-rabbit,splunk-syslog" memory: 2048
  • 19. Demo
  • 21. Learn More. Stay Connected. Orchestrating Data Microservices with Spring Cloud Data Flow Tomorrow 10:30am Room 2005 Latency and Event Tracing with Spring Cloud Data Flow Tomorrow 11:50am Room 2005 21 #springone@s1p

Editor's Notes

  1. Welcome to A Case Study of Batch Processing With Spring Cloud Data Flow Server in Cloud Foundry Will be presenting lessons learned by the my team while executing a replatforming of an existing product in my company’s portfolio We will cover some introductory information leading up to the problem we faced, then the process, Lessons learned, then lastly a demo.
  2. Bruce Thelen Principal Software Architect with CoreLogic in the Innovation Labs department. Based in Austin TX. CoreLogic Vision is to deliver unique property-level insights that power the global real estate economy CoreLogic is currently in a cloud native transformation led by the Innovation Labs Department. Started nearly 4 years ago at Pivotal SF. New product development, porting, refreshing, or redoing certain product lines Cloud native patterns on Pivotal Cloud Foundry RiskMeter RiskMeter is a product for insurance underwriters to assess natural hazard risk to insured properties. Delivers a variety of CoreLogic and third party analytics such as Flood, Wildfire, Earthquake Risk, as well as hosted customer data such as rating territories, blackout zones, etc. Legacy version of RiskMeter serves thousand of customers daily via a web application and API which are hosted on Windows 2000 server written in VB6 and VB.Net with ASP classic. Location based application using a combination of Google Maps API and custom map layers developed by CoreLogic RiskMeter is a web application and API Angular frontend and mostly monolithic Spring Boot backend deployed on Cloud Foundry Mostly stateless back end Zero downtime deployed using a blue green deploy technique
  3. While executing this replatforming, the team discovered the need for recreating the legacy application’s batch processing features. Not only was this feature in the Legacy RiskMeter application, but logs showed it was used and user interviews showed its value insurance portfolio review tool - re-insurance for example Writing multiple location policies Typical batch sizes of 5-10K. Legacy capped at 5K, but users remarked they sometimes had to break up their batches into multiple pieces. Design principles for our batch implementation Fit our cloud native paradigm including 12 factor application (https://12factor.net/) Running batches should be resilient and independent of software releases, etc. At this point, Innovation Labs had done mostly web applications and Stateless API’s so this was new territory for us.
  4. This feature is a basic upload file -> process file -> download output style workflow Designers came up with a workflow like this
  5. Choose Products
  6. We needed to pick some technology to provide the capabilities we need. Cloud Foundry and Spring were givens because they are our Platform of choice and the framework we are already using for our app back end. Given that we are heavily invested in Spring, we looked at Spring Batch, which was a good fit Provides a mechanism for composing steps to make repeatable bulk processing jobs. But adding Spring Batch to our mostly monolithic backend did not quite meet our design principles Mostly stateless backend which is zero downtime deployed As the long running batches would be interrupted by our web application updates, thus either breaking resiliency or restricting our ability to deploy at will. We realized we need to run our Spring Batch outside of our web application, but still within cloud. Here is my code… Our research at this point let us to Spring Cloud Data Flow ServerSpring Cloud Data Flow Server http://cloud.spring.io/spring-cloud-dataflow/ Deploy pipelines onto modern runtimes such as Cloud Foundry, Kubernetes, Apache Mesos or Apache YARN Keeps the repository of the task definitions, starts tasks, reports status of tasks, etc. Spring Cloud Deployer SPI for Cloud Foundry https://github.com/spring-cloud/spring-cloud-deployer Does this as tasks or streams Spring Cloud Task Pivotal Cloud Foundry Tasks Version 1.9+ with tasks enabled via feature flag https://docs.cloudfoundry.org/devguide/using-tasks.html Tasks are short running processes within Cloud Foundry Tasks run in their own containers After a task runs, Cloud Foundry destroys the container running the task.
  7. Application at this point a web application with Angular frontend and mostly monolithic Spring Boot backend Chose to implement the processing in the monolith, decompose into separate jars in the same monolith, and lastly repackage those jars into separate apps. Single Application Single Application with Namespaces Single Application and Components Multiple Applications and Components Multiple Applications, Components and Services
  8. Steps Implement Batch Processing In place Feature flagged the batch features so we could work on master Using Spring Batch in backend monolith -- Implemented entire features in monolith, frontend and backend. Add spring boot starter for spring batch @EnableBatchProcessing Create BatchConfiguration to define the steps to take read input, process, write output Create service to start batch – JobLauncher.run Progress bar -- Use STOMP over WebSocket to power the progress bar Add AMQP starter Add web socket starter Bind to RabbitMQ Register STOMP endpoints Include front end ng2-stompjs https://stomp-js.github.io/ng2-stompjs/ Segregate the parts of the code that need to run as a batch into a separate code module and jar to be used in web application monolith Multiple Applications and Components of http://www.appcontinuum.io/ Create new Spring Boot Command Line app that gets @EnableBatchProcessing, @EnableTask, and includes same batch jar Stand up Spring Cloud Data Flow Server via a Blue/Green Jenkins Pipeline Create application definition in SCDF Type is task Call SCDF with instructions to start batch from Web application Automate deployment at each step of the process
  9. Dell EMC ECS S3 appliance
  10. Deployment – adding app registration step Passing data between the systems Injecting configuration
  11. SCDF is not responsible for storing the task executable. It only holds a pointer to the code to be run Which is why the shell calls this “app register” It knows three schemes: Maven URL HTTP URL Local files – no really useful for production deployments Can use GUI Command shell API Java Client We found API easiest to script out
  12. Prior to this split, here is how our deployment pipeline went Configuration was tested via Spring Context. Smoke test provided by PM Smoke testing is crucial due to the need for testing configuration At first skipped smoke testing the batch and left that to PM, this showed it was desirable to test Failures were due to configuration Implemented automated smoke test that executes a null batch Blue green deployment Only logical way we found to do this was to use different names for different versions
  13. Cleanup of tasks in cloud foundry
  14. In order to break the app apart, we needed to determine the best way to pass data between the web and batch components Trying to get enough data to run the job by using the JobLauncher.run giving it a Job and JobParameters We elected to store input file and the analytics to run in a db table, then pass the id to the batch Not always the best pattern but hasn’t hurt us yet.
  15. Here is the code that makes the REST call from the web app to the SCDF to instruct SCDF to start the batch The arguments parameter gets passed on to the Spring Cloud Task which is a Spring CommandLineRunner. Note, we decided on async rest template here to return right away. This startup could be several seconds if the SCDF has to pull the file down from maven repo
  16. As a curl looks like this – note this is what we do in our smoke test as part of deployment, but we leave off that job id.
  17. You now have 3 times the number of applications to configure. In a PCF deployed SpringBoot app, you are configuring two things Container – typically manifest Application – something you have chosen from Spring’s 17 layers of externalized configuration The RM team originally used manifests for both. We had YAGNI over Spring Cloud Config Server. About a month prior to this effort, we moved to Config Server for better secrets protection than our env var based scheme. We were fortunate to have done this because now we had 3 times the number of systems that need configuration Web SCDF Batch Our Scheme would have broken down anyway For the tasks that will get started by the SCDF, you have less control because the Spring Cloud Deployer is starting them. Manifests can’t be used by Spring Cloud Deployer You cannot set ENVIRONMENT variables for your container here. I.e. something used by a buildpack provided jar (APPD for instance) or LOCALDOMAIN ORACLE RAC SCAN (Single Client Access Name) Bottom line, Spring Cloud Config Server helped us securely provide a composable configuration for our 3 apps. We would have likely moved at this point had we not just finished that effort.
  18. Previous CoreLogic projects which implemented homegrown batch processing relied heavily on complex infrastructure, deployment processes (i.e. allocating dedicated VM instances, configuring app servers), and long development cycles. In one case, it took approximately a year to implement a similar system. Using Cloud Foundry, Spring Cloud DataFlow Server, Spring Cloud Task, and Spring Batch, we were able to decompose our app and deploy the batch solution in about two months without having to write custom and complex batch management tooling.