SlideShare a Scribd company logo
Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a
Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Real-World Boot-Up Sequences:
QuickBooks Self-Employed
By Tim Hobson – Engineer @
About Me
• Software Developer with a bad habit of leveraging
frameworks
• Not a fan of re-inventing wheels every project
• Still believe you can move fast with good
architecture
2
so old
About Our Product
3
Providing financial management
and compliance solutions for the
Self-Employed in the US and
(soon) globally.
Launched this year and
continuously releasing new
functionality.
very new
Context – In the Beginning…
New to the world offering,
evolving product features
Be ready to pivot, pivot, and
pivot again
4
very
ambitious
0 customers, aspirations
of millions
0 lines of code
Aggressive timeline for
initial release
Proven scale-ability,
extensibility required
No legacy, but need to
establish patterns early
Dev/Ops Productivity
essential
My Requirements
5
such
needs
Powerful AND Simple?
6
?so
inconceivable
Tell us about your experiences with Spring Boot?
• No XML Config? No web.xml?
• Started prototyping with v0.5
• Bugs found, worked around
them
• Engaged with Spring Team
• Saw continual improvement
• …
7
such
promise
Growing Pains
• WAR-based deployment
• myBatis Spring
• Understanding magic (Source debugging)
• @Conditional* …
• Cost-benefit analysis of defying convention
• Security customizations
• Web Sockets through multiple routers, apache httpd
8
concern
Tell us about your experiences with Spring Boot?
Cont’d
• Decided to adopt and GO
• Great Success!
• In production since May
• Rolling out new features every few
weeks
• Just released mobile companion
apps
9
amaze
Observations on what made it work
• Sample apps, documentation
• Enthusiasm, Evangelism and Direction from the Spring team
• Accessible source code with tests you can run!
• Developer inclusion in the process – ideas, contributions, fixes
• Truly no xml configuration – ever, as promised
• Massively simplified POMs
• Developer productivity
• Magic
• I would take this framework with me…
10
wow
On The Shoulders of Giants…
• General
– @EnableAutoConfiguration
– @EnableConfigurationProperties
– YAML Configuration & Profiles
– “Starter” Dependency Management
– Boot Actuator
– ResourceBundleMessageSource
– @Aspect
– @EnableAspectJAutoProxy
– @EnableTransactionManagement
– @PersistenceContext
– @EnableJpaRepositories
– @Async
– @EnableAsync
• Web
– @EnableMvcSecurity
– @EnableWebMvcSecurity
– @EnableWebSocketMessageBroker
– @ControllerAdvice
– @ModelAttribute
– @ExceptionHandler
– SpringBootServletInitializer
• Batch
– CRaSH ssh
– @EnableBatchProcessing
– @EnableScheduling
– @Scheduled
– @Job
11
so
enabled
What we configured/overrode/extended/built
• General
• Data Migration (flywaydb)
• JpaVendorAdapter &
EntityManagerFactory
• Batch
• Always-on Batch process with @Scheduled
jobs
• On-demand batch job execution using
CRaSH groovy commands
• Security
• CSRF support for AngularJS
(HttpSessionCsrfTokenRepository)
• Custom Identity/Auth provider for Spring
Security
• Hybrid Thymeleaf + Angular UI
• REST Authentication/Authorization
• Session Expiry, Authentication Failure,
AccessDenied Handler
• Web
• Container Customization (error pages)
• Unsupported Browser handling
• JS Min/SASS Build integration for Maven
(exec-maven) calling compass and uglify
• Static asset versioning (git.properties)
12
such
customize
Dev/Ops
• Actuator security
• Custom HealthIndicator
• Custom Admin web console (leveraging Actuator
APIs, custom health checks) for ops and
customer support
• SLF4J Logging with Logback and Splunk-friendly
output
• Server-side error logging for Angular client
• On-demand user-level debug logging
• Memcache session storage to support
automated rolling deployments
13
very
sudo
Testing – Mocks and “System” Testing
14
@EnableAutoConfiguration
@Profile("test")
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(H2).build();
}
@ActiveProfiles("test")
@WebAppConfiguration
@SpringApplicationConfiguration(classes={ApplicationConfig.class, TestConfig.class})
…
public class UserControllerTest extends AbstractTestNGSpringContextTests {
private MockMvc mvc;
@BeforeClass
public void setUp() {
this.mvc = MockMvcBuilders.webAppContextSetup(this.context).build();
}
@Mock
private Authentication authentication;
…
@BeforeTest
public void setUp() {
MockitoAnnotations.initMocks(this);
}
such
ease
What’s Next?
15
Reactor
AMQP (RabbitMQ)
spring-session
Spring IO
Thanks!
Questions?
16
@hoserdude
@hoserdude
@hoserdude
hoserdude.com

More Related Content

What's hot

Testing Any Site With Cucumber and Selenium
Testing Any Site With Cucumber and SeleniumTesting Any Site With Cucumber and Selenium
Testing Any Site With Cucumber and Selenium
Chris Johnson
 
Modern Front End Tools & Workflow
Modern Front End Tools & WorkflowModern Front End Tools & Workflow
Modern Front End Tools & Workflow
Adir Amsalem
 
Speed = $$$
Speed = $$$Speed = $$$
Speed = $$$
Peter Gfader
 
React & Redux, how to scale?
React & Redux, how to scale?React & Redux, how to scale?
React & Redux, how to scale?
KMS Technology
 
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
KMS Technology
 
Yeoman
YeomanYeoman
Profilling client performance
Profilling client performanceProfilling client performance
Profilling client performance
Sérgio Laranjeira
 
Client side production monitoring using - SyncApp Tool
Client side production monitoring using - SyncApp ToolClient side production monitoring using - SyncApp Tool
Client side production monitoring using - SyncApp Tool
Bhupesh Pant
 
Step by Step Guide on Lazy Loading in Angular 11
Step by Step Guide on Lazy Loading in Angular 11Step by Step Guide on Lazy Loading in Angular 11
Step by Step Guide on Lazy Loading in Angular 11
Katy Slemon
 
Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011
dimakovalenko
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
Brian Ritchie
 
Client Side Performance @ Xero
Client Side Performance @ XeroClient Side Performance @ Xero
Client Side Performance @ Xero
Craig Walker
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and Mocha
Atish Narlawar
 
Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)
Alexis Williams
 
