SlideShare a Scribd company logo
bertjan@jpoint.nl
Microservices in action
at the Dutch National Police
Bert Jan Schrijver
@bjschrijver
Bert Jan Schrijver
L e t โ€™ s m e e t
@bjschrijver
Architecture and
platform
Frontend
Methodology
and culture
Introduction
Development and
testing
Build tools, deployments
and running in production
Challenges and
looking ahead
Outline
W h a t โ€˜ s n e x t ?
Backend
The police protects the
democracy, maintains the law
and is the authority on the
streets. Around 65.000 people
work at the Dutch police, of
which over 1500 IT
professionals.
Dutch National Police
CLOUD
PLATFORM
ANALYSE
PATRONEN
BIG DATA
SECURITY3 DevOps teams are building
high tech big data web
applications in a private cloud
environment. These
applications support police
related themes.
Product line
Cloud | Big Data | Internet
Methodology and culture
โ€ข 3 teams with separate backlogs
โ€ข Overall planning at start of sprint
โ€ข Minimal planning ritual
โ€ข Usability tests as part of sprint
โ€ข Phabricator as tool of choice
Methodology
โ€ข Continuous Delivery & DevOps
โ€ข Short feedback loops
โ€ข Embrace change
โ€ข Minimal dependencies outside team
โ€ข Invest in people, not in products
โ€ข Open, transparent, verifiable
Culture
Source: http://kids.nationalgeographic.com/explore/countries/netherlands/#netherlands-tulip-fields.jpg
Architecture and platform
โ€ข End-to-end security and encryption
โ€ข Version control for everything
โ€ข Horizontally scalable, no single point of failure
โ€ข No dependencies on external sources
โ€ข Standardised naming
โ€ข Application config lives with code
โ€ข Services defined by business functionality
Architecture
Architecture
Current architecture
Current architecture
Current architecture
Current architecture
Current architecture
Current architecture
Current architecture
Current architecture
Source: https://www.google.com/about/datacenters
โ€ข Openstack private cloud
โ€ข General cloud services for police โ€จ
organisation
โ€ข Ceph distributed storage
โ€ข Puppet & Ansible for config management
โ€ข 3000 managed desktops
โ€ข Automation starts when hardware boots
Platform
Frontend
โ€ข Angular 2.x
โ€ข Typescript
โ€ข RxJS
โ€ข Bootstrap
โ€ข Responsive design
โ€ข Feature toggles
โ€ข Graceful degradation when backend fails
Frontend
Backend
โ€ข Small in size, single responsibility
โ€ข Runs in its own process
โ€ข Independently develop, deploy, upgrade, scale
โ€ข Has its own data store
โ€ข Distributed by default
โ€ข Potentially heterogeneous/polyglot
โ€ข Light-weight communication
Anatomy of a microservice
โ€ข Spring Boot, Java 8, Maven
โ€ข Stateless
โ€ข 1 service in 1 jar on 1 JVM on 1 host
โ€ข Now: high available via Openstack load balancers
โ€ข Future: move from LBโ€™s to service discovery
โ€ข Minimal amount of shared code:
โ€ข Security
โ€ข Logging and metrics
Backend
Development and testing
โ€ข Local environment runs only the
component(s) that are being developed
โ€ข For other components, local env connects
to development env on Openstack
โ€ข Feature branch based development
โ€ข Master branch must always be releasable
Development
โ€ข Unit tests: JUnit, Karma
โ€ข Mutation tests with PIT
โ€ข Service/integration tests: Spring boot
integration, embedded in-memory data
stores, REST assured
โ€ข End-to-end test: Protractor
โ€ข Load tests: Gatling
Testing
Build tools, deployments
and running in production
โ€ข Gitlab
โ€ข Jenkins with Docker swarm slave nodes
โ€ข Jenkins 2 pipelines
โ€ข Nexus
โ€ข Sonar
Build tools
โ€ข Every push to master is a release
โ€ข Config is embedded in executable jar
โ€ข Deployments via Rundeck and Puppet
โ€ข Development: deploy on commit
โ€ข Everything from dev -> acc during sprint
โ€ข Everything from acc -> prod after sprint
โ€ข Single service dev -> acc -> prod when needed
Deployments
โ€ข Logging and dashboards via Graylog
โ€ข Metrics:
โ€ข Spring Boot actuator
โ€ข Grafana
โ€ข Kafka stats via Burrow
โ€ข Monitoring via Sensu and Flapjack
Running in production
Photo: Dave Lehl
Challenges and looking ahead
Challenges
01
Share as little as possible; prefer
duplication over coupling.
Sharing code between services
04Authentication and authorisation
happen at every request. Find the
balance between performance and
security.
Running stateless has a cost
When moving fast,
donโ€™t forget to finish up before
starting something new.
Switching focus has a cost
06
Throwing something away and
starting over can work out better
than refactoring.
Donโ€™t be afraid to rebuild03
Microservices are not just for the
backend. Modularity is just as
imported on the frontend.
Monolithic frontend
02
Minimalize dependencies on
other teams, or it will slow you
down.
Cross functional team
composition is vital
05
and lessons learned
Looking ahead
Upgrades and fixes without users even
noticing.
0-downtime deployments
Our plans for the (near) future.
@bjschrijver
Cross-functional teams with vertical
(full stack) responsibilities.
Product teams
Split the frontend in products and re-
usable components.
Modular frontend
There is no silver bullet here, but useful
tools and practices do exist.
Automated security testing
Get the teams the information they
need, but only when they need it.
Better dashboards and alerting
Questions?
@bjschrijver
Thanks for your time.
Got feedback? Tweet it!
All pictures belong
to their respective
authors
@bjschrijver

