SlideShare a Scribd company logo
Microservices
WHAT I’VE LEARNED AFTER A YEAR BUILDING SYSTEMS
www.designcoderelease.blogspot.com@NathanGloyn
@NathanGloyn www.designcoderelease.blogspot.com
Who am I?
o Independent consultant
o 20+ years experience
o Primarily .Net & JS
@NathanGloyn www.designcoderelease.blogspot.com
Disclaimer
Photo by Clker-Free-Vector-Images on RobinHiggins under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Agenda
Why use microservices?
Aspects of microservices
Development
Testing
Data
Deployment
The reality of a live system
@NathanGloyn www.designcoderelease.blogspot.com
Why use microservices?
Photo by Pexels on RobinHiggins under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Why use microservices?
o Don’t!
o Scale – nice problem to have
o Complexity
o Independent development
o Technology agnostic
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Different way of thinking
Photo by geralt on pixabay under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Different way of thinking
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Different way of thinking
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Different way of thinking
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Identifying services
Photo by quimono on RobinHiggins under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Identifying services
o How do you decide what a service consists of?
o Domain driven design – Bounded Context
o Beware mini-monoliths
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – messaging
Photo by quimono on pxhere under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – messaging
MessageBus
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – messaging
M
e
s
s
a
g
e
B
u
s
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Fat vs Thin
Fat man by hahacokies9 on piq under CC BY 3.0
Angry Video Game Nerd by itlivesinthewall on piq under CC BY 3.0
Vs
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Fat vs Thin
o Thin service
• Only holds data relating to itself
• Calls other services directly as it needed
• Temporally coupled
o Fat Service
• Holds copies of data from other services that it would need to use
• Resilient to other service failures
• Data coupled
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Distributed system
Photo by geralt on pixabay under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Aspects – Distributed system
o Likely to use multiple services for single “action”
o Additional complexity
o Fixing errors
@NathanGloyn www.designcoderelease.blogspot.com
Development – Security
Photo by Pexels on pixabay under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Development – Security
o HTTPS
o Work across all services
o Authorization not just authentication
@NathanGloyn www.designcoderelease.blogspot.com
Development – Source code repositories
or
@NathanGloyn www.designcoderelease.blogspot.com
Development – Technology Stack
Photo by Jeppe Hove Jensen on Unsplash
@NathanGloyn www.designcoderelease.blogspot.com
Development – shared functionality
Photo by Jodi McKinney on The Creative Life In Between
@NathanGloyn www.designcoderelease.blogspot.com
Development - UI
Photo by Pankaj Patel on Unsplash
@NathanGloyn www.designcoderelease.blogspot.com
Testing
CAF Pyro A-Bombby Midlan Airport under CC BY-ND 2.0
@NathanGloyn www.designcoderelease.blogspot.com
Deployment
@NathanGloyn www.designcoderelease.blogspot.com
Live system – Configuration
Cog wheels by Ky0n Cheng under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Live system – Data
Photo by xresch on pixabay under CC0 1.0
@NathanGloyn www.designcoderelease.blogspot.com
Live system – Messaging
Green, Blue Yellow and White by Jocelyn Kinghorn used under CC BY-SA 2.0
@NathanGloyn www.designcoderelease.blogspot.com
Live system – Logging
Gotwood? by alx_chief used under CC BY-SA 2.0
@NathanGloyn www.designcoderelease.blogspot.com
Live system – Monitoring
Binoculars portrait (dscn4659_mod_vign_sm) by gerlos used under CC BY-ND 2.0
@NathanGloyn www.designcoderelease.blogspot.com
Live system – Custom tools
Photo by Carlos Irineu da Costa on Unsplash
@NathanGloyn www.designcoderelease.blogspot.com
Summary
Different way of thinking
Choice of technology not necessarily important but at same time can be crucial
Service identification is important and if should be fat or thin dependent upon resilience
Build security in from the start
Put configuration in one place
You will need to alter data in production – know how you are going to do this
Log, log and log some more
Monitor the system not just individual services
Questions?
www.designcoderelease.blogspot.com@NathanGloyn

More Related Content

Similar to Conf 2018 Track 3 - Microservices - What I've learned after a year building systems