Oscon 2013 -Your OSS Project Is now served
Oscon 2013 -Your OSS Project Is now servedOscon 2013 -Your OSS Project Is now served
Oscon 2013 -Your OSS Project Is now served
Uri Cohen
 
STP 2014 - Lets Learn from the Top Performance Mistakes in 2013
STP 2014 - Lets Learn from the Top Performance Mistakes in 2013STP 2014 - Lets Learn from the Top Performance Mistakes in 2013
STP 2014 - Lets Learn from the Top Performance Mistakes in 2013
Andreas Grabner
 
Test Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaTest Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and Mocha
Salesforce Developers
 
Client-Side Performance Testing
Client-Side Performance TestingClient-Side Performance Testing
Client-Side Performance Testing
Anand Bagmar
 
ASP.NET 5 & Unit Testing
ASP.NET 5 & Unit TestingASP.NET 5 & Unit Testing
ASP.NET 5 & Unit Testing
Shahed Chowdhuri
 
WordPress London Developer Operations For Beginners
WordPress London Developer Operations For BeginnersWordPress London Developer Operations For Beginners
WordPress London Developer Operations For Beginners
Stewart Ritchie
 

What's hot (20)

Testing Any Site With Cucumber and Selenium
Testing Any Site With Cucumber and SeleniumTesting Any Site With Cucumber and Selenium
Testing Any Site With Cucumber and Selenium
 
Modern Front End Tools & Workflow
Modern Front End Tools & WorkflowModern Front End Tools & Workflow
Modern Front End Tools & Workflow
 
Speed = $$$
Speed = $$$Speed = $$$
Speed = $$$
 
React & Redux, how to scale?
React & Redux, how to scale?React & Redux, how to scale?
React & Redux, how to scale?
 
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
 
Yeoman
YeomanYeoman
Yeoman
 
Profilling client performance
Profilling client performanceProfilling client performance
Profilling client performance
 
Client side production monitoring using - SyncApp Tool
Client side production monitoring using - SyncApp ToolClient side production monitoring using - SyncApp Tool
Client side production monitoring using - SyncApp Tool
 
Step by Step Guide on Lazy Loading in Angular 11
Step by Step Guide on Lazy Loading in Angular 11Step by Step Guide on Lazy Loading in Angular 11
Step by Step Guide on Lazy Loading in Angular 11
 
Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 
Client Side Performance @ Xero
Client Side Performance @ XeroClient Side Performance @ Xero
Client Side Performance @ Xero
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and Mocha
 
Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)
 
Oscon 2013 -Your OSS Project Is now served
Oscon 2013 -Your OSS Project Is now servedOscon 2013 -Your OSS Project Is now served
Oscon 2013 -Your OSS Project Is now served
 
