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, 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
• This slide is intentionally left blank…
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 4.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) you work on
• For other components, local env connects
to development env on OpenStack
• Feature branch based development
• Master branch must always be releasable
Development
• Unit tests
• Mutation tests
• 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 embedded in executable jar
• Deployments via Rundeck and Puppet:
• Development: deploy service 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
JBCNConf 2017 - Building microservices with Vert.x
PDF
Malmberg meetup June 2018 - Building microservices with Vert.x
PDF
Dublin JUG February 2018 - Building microservices with Vert.x
PDF
Vert.x NL meetup October 2017 - Building microservices with Vert.x
PDF
VJUG 24 - Building microservices with Vert.x
PDF
Devoxx UK 2016 - Building microservices with Vert.x
PDF
Building microservices with Vert.X @ Fall 2016
PDF
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learned
JBCNConf 2017 - Building microservices with Vert.x
Malmberg meetup June 2018 - Building microservices with Vert.x
Dublin JUG February 2018 - Building microservices with Vert.x
Vert.x NL meetup October 2017 - Building microservices with Vert.x
VJUG 24 - Building microservices with Vert.x
Devoxx UK 2016 - Building microservices with Vert.x
Building microservices with Vert.X @ Fall 2016
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learned

What's hot (20)

PPTX
MicroService Architecture
PDF
Chick-fil-A: Milking the most out of thousands of kubernetes clusteres
PDF
Solving trust issues at scale - Omer Levi Hevroni
PDF
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4
PDF
Monitor Micro-service with MicroProfile metrics
PPTX
The Hardest Part of Microservices: Calling Your Services
PDF
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
PDF
Gradual migration to MicroProfile
PPTX
Monoliths vs microservices
PDF
Matt Chung (Independent) - Serverless application with AWS Lambda
PDF
Build your own private Cloud environment
PDF
Introduction to the Typesafe Reactive Platform
PPTX
The art of decomposing monoliths - Kfir Bloch - Codemotion Amsterdam 2016
PPTX
Security for devs
PPTX
Data stores: beyond relational databases
PPTX
Microservices: A developer's approach
PDF
Secure JAX-RS
PPTX
OpenStack at Bloomberg
PPTX
How to deploy a Private Cloud based on WAP and Nutanix
PPTX
Manage your compactions before they manage you!
MicroService Architecture
Chick-fil-A: Milking the most out of thousands of kubernetes clusteres
Solving trust issues at scale - Omer Levi Hevroni
Brendon Foxen (Channel 4) - Speeding up Software Delivery at Channel 4
Monitor Micro-service with MicroProfile metrics
The Hardest Part of Microservices: Calling Your Services
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
Gradual migration to MicroProfile
Monoliths vs microservices
Matt Chung (Independent) - Serverless application with AWS Lambda
Build your own private Cloud environment
Introduction to the Typesafe Reactive Platform
The art of decomposing monoliths - Kfir Bloch - Codemotion Amsterdam 2016
Security for devs
Data stores: beyond relational databases
Microservices: A developer's approach
Secure JAX-RS
OpenStack at Bloomberg
How to deploy a Private Cloud based on WAP and Nutanix
Manage your compactions before they manage you!
Ad

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

PDF
J-Spring 2017 - Microservices in action at the Dutch National Police
PDF
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
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
CodeMotion Amsterdam 2018 - Microservices in action at the Dutch National Police
PDF
Microservices in action at the Dutch National Police - Bert Jan Schrijver - C...
PDF
Microservices in action at the Dutch National Police
PDF
OpenValue meetup October 2017 - Microservices in action at the Dutch National...
PDF
JavaZone 2017 - Microservices in action at the Dutch National Police
PDF
Devoxx PL 2018 - Microservices in action at the Dutch National Police
PDF
Bol.com Tech lab September 2017 - Microservices in action at the Dutch Nation...
PDF
Building on spring boot lastminute.com microservices way (Spring IO Barcelona...
PDF
µServices Architecture @ EPAM WOW 2015
PDF
Microservices Architecture
PDF
Microservices on a budget meetup
PDF
Building Microservices Software practics
PDF
Microservices_Designing_Deploying.pdf
PDF
Microservices designing deploying
PDF
Microservices designing deploying
J-Spring 2017 - Microservices in action at the Dutch National Police
Continuous Delivery Amsterdam - Microservices in action at the Dutch National...
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
CodeMotion Amsterdam 2018 - Microservices in action at the Dutch National Police
Microservices in action at the Dutch National Police - Bert Jan Schrijver - C...
Microservices in action at the Dutch National Police
OpenValue meetup October 2017 - Microservices in action at the Dutch National...
JavaZone 2017 - Microservices in action at the Dutch National Police
Devoxx PL 2018 - Microservices in action at the Dutch National Police
Bol.com Tech lab September 2017 - Microservices in action at the Dutch Nation...
Building on spring boot lastminute.com microservices way (Spring IO Barcelona...
µServices Architecture @ EPAM WOW 2015
Microservices Architecture
Microservices on a budget meetup
Building Microservices Software practics
Microservices_Designing_Deploying.pdf
Microservices designing deploying
Microservices designing deploying
Ad

Recently uploaded (20)

PPTX
Slides PPTX World Game (s) Eco Economic Epochs.pptx
PDF
Unit-1 introduction to cyber security discuss about how to secure a system
PDF
Decoding a Decade: 10 Years of Applied CTI Discipline
PPTX
Digital Literacy And Online Safety on internet
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PPT
tcp ip networks nd ip layering assotred slides
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
PPTX
INTERNET------BASICS-------UPDATED PPT PRESENTATION
PPTX
Funds Management Learning Material for Beg
PDF
Triggering QUIC, presented by Geoff Huston at IETF 123
PDF
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
PDF
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
PDF
RPKI Status Update, presented by Makito Lay at IDNOG 10
PDF
Cloud-Scale Log Monitoring _ Datadog.pdf
PDF
💰 𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓 💰
PDF
The New Creative Director: How AI Tools for Social Media Content Creation Are...
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PPTX
Introuction about WHO-FIC in ICD-10.pptx
PPTX
introduction about ICD -10 & ICD-11 ppt.pptx
PPTX
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
Slides PPTX World Game (s) Eco Economic Epochs.pptx
Unit-1 introduction to cyber security discuss about how to secure a system
Decoding a Decade: 10 Years of Applied CTI Discipline
Digital Literacy And Online Safety on internet
522797556-Unit-2-Temperature-measurement-1-1.pptx
tcp ip networks nd ip layering assotred slides
An introduction to the IFRS (ISSB) Stndards.pdf
INTERNET------BASICS-------UPDATED PPT PRESENTATION
Funds Management Learning Material for Beg
Triggering QUIC, presented by Geoff Huston at IETF 123
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
RPKI Status Update, presented by Makito Lay at IDNOG 10
Cloud-Scale Log Monitoring _ Datadog.pdf
💰 𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓 💰
The New Creative Director: How AI Tools for Social Media Content Creation Are...
Design_with_Watersergyerge45hrbgre4top (1).ppt
Introuction about WHO-FIC in ICD-10.pptx
introduction about ICD -10 & ICD-11 ppt.pptx
Introduction about ICD -10 and ICD11 on 5.8.25.pptx

GeekOut 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, 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
  • 11. Architecture • This slide is intentionally left blank…
  • 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 4.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) you work on • 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 • Mutation tests • 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 embedded in executable jar • Deployments via Rundeck and Puppet: • Development: deploy service 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