More Related Content

PDF
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
PDF
Devoxx PL 2018 - Microservices in action at the Dutch National Police
PDF
GeekOut 2017 - Microservices in action at the Dutch National Police
PDF
CodeMotion Amsterdam 2018 - Microservices in action at the Dutch National Police
PDF
JBCNConf 2017 - Building microservices with Vert.x
PPTX
Devops online training ppt
PDF
Monitoring Serverless Applications with Datadog
PDF
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
Devoxx PL 2018 - Microservices in action at the Dutch National Police
GeekOut 2017 - Microservices in action at the Dutch National Police
CodeMotion Amsterdam 2018 - Microservices in action at the Dutch National Police
JBCNConf 2017 - Building microservices with Vert.x
Devops online training ppt
Monitoring Serverless Applications with Datadog
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...

What's hot (19)

PPTX
Micro Services Architecture
PDF
AWS Big Data in everyday use at Yle
PPTX
AWS Finland March meetup 2017 - selecting enterprise IoT platform
PDF
Microservices: The Best Practices
PPTX
Operating a High Velocity Large Organization with Spring Cloud Microservices
PPTX
Application Performance Management
PPTX
Advanced python
PPTX
Avoid SPOF in Cloud-native Apps
PPTX
Changing the Game with Cloud, Microservices, and DevOps
PDF
Control and monitor_microservices_with_microprofile
PDF
Introduction to developing modern web apps
PPTX
Real-Time Design Patterns
PPTX
20160609 nike techtalks reactive applications tools of the trade
PDF
APIdays Paris 2018 - Deliver API Updates in Real Time with Mercure.rocks Kรฉvi...
ย 
PPTX
Protecting Your IP with Perforce Helix and Interset
PPTX
Splunk Quick Overview for Emirates Travel Hackathon
PDF
Dynatrace - Red Hat workshop : Monolith to Microservices
PPTX
Quick Tour On Zeppelin
PPTX
Managing Microservices at Scale
Micro Services Architecture
AWS Big Data in everyday use at Yle
AWS Finland March meetup 2017 - selecting enterprise IoT platform
Microservices: The Best Practices
Operating a High Velocity Large Organization with Spring Cloud Microservices
Application Performance Management
Advanced python
Avoid SPOF in Cloud-native Apps
Changing the Game with Cloud, Microservices, and DevOps
Control and monitor_microservices_with_microprofile
Introduction to developing modern web apps
Real-Time Design Patterns
20160609 nike techtalks reactive applications tools of the trade
APIdays Paris 2018 - Deliver API Updates in Real Time with Mercure.rocks Kรฉvi...
ย 
Protecting Your IP with Perforce Helix and Interset
Splunk Quick Overview for Emirates Travel Hackathon
Dynatrace - Red Hat workshop : Monolith to Microservices
Quick Tour On Zeppelin
Managing Microservices at Scale
Ad