STP 2014 - Lets Learn from the Top Performance Mistakes in 2013
STP 2014 - Lets Learn from the Top Performance Mistakes in 2013STP 2014 - Lets Learn from the Top Performance Mistakes in 2013
STP 2014 - Lets Learn from the Top Performance Mistakes in 2013
 
Test Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaTest Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and Mocha
 
Client-Side Performance Testing
Client-Side Performance TestingClient-Side Performance Testing
Client-Side Performance Testing
 
ASP.NET 5 & Unit Testing
ASP.NET 5 & Unit TestingASP.NET 5 & Unit Testing
ASP.NET 5 & Unit Testing
 
WordPress London Developer Operations For Beginners
WordPress London Developer Operations For BeginnersWordPress London Developer Operations For Beginners
WordPress London Developer Operations For Beginners
 

Viewers also liked

Integration of technology
Integration of technologyIntegration of technology
Integration of technology
Gilberto1121
 
Some pictures...
Some pictures...Some pictures...
Some pictures...
photilus
 
Edu 2.0 Collaboration Potential
Edu 2.0 Collaboration PotentialEdu 2.0 Collaboration Potential
Edu 2.0 Collaboration Potentiallahadley
 
Java on Rails SV Code Camp 2014
Java on Rails SV Code Camp 2014Java on Rails SV Code Camp 2014
Java on Rails SV Code Camp 2014
Tim Hobson
 
Lectura y escritura_de_textos_academicos_y_cientificos_2013
Lectura y escritura_de_textos_academicos_y_cientificos_2013Lectura y escritura_de_textos_academicos_y_cientificos_2013
Lectura y escritura_de_textos_academicos_y_cientificos_2013
Fiorella Yesenia Tintaya Tintaya
 
Panduan ppdb model b
Panduan ppdb model bPanduan ppdb model b
Panduan ppdb model boriza Sativa
 
Fairaccess
FairaccessFairaccess
Fairaccess
aafaf ouaddah
 
Step by step analisa tokyo samurai
Step by step analisa tokyo samuraiStep by step analisa tokyo samurai
Step by step analisa tokyo samuraiFachri Saviola
 
Do you want to lose weight ppsx
Do you want to lose weight ppsxDo you want to lose weight ppsx
Do you want to lose weight ppsxnewyousupplements
 
Inlay onlay cariilas
Inlay onlay cariilasInlay onlay cariilas
Inlay onlay cariilas
Fiorella Yesenia Tintaya Tintaya
 
Infección de vias urinarias en pediatria
Infección de vias urinarias en pediatriaInfección de vias urinarias en pediatria
Infección de vias urinarias en pediatria
IMSS/R1 PEDIATRIA
 

Viewers also liked (13)

Integration of technology
Integration of technologyIntegration of technology
Integration of technology
 
Some pictures...
Some pictures...Some pictures...
Some pictures...
 
Do you want to lose weight
Do you want to lose weightDo you want to lose weight
Do you want to lose weight
 
Edu 2.0 Collaboration Potential
Edu 2.0 Collaboration PotentialEdu 2.0 Collaboration Potential
Edu 2.0 Collaboration Potential
 
Laporan cisco
Laporan ciscoLaporan cisco
Laporan cisco
 
Java on Rails SV Code Camp 2014
Java on Rails SV Code Camp 2014Java on Rails SV Code Camp 2014
Java on Rails SV Code Camp 2014
 
Lectura y escritura_de_textos_academicos_y_cientificos_2013
Lectura y escritura_de_textos_academicos_y_cientificos_2013Lectura y escritura_de_textos_academicos_y_cientificos_2013
Lectura y escritura_de_textos_academicos_y_cientificos_2013
 
Panduan ppdb model b
Panduan ppdb model bPanduan ppdb model b
Panduan ppdb model b
 
Fairaccess
FairaccessFairaccess
Fairaccess
 
Step by step analisa tokyo samurai
Step by step analisa tokyo samuraiStep by step analisa tokyo samurai
Step by step analisa tokyo samurai
 
Do you want to lose weight ppsx
Do you want to lose weight ppsxDo you want to lose weight ppsx
Do you want to lose weight ppsx
 
Inlay onlay cariilas
Inlay onlay cariilasInlay onlay cariilas
Inlay onlay cariilas
 
Infección de vias urinarias en pediatria
Infección de vias urinarias en pediatriaInfección de vias urinarias en pediatria
Infección de vias urinarias en pediatria
 

Similar to Real-World Boot-Up Sequences - QuickBooks Self-Employed

Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverless
Christian Posta
 