OWASP AppSec Cali 2018 - Enabling Product Security With Culture and Cloud (As...
OWASP AppSec Cali 2018 - Enabling Product Security With Culture and Cloud (As...OWASP AppSec Cali 2018 - Enabling Product Security With Culture and Cloud (As...
OWASP AppSec Cali 2018 - Enabling Product Security With Culture and Cloud (As...
Patrick Thomas
 
Why we need a more Ethical Web
Why we need a more Ethical Web   Why we need a more Ethical Web
Why we need a more Ethical Web
Daniel Appelquist
 
Deploying Spring Boot apps on Kubernetes
Deploying Spring Boot apps on KubernetesDeploying Spring Boot apps on Kubernetes
Deploying Spring Boot apps on Kubernetes
VMware Tanzu
 
Code camp HoloLens Build and Deploy
Code camp HoloLens Build and DeployCode camp HoloLens Build and Deploy
Code camp HoloLens Build and Deploy
Sarah Sexton
 
Plone, the Python CMS & Web Framework for Advanced Topics and Non-Developers
Plone, the Python CMS & Web Framework for Advanced Topics and Non-DevelopersPlone, the Python CMS & Web Framework for Advanced Topics and Non-Developers
Plone, the Python CMS & Web Framework for Advanced Topics and Non-Developers
Alexander Loechel
 
SharePoint Authorization and Authentication-Controlling Access to Documents a...
SharePoint Authorization and Authentication-Controlling Access to Documents a...SharePoint Authorization and Authentication-Controlling Access to Documents a...
SharePoint Authorization and Authentication-Controlling Access to Documents a...
Tom Resing
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
Fab L
 
Agile + Benefits + Transition Nov 2009
Agile + Benefits + Transition   Nov 2009Agile + Benefits + Transition   Nov 2009
Agile + Benefits + Transition Nov 2009
Michael Sahota
 
Bits+atoms+processes: the influence of code culture on Design @ Cumulus Helsi...
Bits+atoms+processes: the influence of code culture on Design @ Cumulus Helsi...Bits+atoms+processes: the influence of code culture on Design @ Cumulus Helsi...
Bits+atoms+processes: the influence of code culture on Design @ Cumulus Helsi...
Massimo Menichinelli
 
DevOps in Practice
DevOps in PracticeDevOps in Practice
DevOps in Practice
Derek Chen
 
CHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and ExamplesCHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and Examples
Dawn Foster
 
Docker and Devops
Docker and DevopsDocker and Devops
Docker and Devops
Docker, Inc.
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon
 
Selenium and Open Source Advanced Testing
Selenium and Open Source Advanced TestingSelenium and Open Source Advanced Testing
Selenium and Open Source Advanced Testing
Austin Marie Gay
 
OpenWhisk - Serverless Architecture
OpenWhisk - Serverless Architecture OpenWhisk - Serverless Architecture
OpenWhisk - Serverless Architecture
Dev_Events
 
The Web Platform - State of the Union '17
The Web Platform - State of the Union '17The Web Platform - State of the Union '17
The Web Platform - State of the Union '17
Abdelrahman Omran
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...
Matt Raible
 
Geo-Django Python
Geo-Django PythonGeo-Django Python
Geo-Django Python
Dave Michelson
 
Network Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupNetwork Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London Meetup
Dawn Foster
 
James Sullivan CV 2015
James Sullivan CV 2015James Sullivan CV 2015
James Sullivan CV 2015
James Sullivan
 

Similar to Conf 2018 Track 3 - Microservices - What I've learned after a year building systems (20)

OWASP AppSec Cali 2018 - Enabling Product Security With Culture and Cloud (As...
OWASP AppSec Cali 2018 - Enabling Product Security With Culture and Cloud (As...OWASP AppSec Cali 2018 - Enabling Product Security With Culture and Cloud (As...
OWASP AppSec Cali 2018 - Enabling Product Security With Culture and Cloud (As...
 
Why we need a more Ethical Web
Why we need a more Ethical Web   Why we need a more Ethical Web
Why we need a more Ethical Web
 
Deploying Spring Boot apps on Kubernetes
Deploying Spring Boot apps on KubernetesDeploying Spring Boot apps on Kubernetes
Deploying Spring Boot apps on Kubernetes
 
Code camp HoloLens Build and Deploy
Code camp HoloLens Build and DeployCode camp HoloLens Build and Deploy
Code camp HoloLens Build and Deploy
 
Plone, the Python CMS & Web Framework for Advanced Topics and Non-Developers
Plone, the Python CMS & Web Framework for Advanced Topics and Non-DevelopersPlone, the Python CMS & Web Framework for Advanced Topics and Non-Developers
Plone, the Python CMS & Web Framework for Advanced Topics and Non-Developers
 
SharePoint Authorization and Authentication-Controlling Access to Documents a...
SharePoint Authorization and Authentication-Controlling Access to Documents a...SharePoint Authorization and Authentication-Controlling Access to Documents a...
SharePoint Authorization and Authentication-Controlling Access to Documents a...
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 
Agile + Benefits + Transition Nov 2009
Agile + Benefits + Transition   Nov 2009Agile + Benefits + Transition   Nov 2009
Agile + Benefits + Transition Nov 2009
 
Bits+atoms+processes: the influence of code culture on Design @ Cumulus Helsi...
Bits+atoms+processes: the influence of code culture on Design @ Cumulus Helsi...Bits+atoms+processes: the influence of code culture on Design @ Cumulus Helsi...
Bits+atoms+processes: the influence of code culture on Design @ Cumulus Helsi...
 
DevOps in Practice
DevOps in PracticeDevOps in Practice
DevOps in Practice
 
CHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and ExamplesCHAOSS Metrics Overview and Examples
CHAOSS Metrics Overview and Examples
 
Docker and Devops
Docker and DevopsDocker and Devops
Docker and Devops
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
 
Selenium and Open Source Advanced Testing
Selenium and Open Source Advanced TestingSelenium and Open Source Advanced Testing
Selenium and Open Source Advanced Testing
 
OpenWhisk - Serverless Architecture
OpenWhisk - Serverless Architecture OpenWhisk - Serverless Architecture
OpenWhisk - Serverless Architecture
 
The Web Platform - State of the Union '17
The Web Platform - State of the Union '17The Web Platform - State of the Union '17
The Web Platform - State of the Union '17
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...
 
Geo-Django Python
Geo-Django PythonGeo-Django Python
Geo-Django Python
 
Network Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London MeetupNetwork Analysis: Tech Evangelism London Meetup
Network Analysis: Tech Evangelism London Meetup
 
James Sullivan CV 2015
James Sullivan CV 2015James Sullivan CV 2015
James Sullivan CV 2015
 

More from TechExeter

Exeter Science Centre, by Natalie Whitehead
Exeter Science Centre, by Natalie WhiteheadExeter Science Centre, by Natalie Whitehead
Exeter Science Centre, by Natalie Whitehead
TechExeter
 
South West InternetOfThings Network by Wo King
South West InternetOfThings Network by Wo KingSouth West InternetOfThings Network by Wo King
South West InternetOfThings Network by Wo King
TechExeter
 
Generative Adversarial Networks by Tariq Rashid
Generative Adversarial Networks by Tariq RashidGenerative Adversarial Networks by Tariq Rashid
Generative Adversarial Networks by Tariq Rashid
TechExeter
 
Conf 2019 - Workshop: Liam Glanfield - know your threat actor
Conf 2019 - Workshop: Liam Glanfield - know your threat actorConf 2019 - Workshop: Liam Glanfield - know your threat actor
Conf 2019 - Workshop: Liam Glanfield - know your threat actor
TechExeter
 
Conf 2018 Track 1 - Unicorns aren't real
Conf 2018 Track 1 - Unicorns aren't realConf 2018 Track 1 - Unicorns aren't real
Conf 2018 Track 1 - Unicorns aren't real
TechExeter
 
Conf 2018 Track 1 - Aerospace Innovation
Conf 2018 Track 1 - Aerospace InnovationConf 2018 Track 1 - Aerospace Innovation
Conf 2018 Track 1 - Aerospace Innovation
TechExeter
 
Conf 2018 Track 2 - Try Elm
Conf 2018 Track 2 - Try ElmConf 2018 Track 2 - Try Elm
Conf 2018 Track 2 - Try Elm
TechExeter
 
Conf 2018 Track 3 - Creating marine geospatial services
Conf 2018 Track 3 - Creating marine geospatial servicesConf 2018 Track 3 - Creating marine geospatial services
Conf 2018 Track 3 - Creating marine geospatial services
TechExeter
 
Conf 2018 Track 2 - Machine Learning with TensorFlow
Conf 2018 Track 2 - Machine Learning with TensorFlowConf 2018 Track 2 - Machine Learning with TensorFlow
Conf 2018 Track 2 - Machine Learning with TensorFlow
TechExeter
 
Conf 2018 Track 2 - Custom Web Elements with Stencil
Conf 2018 Track 2 - Custom Web Elements with StencilConf 2018 Track 2 - Custom Web Elements with Stencil
Conf 2018 Track 2 - Custom Web Elements with Stencil
TechExeter
 
Conf 2018 Track 1 - Tessl / revolutionising the house moving process
Conf 2018 Track 1 - Tessl / revolutionising the house moving processConf 2018 Track 1 - Tessl / revolutionising the house moving process
Conf 2018 Track 1 - Tessl / revolutionising the house moving process
TechExeter
 
Conf 2018 Keynote - Andy Stanford-Clark, CTO IBM UK
Conf 2018 Keynote - Andy Stanford-Clark, CTO IBM UKConf 2018 Keynote - Andy Stanford-Clark, CTO IBM UK
Conf 2018 Keynote - Andy Stanford-Clark, CTO IBM UK
TechExeter
 
Gps behaving badly - Guy Busenel
Gps behaving badly - Guy BusenelGps behaving badly - Guy Busenel
Gps behaving badly - Guy Busenel
TechExeter
 
Why Isn't My Query Using an Index?: An Introduction to SQL Performance
Why Isn't My Query Using an Index?: An Introduction to SQL Performance Why Isn't My Query Using an Index?: An Introduction to SQL Performance
Why Isn't My Query Using an Index?: An Introduction to SQL Performance
TechExeter
 
Turning Developers into Testers
Turning Developers into TestersTurning Developers into Testers
Turning Developers into Testers
TechExeter
 
Remote working
Remote workingRemote working
Remote working
TechExeter
 
Developing an Agile Mindset
Developing an Agile Mindset Developing an Agile Mindset
Developing an Agile Mindset
TechExeter
 
Think like a gardener
Think like a gardenerThink like a gardener
Think like a gardener
TechExeter
 
The trials and tribulations of providing engineering infrastructure
 The trials and tribulations of providing engineering infrastructure  The trials and tribulations of providing engineering infrastructure
The trials and tribulations of providing engineering infrastructure
TechExeter
 
Scaling clusters to thousands of servers in the cloud
Scaling clusters to thousands of servers in the cloudScaling clusters to thousands of servers in the cloud
Scaling clusters to thousands of servers in the cloud
TechExeter
 

More from TechExeter (20)

Exeter Science Centre, by Natalie Whitehead
Exeter Science Centre, by Natalie WhiteheadExeter Science Centre, by Natalie Whitehead
Exeter Science Centre, by Natalie Whitehead
 
South West InternetOfThings Network by Wo King
South West InternetOfThings Network by Wo KingSouth West InternetOfThings Network by Wo King
South West InternetOfThings Network by Wo King
 
Generative Adversarial Networks by Tariq Rashid
Generative Adversarial Networks by Tariq RashidGenerative Adversarial Networks by Tariq Rashid
Generative Adversarial Networks by Tariq Rashid
 
Conf 2019 - Workshop: Liam Glanfield - know your threat actor
Conf 2019 - Workshop: Liam Glanfield - know your threat actorConf 2019 - Workshop: Liam Glanfield - know your threat actor
Conf 2019 - Workshop: Liam Glanfield - know your threat actor
 
Conf 2018 Track 1 - Unicorns aren't real
Conf 2018 Track 1 - Unicorns aren't realConf 2018 Track 1 - Unicorns aren't real
Conf 2018 Track 1 - Unicorns aren't real
 
Conf 2018 Track 1 - Aerospace Innovation
Conf 2018 Track 1 - Aerospace InnovationConf 2018 Track 1 - Aerospace Innovation
Conf 2018 Track 1 - Aerospace Innovation
 
Conf 2018 Track 2 - Try Elm
Conf 2018 Track 2 - Try ElmConf 2018 Track 2 - Try Elm
Conf 2018 Track 2 - Try Elm
 
Conf 2018 Track 3 - Creating marine geospatial services
Conf 2018 Track 3 - Creating marine geospatial servicesConf 2018 Track 3 - Creating marine geospatial services
Conf 2018 Track 3 - Creating marine geospatial services
 
Conf 2018 Track 2 - Machine Learning with TensorFlow
Conf 2018 Track 2 - Machine Learning with TensorFlowConf 2018 Track 2 - Machine Learning with TensorFlow
Conf 2018 Track 2 - Machine Learning with TensorFlow
 
Conf 2018 Track 2 - Custom Web Elements with Stencil
Conf 2018 Track 2 - Custom Web Elements with StencilConf 2018 Track 2 - Custom Web Elements with Stencil
Conf 2018 Track 2 - Custom Web Elements with Stencil
 
Conf 2018 Track 1 - Tessl / revolutionising the house moving process
Conf 2018 Track 1 - Tessl / revolutionising the house moving processConf 2018 Track 1 - Tessl / revolutionising the house moving process
Conf 2018 Track 1 - Tessl / revolutionising the house moving process
 
Conf 2018 Keynote - Andy Stanford-Clark, CTO IBM UK
Conf 2018 Keynote - Andy Stanford-Clark, CTO IBM UKConf 2018 Keynote - Andy Stanford-Clark, CTO IBM UK
Conf 2018 Keynote - Andy Stanford-Clark, CTO IBM UK
 
Gps behaving badly - Guy Busenel
Gps behaving badly - Guy BusenelGps behaving badly - Guy Busenel
Gps behaving badly - Guy Busenel
 
Why Isn't My Query Using an Index?: An Introduction to SQL Performance
Why Isn't My Query Using an Index?: An Introduction to SQL Performance Why Isn't My Query Using an Index?: An Introduction to SQL Performance
Why Isn't My Query Using an Index?: An Introduction to SQL Performance
 
Turning Developers into Testers
Turning Developers into TestersTurning Developers into Testers
Turning Developers into Testers
 
Remote working
Remote workingRemote working
Remote working
 
Developing an Agile Mindset
Developing an Agile Mindset Developing an Agile Mindset
Developing an Agile Mindset
 
Think like a gardener
Think like a gardenerThink like a gardener
Think like a gardener
 
The trials and tribulations of providing engineering infrastructure
 The trials and tribulations of providing engineering infrastructure  The trials and tribulations of providing engineering infrastructure
The trials and tribulations of providing engineering infrastructure
 
Scaling clusters to thousands of servers in the cloud
Scaling clusters to thousands of servers in the cloudScaling clusters to thousands of servers in the cloud
Scaling clusters to thousands of servers in the cloud
 

Recently uploaded

HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 

Recently uploaded (20)

HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 

Conf 2018 Track 3 - Microservices - What I've learned after a year building systems

Editor's Notes

  1. If you’ve built microservices things I’m talking about you probably already know Problems I came across and solutions that were discovered may not be a problem for you or my solution may not be applicable for your circumstances
  2. Don’t use microservices, just because it’s the “new hotness” doesn’t mean the pattern fits your problem Most people will look to Microservices to solve scaling as they are “easy” to scale, but scaling is a nice problem to have but you have to be successful first Complexity that comes with a distributed system – support, deployment Benefits Independent development – people will point to being able to have multiple teams develop separate parts far easier Technology agnostic
  3. New paradigm, new way to build Bringing old way of thinking can end up building mini-monoliths
  4. This is a classic, canonical , microservice - a single “endpoint” that connects to and uses its own data store
  5. You might have couple of services that share a datastore, the difference being both perform specific independent functions
  6. This may look like microservices but is closer to a distributed monolith due to the fact that they all share a single database. The main issue is that due to the shared dependency if you want to scale the services the data store can very quickly become a bottle neck if it isn’t able to scale to the same extent, not to mention possibility of collision between data being updated and need to resolve correct values.
  7. Domain driven design Bounded Context – related concepts e.g. student details from Connections which was not linked to users or security Thoughtworks article on extracting service from monolith - https://martinfowler.com/articles/extract-data-rich-service.html InfoQ article on decomposing monolith - https://www.infoq.com/articles/microservices-startup
  8. You will need messaging May have messaging on client only
  9. A server side message bus ties all of the services together allowing them to communicate but without being explicitly coupled to each other Examples: .Net - NServiceBus, Rebus Node – BusMQ Java – EventBus, ApacheCamel RabbitMQ, ZeroMQ,
  10. Client side message bus – all communication between the services is done client side Postal.js is an example of an in memory message bus written in JavaScript - https://github.com/postaljs/postal.js
  11. Both types are coupled, just in different ways Temporal coupling – means that if the other service isn’t there then the process may fail if the information/operation being executed is critical to the process Data coupling – if the data gets out of sync service can be executing against invalid data which could then have a domino effect throughout the system
  12. With multiple services you will often find that to accomplish what appears to the user as one action to call multiple services Everything is just that bit more complicated with a distributed system do not dismiss the additional complexity it will bring This can become more of an issue if you need the system to process some data, to correct a mistake for instance, and you need to be able to orchestrate many compensatory actions.
  13. Https by default Needs to work across all services Build in from the beginning Ensure authorization in place, not just authentication Existing security products – IdentityServer on .Net, Keycloak on Java, Passport on node, Auth0 etc
  14. Single repo can make it easy to develop but additional complexity around deployment Multiple repo separates the code making it easier to build and release harder to develop
  15. Nothing to stop you using what ever technology suits your service If using multiple technologies make sure you have people in the organisation that are able to dev and support those technologies Word of caution related to security – if you do not continue with a particular stack you still need to monitor that stack for vulnerabilities you need to fix
  16. Package manager Any changes to existing packages or new packages have to be published which may take time e.g. test, PR, build, deploy Pin version unless you are very confident that any update will not effect you
  17. Interface can end up having an impact on the services, if you design a CRUD based interface more likely you will create services that fit that. Task based UI will help create services related to the actions the users want to perform and often CRUD based services won’t fit this model at all. Single interface means you have to redeploy the entire thing if any one thing changes – monolith front end. Web pack “code splitting” is just chunking up a single interface Micro frontends is the latest name for composable UI where parts of the UI are loaded as necessary, additional complexity around loading parts of the UI as needed and reacting to user actions With many services involved you will be likely to have to deal with Eventual consistency where the system doesn’t have an immediate answer – how do you handle this in the UI?
  18. Integration testing of the system, or parts/services that interact, is harder – you want a test environment that mirrors your live. Automate as much of the integration testing as you can
  19. Deploy all services at the same time – fundamentally doing it wrong Deploying individual services – if using single repo then more complex build & release PaaS Vs Container Vs serverless Having the ability to decouple any data migrations from deployment can make life easier if using fat services UI Deployment – ideally completely separate from the backend service, if it can be broken into components and deployed piecemeal even better
  20. Progression from: config transformed at build/release external config in environment e.g. Azure Cloud Config external config system e.g. Consul, Zookeeper are examples of external configuration systems Enable configuration to be separate from the service – that way you can store the config in one place only Can be single point of failure – ensure you have a default config a service can work from
  21. Data needed will frequently change over the life of the system Document DB’s not immune to issues, likelihood is you will need to make changes to documents You will need a plan to migrate/alter data – fat services make this more difficult as you need to then run your changes in multiple services If the data is calculated then you will need to be able to perform the calculation outside of the service Multiple tenants – database per tenant or partition the data, – if using database per tenant is that for every service? If so you will end up with a lot of databases to manage
  22. Format of messages will change over time You want to avoid having to deploy multiple services each time a message changes Version the messages, ensure that services use explicit version Little overhead as need to understand when all services have moved off a version so it can be retired
  23. Need to be able to look at the system as a whole – ensure a correlation id is included in all log entries to make it easier to do so Centralised logging makes this easier – ELK stack or paid product e.g. splunk Combine with auditing to give a full picture of what is happening Need to be able to look at the logs in context so not just logging the errors as you need everything that was happening at that time Don’t just log server side you need to be logging from the UI as well to get complete picture of what the user is doing
  24. Can be harder since multiple services make up the system but you don’t necessarily need all of them Ensure you record metrics around performance of the system so that you identify if something is going wrong More difficult than with monolith as all services could be degraded but performance of the system is still ok, baseline your system and then work out what you would consider a problem and add alerts Golden Signals Latency (response time), Traffic (requests per second), Errors (Error rate), Saturation (how overloaded something is queue depth, concurrency, etc) Focus on things that directly impact the user experience good infoq article on these here https://www.infoq.com/articles/monitoring-SRE-golden-signals
  25. Don’t try and do everything through services – keep services to what they do and build custom tools to help with ad-hoc tasks e.g. replay messages, bulk load data
  26. Pick the wrong message bus for instance and you could end up with complications