Similar to J-Spring 2017 - Microservices in action at the Dutch National Police (20)

PDF
JavaZone 2017 - Microservices in action at the Dutch National Police
PDF
OpenValue meetup October 2017 - Microservices in action at the Dutch National...
PDF
Microservices in action at the Dutch National Police
PDF
Bol.com Tech lab September 2017 - Microservices in action at the Dutch Nation...
PDF
iSense Java Summit 2017 - Microservices in action at the Dutch National Police
PDF
Get There meetup March 2018 - Microservices in action at the Dutch National P...
PDF
Dublin JUG February 2018 - Microservices in action at the Dutch National Police
PDF
Microservices in action at the Dutch National Police - Bert Jan Schrijver - C...
PPTX
Microservices: Yes or not?
PPTX
Technology insights: Decision Science Platform
PDF
SCaLE 16x - Application Monitoring And Tracing In Kubernetes
PDF
QCon 2015 - Microservices Track Notes
PPTX
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
PDF
Consolidating MLOps at One of Europeโ€™s Biggest Airports
PPTX
What serverless means for enterprise apps
PPTX
All about that reactive ui
PPTX
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
PPTX
Design Like a Pro: Planning Enterprise Solutions
PPTX
Design Like a Pro: Planning Enterprise Solutions
PPTX
Tokyo Azure Meetup #4 - Build 2016 Overview
JavaZone 2017 - Microservices in action at the Dutch National Police
OpenValue meetup October 2017 - Microservices in action at the Dutch National...
Microservices in action at the Dutch National Police
Bol.com Tech lab September 2017 - Microservices in action at the Dutch Nation...
iSense Java Summit 2017 - Microservices in action at the Dutch National Police
Get There meetup March 2018 - Microservices in action at the Dutch National P...
Dublin JUG February 2018 - Microservices in action at the Dutch National Police
Microservices in action at the Dutch National Police - Bert Jan Schrijver - C...
Microservices: Yes or not?
Technology insights: Decision Science Platform
SCaLE 16x - Application Monitoring And Tracing In Kubernetes
QCon 2015 - Microservices Track Notes
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
Consolidating MLOps at One of Europeโ€™s Biggest Airports
What serverless means for enterprise apps
All about that reactive ui
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
Design Like a Pro: Planning Enterprise Solutions
Design Like a Pro: Planning Enterprise Solutions
Tokyo Azure Meetup #4 - Build 2016 Overview
Ad

Recently uploaded (20)