How Open Source Embiggens Salesforce.com
How Open Source Embiggens Salesforce.comHow Open Source Embiggens Salesforce.com
How Open Source Embiggens Salesforce.com
Salesforce Engineering
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf
 
Keeping Pace with Product Evolution - UI Automation Framework Guidelines
Keeping Pace with Product Evolution - UI Automation Framework GuidelinesKeeping Pace with Product Evolution - UI Automation Framework Guidelines
Keeping Pace with Product Evolution - UI Automation Framework Guidelines
Tyto Software
 
Sidecars and a Microservices Mesh
Sidecars and a Microservices MeshSidecars and a Microservices Mesh
Sidecars and a Microservices Mesh
Red Hat Developers
 
Microservices Journey Fall 2017
Microservices Journey Fall 2017Microservices Journey Fall 2017
Microservices Journey Fall 2017
Christian Posta
 
Beyond DevOps - How Netflix Bridges the Gap
Beyond DevOps - How Netflix Bridges the GapBeyond DevOps - How Netflix Bridges the Gap
Beyond DevOps - How Netflix Bridges the Gap
Josh Evans
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014
Clever Moe
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
Vadym Kazulkin
 
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO ForumChris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
Mat Mannion
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
Aviran Mordo
 
OpenValue Vienna meetup september 2020 - Better software, faster: Principles ...
OpenValue Vienna meetup september 2020 - Better software, faster: Principles ...OpenValue Vienna meetup september 2020 - Better software, faster: Principles ...
OpenValue Vienna meetup september 2020 - Better software, faster: Principles ...
Bert Jan Schrijver
 
Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...
Vadym Kazulkin
 
Scaling agile
Scaling agileScaling agile
Scaling agile
Askhat Urazbaev
 
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352sflynn073
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
Amazon Web Services
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Vadym Kazulkin
 
The unintended benefits of Chef
The unintended benefits of ChefThe unintended benefits of Chef
The unintended benefits of Chef
Chef Software, Inc.
 

Similar to Real-World Boot-Up Sequences - QuickBooks Self-Employed (20)

Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverless
 
How Open Source Embiggens Salesforce.com
How Open Source Embiggens Salesforce.comHow Open Source Embiggens Salesforce.com
How Open Source Embiggens Salesforce.com
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
 
Keeping Pace with Product Evolution - UI Automation Framework Guidelines
Keeping Pace with Product Evolution - UI Automation Framework GuidelinesKeeping Pace with Product Evolution - UI Automation Framework Guidelines
Keeping Pace with Product Evolution - UI Automation Framework Guidelines
 
Sidecars and a Microservices Mesh
Sidecars and a Microservices MeshSidecars and a Microservices Mesh
Sidecars and a Microservices Mesh
 
Microservices Journey Fall 2017
Microservices Journey Fall 2017Microservices Journey Fall 2017
Microservices Journey Fall 2017
 
Beyond DevOps - How Netflix Bridges the Gap
Beyond DevOps - How Netflix Bridges the GapBeyond DevOps - How Netflix Bridges the Gap
Beyond DevOps - How Netflix Bridges the Gap
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO ForumChris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
 
Introduction to Apex Triggers
Introduction to Apex TriggersIntroduction to Apex Triggers
Introduction to Apex Triggers
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
 
OpenValue Vienna meetup september 2020 - Better software, faster: Principles ...
OpenValue Vienna meetup september 2020 - Better software, faster: Principles ...OpenValue Vienna meetup september 2020 - Better software, faster: Principles ...
OpenValue Vienna meetup september 2020 - Better software, faster: Principles ...
 
Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...
 
Scaling agile
Scaling agileScaling agile
Scaling agile
 
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
 
The unintended benefits of Chef
The unintended benefits of ChefThe unintended benefits of Chef
The unintended benefits of Chef
 

Recently uploaded

OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 

Recently uploaded (20)

OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 

