The slide deck to my kick-off keynote at software vendor ANVA's new year on January 10, 2017. This talk covers agile, Scrum, Kanban, continuous delivery, microservices.
6. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 6
Moore’s Law
The number of transistors in a dense integrated circuit doubles approximately every two years.
21. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 21
Microservices
In short, the microservice architectural style is an approach
to developing a single application as a suite of small services,
each running in its own process and communicating with
lightweight mechanisms, often an HTTP resource API.
These services are built around business capabilities and
independently deployable by fully automated deployment
machinery. There is a bare minimum of centralized management
of these services, which may be written in different programming
languages and use different data storage technologies.
Martin Fowler
28. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 28
We implement business processes
We move towards a systems landscape consisting of
micro-applications and micro-components
Requirements are modeled (in smart use cases)
Micro-applications implement a single elementary
business process
Micro-applications and micro-components all have their
own bounded context
Micro-applications do not have storage, and only talk to
other micro-applications and micro-components
Micro-components have their own storage (in
MongoDB), and only talk to other micro-components
Communication uses a simple open protocol – JSON
on REST
We avoid transactions as much as possible
Some guiding principles
35. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 36
Single responsibility principle
Group together things that change together
Separate things that change for different reason
36. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 37
Bounded context
When you model larger domains, it becomes progressively
harder to create this single unified model.
Instead of creating a single unified model, you create
several, all valid within their bounded context
37. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 38
The single unified domain model
Or more often the humongous data model
Product
Vendor
Stock
Order
Client
Delivery
Payment
44. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 48
A development lifecycle
What to test?
Code
Developer
Test
Test
Integration
Test
Acceptance
Test
Live
Prepare
and Design
Developers
Unit tests
Developers
Peer review
Testers
Scenario’s
And API’s
Testers
Scenario’s
and API’s
Product owner
Product
48. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 54
A typical build pipeline
Code
Developer
Test
Test
Integration
Test
Acceptance
Test
Live
Prepare
and Design
49. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 55
ProductionAcceptanceIntegrationTestDevelopment
A typical build pipeline
Traditional (virtual) infrastructure
Code
Developer
Test
Test
Integration
Test
Acceptance
Test
Live
Prepare
and Design
50. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 56
ProductionProvisionedProvisionedProvisionedDevelopment
A typical build pipeline
Provisioned infrastructure (on the fly)
Code
Developer
Test
Test
Integration
Test
Acceptance
Test
Live
Prepare
and Design
51. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 58
Microservices
Building multiple deployment pipelines
Code
Developer
Test
Test
Acceptance
Test
Acceptance Live
Code
Developer
Test
Test
Acceptance
Test
Acceptance Live
Code
Developer
Test
Test
Acceptance
Test
Acceptance Live
Code
Developer
Test
Test
Acceptance
Test
Acceptance Live
59. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 66
Roadmaps over plans
While there is value in the items on the right, we value the items on the left more
61. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 68
Continuous delivery
An approach in which teams ensure that every change to
the system is releasable, and that we can release any
version at the push of a button.
Aimed to make releases boring, so we can deliver
frequently and get fast feedback on what users care about.Jez Humble
63. @aahoogendoorn | www.ditisagile.nlBuilding better software faster 72
The times are a-changin’
How are we going to keep up?
Towards
micro-applications
and microservices
Modeling
requirements
Focus on
core
technologies
Continuous
delivery
Minimal viable
products
Rationalize
our legacy
Domain driven
design
Leverage
the cloud