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

KEY
Cloud tools
PDF
Common design principles and design patterns in automation testing
PDF
Sexy React Stack
PDF
WordCamp, Cape Town 2017
PPT
Cake Php Consultant
PPT
Windy cityrails performance_tuning
PDF
BDD in Java using Cucumber
ODP
Synthetic web performance testing with Selenium
Cloud tools
Common design principles and design patterns in automation testing
Sexy React Stack
WordCamp, Cape Town 2017
Cake Php Consultant
Windy cityrails performance_tuning
BDD in Java using Cucumber
Synthetic web performance testing with Selenium

What's hot (20)

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

Viewers also liked (13)

PPTX
Integration of technology
PDF
Some pictures...
PDF
Do you want to lose weight
PPTX
Edu 2.0 Collaboration Potential
PDF
Laporan cisco
PPTX
Java on Rails SV Code Camp 2014
PDF
Lectura y escritura_de_textos_academicos_y_cientificos_2013
DOCX
Panduan ppdb model b
PPTX
Fairaccess
DOC
Step by step analisa tokyo samurai
PPSX
Do you want to lose weight ppsx
PDF
Inlay onlay cariilas
PPTX
Infección de vias urinarias en pediatria
Integration of technology
Some pictures...
Do you want to lose weight
Edu 2.0 Collaboration Potential
Laporan cisco
Java on Rails SV Code Camp 2014
Lectura y escritura_de_textos_academicos_y_cientificos_2013
Panduan ppdb model b
Fairaccess
Step by step analisa tokyo samurai
Do you want to lose weight ppsx
Inlay onlay cariilas
Infección de vias urinarias en pediatria
Ad

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

PPTX
Spring boot
PDF
Spring Boot
PPTX
WebSphere on Pivotal Cloud Foundry
PDF
JHipster for Spring Boot webinar
PDF
Spring Boot 30 Crash Course Mastering Spring Boot From Application Developmen...
PPTX
Spring boot
PDF
Pivotal spring boot-cloud workshop
PDF
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
ODP
Xke spring boot
PPTX
Spring boot for buidling microservices
PPT
"Spring Boot. Boot up your development" Сергей Моренец
PDF
Teaching Elephants to Dance (and Fly!): A Developer's Journey to Digital Tran...
PPTX
Spring-Boot-A-Modern-Framework-for-Java-Developers.pptx
PDF
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
PPTX
Spring boot
PDF
How to Architect and Develop Cloud Native Applications
PPT
Spring Boot in Action
PDF
A presentationon SPRING-BOOT and CRUD operation
PDF
Startup Case Study
PDF
SpringBoot
Spring boot
Spring Boot
WebSphere on Pivotal Cloud Foundry
JHipster for Spring Boot webinar
Spring Boot 30 Crash Course Mastering Spring Boot From Application Developmen...
Spring boot
Pivotal spring boot-cloud workshop
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
Xke spring boot
Spring boot for buidling microservices
"Spring Boot. Boot up your development" Сергей Моренец
Teaching Elephants to Dance (and Fly!): A Developer's Journey to Digital Tran...
Spring-Boot-A-Modern-Framework-for-Java-Developers.pptx
12 Factor, or Cloud Native Apps - What EXACTLY Does that Mean for Spring Deve...
Spring boot
How to Architect and Develop Cloud Native Applications
Spring Boot in Action
A presentationon SPRING-BOOT and CRUD operation
Startup Case Study
SpringBoot

Recently uploaded (20)

PDF
Microsoft Office 365 Crack Download Free
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PPTX
Computer Software - Technology and Livelihood Education
PDF
Autodesk AutoCAD Crack Free Download 2025
PDF
DNT Brochure 2025 – ISV Solutions @ D365
PDF
Visual explanation of Dijkstra's Algorithm using Python
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
Time Tracking Features That Teams and Organizations Actually Need
PPTX
GSA Content Generator Crack (2025 Latest)
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
AI/ML Infra Meetup | LLM Agents and Implementation Challenges
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
PPTX
Cybersecurity: Protecting the Digital World
PDF
Cost to Outsource Software Development in 2025
PPTX
Tech Workshop Escape Room Tech Workshop
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PPTX
Introduction to Windows Operating System
Microsoft Office 365 Crack Download Free
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
Computer Software - Technology and Livelihood Education
Autodesk AutoCAD Crack Free Download 2025
DNT Brochure 2025 – ISV Solutions @ D365
Visual explanation of Dijkstra's Algorithm using Python
Advanced SystemCare Ultimate Crack + Portable (2025)
Why Generative AI is the Future of Content, Code & Creativity?
Time Tracking Features That Teams and Organizations Actually Need
GSA Content Generator Crack (2025 Latest)
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
AI/ML Infra Meetup | LLM Agents and Implementation Challenges
Monitoring Stack: Grafana, Loki & Promtail
How Tridens DevSecOps Ensures Compliance, Security, and Agility
Cybersecurity: Protecting the Digital World
Cost to Outsource Software Development in 2025
Tech Workshop Escape Room Tech Workshop
How to Use SharePoint as an ISO-Compliant Document Management System
Introduction to Windows Operating System

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

  • #8: 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.
  • #9: How can you know everything when I tell you nothing?
  • #12: This is just testimony to the fact that the underlying framework was useful
  • #15: 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).