PDF
RPKI Status Update, presented by Makito Lay at IDNOG 10
ย 
PPTX
Module 1 - Cyber Law and Ethics 101.pptx
PPTX
June-4-Sermon-Powerpoint.pptx USE THIS FOR YOUR MOTIVATION
PDF
๐Ÿ’ฐ ๐”๐Š๐“๐ˆ ๐Š๐„๐Œ๐„๐๐€๐๐†๐€๐ ๐Š๐ˆ๐๐„๐‘๐Ÿ’๐ƒ ๐‡๐€๐‘๐ˆ ๐ˆ๐๐ˆ ๐Ÿ๐ŸŽ๐Ÿ๐Ÿ“ ๐Ÿ’ฐ
ย 
PDF
The Internet -By the Numbers, Sri Lanka Edition
ย 
PPTX
Introuction about ICD -10 and ICD-11 PPT.pptx
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PDF
Testing WebRTC applications at scale.pdf
PPTX
innovation process that make everything different.pptx
PPTX
Internet___Basics___Styled_ presentation
PPTX
PptxGenJS_Demo_Chart_20250317130215833.pptx
PDF
Unit-1 introduction to cyber security discuss about how to secure a system
PDF
APNIC Update, presented at PHNOG 2025 by Shane Hermoso
ย 
PDF
Paper PDF World Game (s) Great Redesign.pdf
PPTX
INTERNET------BASICS-------UPDATED PPT PRESENTATION
PPTX
international classification of diseases ICD-10 review PPT.pptx
PDF
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PDF
WebRTC in SignalWire - troubleshooting media negotiation
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
RPKI Status Update, presented by Makito Lay at IDNOG 10
ย 
Module 1 - Cyber Law and Ethics 101.pptx
June-4-Sermon-Powerpoint.pptx USE THIS FOR YOUR MOTIVATION
๐Ÿ’ฐ ๐”๐Š๐“๐ˆ ๐Š๐„๐Œ๐„๐๐€๐๐†๐€๐ ๐Š๐ˆ๐๐„๐‘๐Ÿ’๐ƒ ๐‡๐€๐‘๐ˆ ๐ˆ๐๐ˆ ๐Ÿ๐ŸŽ๐Ÿ๐Ÿ“ ๐Ÿ’ฐ
ย 
The Internet -By the Numbers, Sri Lanka Edition
ย 
Introuction about ICD -10 and ICD-11 PPT.pptx
522797556-Unit-2-Temperature-measurement-1-1.pptx
Testing WebRTC applications at scale.pdf
innovation process that make everything different.pptx
Internet___Basics___Styled_ presentation
PptxGenJS_Demo_Chart_20250317130215833.pptx
Unit-1 introduction to cyber security discuss about how to secure a system
APNIC Update, presented at PHNOG 2025 by Shane Hermoso
ย 
Paper PDF World Game (s) Great Redesign.pdf
INTERNET------BASICS-------UPDATED PPT PRESENTATION
international classification of diseases ICD-10 review PPT.pptx
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
Job_Card_System_Styled_lorem_ipsum_.pptx
WebRTC in SignalWire - troubleshooting media negotiation
An introduction to the IFRS (ISSB) Stndards.pdf