Real-World Boot-Up Sequences - QuickBooks Self-Employed

  • 1. Unless otherwise indicated, these slides are © 2013-2014 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ Real-World Boot-Up Sequences: QuickBooks Self-Employed By Tim Hobson – Engineer @
  • 2. About Me • Software Developer with a bad habit of leveraging frameworks • Not a fan of re-inventing wheels every project • Still believe you can move fast with good architecture 2 so old
  • 3. About Our Product 3 Providing financial management and compliance solutions for the Self-Employed in the US and (soon) globally. Launched this year and continuously releasing new functionality. very new
  • 4. Context – In the Beginning… New to the world offering, evolving product features Be ready to pivot, pivot, and pivot again 4 very ambitious 0 customers, aspirations of millions 0 lines of code Aggressive timeline for initial release Proven scale-ability, extensibility required No legacy, but need to establish patterns early Dev/Ops Productivity essential
  • 7. Tell us about your experiences with Spring Boot? • No XML Config? No web.xml? • Started prototyping with v0.5 • Bugs found, worked around them • Engaged with Spring Team • Saw continual improvement • … 7 such promise
  • 8. Growing Pains • WAR-based deployment • myBatis Spring • Understanding magic (Source debugging) • @Conditional* … • Cost-benefit analysis of defying convention • Security customizations • Web Sockets through multiple routers, apache httpd 8 concern
  • 9. Tell us about your experiences with Spring Boot? Cont’d • Decided to adopt and GO • Great Success! • In production since May • Rolling out new features every few weeks • Just released mobile companion apps 9 amaze
  • 10. Observations on what made it work • Sample apps, documentation • Enthusiasm, Evangelism and Direction from the Spring team • Accessible source code with tests you can run! • Developer inclusion in the process – ideas, contributions, fixes • Truly no xml configuration – ever, as promised • Massively simplified POMs • Developer productivity • Magic • I would take this framework with me… 10 wow
  • 11. On The Shoulders of Giants… • General – @EnableAutoConfiguration – @EnableConfigurationProperties – YAML Configuration & Profiles – “Starter” Dependency Management – Boot Actuator – ResourceBundleMessageSource – @Aspect – @EnableAspectJAutoProxy – @EnableTransactionManagement – @PersistenceContext – @EnableJpaRepositories – @Async – @EnableAsync • Web – @EnableMvcSecurity – @EnableWebMvcSecurity – @EnableWebSocketMessageBroker – @ControllerAdvice – @ModelAttribute – @ExceptionHandler – SpringBootServletInitializer • Batch – CRaSH ssh – @EnableBatchProcessing – @EnableScheduling – @Scheduled – @Job 11 so enabled
  • 12. What we configured/overrode/extended/built • General • Data Migration (flywaydb) • JpaVendorAdapter & EntityManagerFactory • Batch • Always-on Batch process with @Scheduled jobs • On-demand batch job execution using CRaSH groovy commands • Security • CSRF support for AngularJS (HttpSessionCsrfTokenRepository) • Custom Identity/Auth provider for Spring Security • Hybrid Thymeleaf + Angular UI • REST Authentication/Authorization • Session Expiry, Authentication Failure, AccessDenied Handler • Web • Container Customization (error pages) • Unsupported Browser handling • JS Min/SASS Build integration for Maven (exec-maven) calling compass and uglify • Static asset versioning (git.properties) 12 such customize
  • 13. Dev/Ops • Actuator security • Custom HealthIndicator • Custom Admin web console (leveraging Actuator APIs, custom health checks) for ops and customer support • SLF4J Logging with Logback and Splunk-friendly output • Server-side error logging for Angular client • On-demand user-level debug logging • Memcache session storage to support automated rolling deployments 13 very sudo
  • 14. Testing – Mocks and “System” Testing 14 @EnableAutoConfiguration @Profile("test") @Bean public DataSource dataSource() { return new EmbeddedDatabaseBuilder().setType(H2).build(); } @ActiveProfiles("test") @WebAppConfiguration @SpringApplicationConfiguration(classes={ApplicationConfig.class, TestConfig.class}) … public class UserControllerTest extends AbstractTestNGSpringContextTests { private MockMvc mvc; @BeforeClass public void setUp() { this.mvc = MockMvcBuilders.webAppContextSetup(this.context).build(); } @Mock private Authentication authentication; … @BeforeTest public void setUp() { MockitoAnnotations.initMocks(this); } such ease

Editor's Notes

  1. v0.5 used to prototype and evaluate both Web and Batch use cases Bugs found when moving past “Hello World” scenarios, worked around them Found an engaged Spring development team that responded often and quickly to questions, enhancement requests and bugs (SO, github) Every Milestone release allowed us to remove workarounds, let Boot do it’s job. We decided we could take a risk and ship with it before GA Shipped first production release within one week of 1.0 Release Team constantly surprised at how quickly we can develop new features. Developed Android and iOS clients leveraging existing web (REST) tier.
  2. How can you know everything when I tell you nothing?
  3. This is just testimony to the fact that the underlying framework was useful
  4. AutoConfiguration works just as well in a testing context – in fact it’s a great way to learn about what to override, and what to leave alone. Leveraging an embedded DB is also a great way to run standalone system tests that don’t rely on a running/hosted DB. Mock your other dependencies and framework managed object (like services, contexts).