J-Spring 2017 - Microservices in action at the Dutch National Police

  • 1. bertjan@jpoint.nl Microservices in action at the Dutch National Police Bert Jan Schrijver @bjschrijver
  • 2. Bert Jan Schrijver L e t โ€™ s m e e t @bjschrijver
  • 3. Architecture and platform Frontend Methodology and culture Introduction Development and testing Build tools, deployments and running in production Challenges and looking ahead Outline W h a t โ€˜ s n e x t ? Backend
  • 4. The police protects the democracy, maintains the law and is the authority on the streets. Around 65.000 people work at the Dutch police, of which over 1500 IT professionals. Dutch National Police
  • 5. CLOUD PLATFORM ANALYSE PATRONEN BIG DATA SECURITY3 DevOps teams are building high tech big data web applications in a private cloud environment. These applications support police related themes. Product line Cloud | Big Data | Internet
  • 7. โ€ข 3 teams with separate backlogs โ€ข Overall planning at start of sprint โ€ข Minimal planning ritual โ€ข Usability tests as part of sprint โ€ข Phabricator as tool of choice Methodology
  • 8. โ€ข Continuous Delivery & DevOps โ€ข Short feedback loops โ€ข Embrace change โ€ข Minimal dependencies outside team โ€ข Invest in people, not in products โ€ข Open, transparent, verifiable Culture Source: http://kids.nationalgeographic.com/explore/countries/netherlands/#netherlands-tulip-fields.jpg
  • 10. โ€ข End-to-end security and encryption โ€ข Version control for everything โ€ข Horizontally scalable, no single point of failure โ€ข No dependencies on external sources โ€ข Standardised naming โ€ข Application config lives with code โ€ข Services defined by business functionality Architecture
  • 20. Source: https://www.google.com/about/datacenters โ€ข Openstack private cloud โ€ข General cloud services for police โ€จ organisation โ€ข Ceph distributed storage โ€ข Puppet & Ansible for config management โ€ข 3000 managed desktops โ€ข Automation starts when hardware boots Platform
  • 22. โ€ข Angular 2.x โ€ข Typescript โ€ข RxJS โ€ข Bootstrap โ€ข Responsive design โ€ข Feature toggles โ€ข Graceful degradation when backend fails Frontend
  • 24. โ€ข Small in size, single responsibility โ€ข Runs in its own process โ€ข Independently develop, deploy, upgrade, scale โ€ข Has its own data store โ€ข Distributed by default โ€ข Potentially heterogeneous/polyglot โ€ข Light-weight communication Anatomy of a microservice
  • 25. โ€ข Spring Boot, Java 8, Maven โ€ข Stateless โ€ข 1 service in 1 jar on 1 JVM on 1 host โ€ข Now: high available via Openstack load balancers โ€ข Future: move from LBโ€™s to service discovery โ€ข Minimal amount of shared code: โ€ข Security โ€ข Logging and metrics Backend
  • 27. โ€ข Local environment runs only the component(s) that are being developed โ€ข For other components, local env connects to development env on Openstack โ€ข Feature branch based development โ€ข Master branch must always be releasable Development
  • 28. โ€ข Unit tests: JUnit, Karma โ€ข Mutation tests with PIT โ€ข Service/integration tests: Spring boot integration, embedded in-memory data stores, REST assured โ€ข End-to-end test: Protractor โ€ข Load tests: Gatling Testing
  • 29. Build tools, deployments and running in production
  • 30. โ€ข Gitlab โ€ข Jenkins with Docker swarm slave nodes โ€ข Jenkins 2 pipelines โ€ข Nexus โ€ข Sonar Build tools
  • 31. โ€ข Every push to master is a release โ€ข Config is embedded in executable jar โ€ข Deployments via Rundeck and Puppet โ€ข Development: deploy on commit โ€ข Everything from dev -> acc during sprint โ€ข Everything from acc -> prod after sprint โ€ข Single service dev -> acc -> prod when needed Deployments
  • 32. โ€ข Logging and dashboards via Graylog โ€ข Metrics: โ€ข Spring Boot actuator โ€ข Grafana โ€ข Kafka stats via Burrow โ€ข Monitoring via Sensu and Flapjack Running in production
  • 33. Photo: Dave Lehl Challenges and looking ahead
  • 34. Challenges 01 Share as little as possible; prefer duplication over coupling. Sharing code between services 04Authentication and authorisation happen at every request. Find the balance between performance and security. Running stateless has a cost When moving fast, donโ€™t forget to finish up before starting something new. Switching focus has a cost 06 Throwing something away and starting over can work out better than refactoring. Donโ€™t be afraid to rebuild03 Microservices are not just for the backend. Modularity is just as imported on the frontend. Monolithic frontend 02 Minimalize dependencies on other teams, or it will slow you down. Cross functional team composition is vital 05 and lessons learned
  • 35. Looking ahead Upgrades and fixes without users even noticing. 0-downtime deployments Our plans for the (near) future. @bjschrijver Cross-functional teams with vertical (full stack) responsibilities. Product teams Split the frontend in products and re- usable components. Modular frontend There is no silver bullet here, but useful tools and practices do exist. Automated security testing Get the teams the information they need, but only when they need it. Better dashboards and alerting
  • 37. Thanks for your time. Got feedback? Tweet it! All pictures belong to their respective authors @bjschrijver