SlideShare a Scribd company logo
Microservices
A Developer’s Approach
Topics
• What is Microservices
• Why we need Microservices
• Design a single service
• Building blocks of a Microservice System
• What’s next
@Me
• Foyzul Karim
• Started journey on 2009
• Details on LinkedIn [linkedin.com/in/foyzul]
• Love to make videos [youtube.com/foyzulkarim]
• Love to contribute open source [github.com/foyzulkarim]
• Love to contribute on Facebook [facebook.com/foyzulsacademy]
Microservices
So… What is it?
Brief history
• The term "microservice" was discussed at a workshop of software architects near Venice in
May 2011 to describe what the participants saw as a common architectural style that many of
them had been recently exploring.
• In May 2012, the same group decided on "microservices" as the most appropriate name.
James Lewis presented some of these ideas as a case study in March 2012 at 33rd Degree in
Krakow in Microservices - Java, the Unix Way as did Fred George about the same time.
• Adrian Cockcroft at Netflix, describing this approach as "fine grained SOA" was pioneering the
style at web scale as were many of the others mentioned in this article - Joe Walnes, Daniel
Terhorst-North, Evan Botcher and Graham Tackley.
• Article link: https://martinfowler.com/articles/microservices.html
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.
-- James Lewis and Martin Fowler (2014)
[https://martinfowler.com/articles/microservices.html]
https://martinfowler.com/articles/microservices/images/sketch.png
Single executable project Project 1
Project 2
Project 3
Characteristics of a Microservice System
• Microservices - also known as the microservice architecture - is an architectural style
that structures an application as a collection of services that are
• Highly maintainable and testable
• Loosely coupled
• Independently deployable
• Organized around business capabilities
• Owned by a small team
• The microservice architecture enables the rapid, frequent and reliable delivery of
large, complex applications. It also enables an organization to evolve its technology
stack.
Why we need
Microservices?
And why now? Why we didn’t use this architecture 15 years ago?
Why we need Microservices? Why now?
• Single vendor lockdown era is over
• Different database for different purpose
• Different programming stack for different purpose
• Different software architecture for different purpose
• Scaling is not more multiplying the whole server
• Containers (Lxc, Lxd, Docker etc.)
• Orchestrators (Kubernetes)
• Cloud computing era is in full swing
• Can choose different cloud service in different microservice
• We don’t have luxury to go offline for a minute now a days
• No more outage because of a problematic service
Design a single
micro-service
How do we design a single service?
Designing a single micro-service
• Define the domain boundaries
• Follow Single Responsibility Principal in every level
• Select appropriate tech stack
• Choose programming stack
• Choose database
• Database can only be accessed by it’s parent service
• Expose the api endpoints to be consumed by other services
• Should independently handle the request
• Adapt the architecture for the whole microservices system
Service
DB
Microservices System
What are the building blocks of a microservices system
Building blocks of a Microservices System
• Service to service communication
• Client to service communication
• Service discovery
• Service security
• Service monitoring
• Service containerization
• Service orchestration
• Continuous integration
• Continuous delivery
Service to service communication
• Point to point communication
• HTTP request
• gRPC request
• Asynchronous message-based communication
• Queue
• Service Bus
Http / gRPC request
Service ServiceService
Messaging system
Client to service communication
• API Manager / API Gateways
• Directly call to the service
API
API
API
API
EventBus
API
GatewayClient
API
API
API
API
EventBus
Client
Service discovery
• Mainly applicable for container based architecture
• Register the service into a service registry
API
API
API
API
EventBus
Client/APIM
Service registry
Name: product, Ip: 10.0.0.15
Name: customer, Ip: 10.0.0.16
Name: sales, Ip: 10.0.0.17
Name: identity, Ip: 10.0.0.18
Get product service detail
Service security
• Authentication server
• Handles different types of authentication
• Token based
• Cookie based
• Authorization server
• Fully functional RBAC management system
• Returns true/false depending on the resource request
Service monitoring
• Paid
• Application insight
• Papertrail
• Datadog
• Free
• ELK (self hosted)
Service containerization
• Multiple service to use multiple types of resources
• Different operating system (Linux, Windows etc.)
• Different programming language (C#, Python, JavaScript etc.)
• Different database (SQL Server, MySQL, MongoDB, ElasticSearch etc.)
• Different package versions
• We need the runtime and a thin OS layer to execute the system calls
• Containers here to rescue
• Pack the service (containerize)
• Run it anywhere
• Docker
Service orchestration
• How to build the containers in multiple environments
• How to run the containers in multiple environments
• How to monitor the containers after deployment
• How to troubleshoot the containers
• Kubernetes, Docker Compose etc.
Where to go next?
• Build one from scratch
Questions?
Send email to foyzulkarim@gmail.com
Send message to “Foyzul’s Academy” Facebook page

More Related Content

What's hot

Microservices from operations aspect
Microservices from operations aspectMicroservices from operations aspect
Microservices from operations aspect
David Papp
 
Microservices environment in production
Microservices environment in productionMicroservices environment in production
Microservices environment in production
David Papp
 
Microservices
MicroservicesMicroservices
Microservices
darkofabijan
 
Building a cross-framework design system
Building a cross-framework design systemBuilding a cross-framework design system
Building a cross-framework design system
Michael Schinis
 
Planidoo & Zotonic
Planidoo & ZotonicPlanidoo & Zotonic
Planidoo & Zotonic
David de Boer
 
Developing Cross-Platform Web Apps with ASP.NET Core1.0
Developing Cross-Platform Web Apps with ASP.NET Core1.0Developing Cross-Platform Web Apps with ASP.NET Core1.0
Developing Cross-Platform Web Apps with ASP.NET Core1.0
EastBanc Tachnologies
 
Writing power shell the right tool for the job
Writing power shell   the right tool for the jobWriting power shell   the right tool for the job
Writing power shell the right tool for the job
Jaap Brasser
 
Grails
GrailsGrails
Grails
Aditya Gaur
 
Kubernetes - training micro-dragons without getting burnt
Kubernetes -  training micro-dragons without getting burntKubernetes -  training micro-dragons without getting burnt
Kubernetes - training micro-dragons without getting burnt
Amir Moghimi
 
[DEISER Day Conferences] "Development Lifecycle Using Atlassian Tools" Juan G...
[DEISER Day Conferences] "Development Lifecycle Using Atlassian Tools" Juan G...[DEISER Day Conferences] "Development Lifecycle Using Atlassian Tools" Juan G...
[DEISER Day Conferences] "Development Lifecycle Using Atlassian Tools" Juan G...
Deiser
 
Front-End Tools and Workflows
Front-End Tools and WorkflowsFront-End Tools and Workflows
Front-End Tools and Workflows
Sara Vieira
 
Knockout
KnockoutKnockout
Knockout
hamman359
 
Building your own JEA Configuration
Building your own JEA ConfigurationBuilding your own JEA Configuration
Building your own JEA Configuration
Jaap Brasser
 
Introduction to Versioning (VCS) for Developers
Introduction to Versioning (VCS) for DevelopersIntroduction to Versioning (VCS) for Developers
Introduction to Versioning (VCS) for Developers
Ampersand
 
Web application I have always dreamt of
Web application I have always dreamt ofWeb application I have always dreamt of
Web application I have always dreamt of
Victor_Cr
 
Large Scale Drupal - Behind the Scenes
Large Scale Drupal - Behind the ScenesLarge Scale Drupal - Behind the Scenes
Large Scale Drupal - Behind the Scenes
Boyan Borisov
 
JBCNConf 2017 - Building microservices with Vert.x
JBCNConf 2017 - Building microservices with Vert.xJBCNConf 2017 - Building microservices with Vert.x
JBCNConf 2017 - Building microservices with Vert.x
Bert Jan Schrijver
 
Building Enterprise Integration scenarios with the SAP Connector for Logic Apps
Building Enterprise Integration scenarios with the SAP Connector for Logic AppsBuilding Enterprise Integration scenarios with the SAP Connector for Logic Apps
Building Enterprise Integration scenarios with the SAP Connector for Logic Apps
BizTalk360
 
Entity Framework Core 1.0
Entity Framework Core 1.0Entity Framework Core 1.0
Entity Framework Core 1.0
Senthil Kumar
 
Entity Framework 7: What's New?
Entity Framework 7: What's New?Entity Framework 7: What's New?
Entity Framework 7: What's New?
Ricardo Peres
 

What's hot (20)

Microservices from operations aspect
Microservices from operations aspectMicroservices from operations aspect
Microservices from operations aspect
 
Microservices environment in production
Microservices environment in productionMicroservices environment in production
Microservices environment in production
 
Microservices
MicroservicesMicroservices
Microservices
 
Building a cross-framework design system
Building a cross-framework design systemBuilding a cross-framework design system
Building a cross-framework design system
 
Planidoo & Zotonic
Planidoo & ZotonicPlanidoo & Zotonic
Planidoo & Zotonic
 
Developing Cross-Platform Web Apps with ASP.NET Core1.0
Developing Cross-Platform Web Apps with ASP.NET Core1.0Developing Cross-Platform Web Apps with ASP.NET Core1.0
Developing Cross-Platform Web Apps with ASP.NET Core1.0
 
Writing power shell the right tool for the job
Writing power shell   the right tool for the jobWriting power shell   the right tool for the job
Writing power shell the right tool for the job
 
Grails
GrailsGrails
Grails
 
Kubernetes - training micro-dragons without getting burnt
Kubernetes -  training micro-dragons without getting burntKubernetes -  training micro-dragons without getting burnt
Kubernetes - training micro-dragons without getting burnt
 
[DEISER Day Conferences] "Development Lifecycle Using Atlassian Tools" Juan G...
[DEISER Day Conferences] "Development Lifecycle Using Atlassian Tools" Juan G...[DEISER Day Conferences] "Development Lifecycle Using Atlassian Tools" Juan G...
[DEISER Day Conferences] "Development Lifecycle Using Atlassian Tools" Juan G...
 
Front-End Tools and Workflows
Front-End Tools and WorkflowsFront-End Tools and Workflows
Front-End Tools and Workflows
 
Knockout
KnockoutKnockout
Knockout
 
Building your own JEA Configuration
Building your own JEA ConfigurationBuilding your own JEA Configuration
Building your own JEA Configuration
 
Introduction to Versioning (VCS) for Developers
Introduction to Versioning (VCS) for DevelopersIntroduction to Versioning (VCS) for Developers
Introduction to Versioning (VCS) for Developers
 
Web application I have always dreamt of
Web application I have always dreamt ofWeb application I have always dreamt of
Web application I have always dreamt of
 
Large Scale Drupal - Behind the Scenes
Large Scale Drupal - Behind the ScenesLarge Scale Drupal - Behind the Scenes
Large Scale Drupal - Behind the Scenes
 
JBCNConf 2017 - Building microservices with Vert.x
JBCNConf 2017 - Building microservices with Vert.xJBCNConf 2017 - Building microservices with Vert.x
JBCNConf 2017 - Building microservices with Vert.x
 
Building Enterprise Integration scenarios with the SAP Connector for Logic Apps
Building Enterprise Integration scenarios with the SAP Connector for Logic AppsBuilding Enterprise Integration scenarios with the SAP Connector for Logic Apps
Building Enterprise Integration scenarios with the SAP Connector for Logic Apps
 
Entity Framework Core 1.0
Entity Framework Core 1.0Entity Framework Core 1.0
Entity Framework Core 1.0
 
Entity Framework 7: What's New?
Entity Framework 7: What's New?Entity Framework 7: What's New?
Entity Framework 7: What's New?
 

Similar to Microservices: A developer's approach

API’s and Micro Services 0.5
API’s and Micro Services 0.5API’s and Micro Services 0.5
API’s and Micro Services 0.5
Richard Hudson
 
Mastering microservices - Dot Net Tricks
Mastering microservices - Dot Net TricksMastering microservices - Dot Net Tricks
Mastering microservices - Dot Net Tricks
Gaurav Singh
 
Grokking microservices in 5 minutes
Grokking microservices in 5 minutesGrokking microservices in 5 minutes
Grokking microservices in 5 minutes
Andrew Siemer
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
Lalit Kale
 
20141210 - Microservice Container
20141210 - Microservice Container20141210 - Microservice Container
20141210 - Microservice Container
Jamie (Taka) Wang
 
Monoliths, Myths, and Microservices - CfgMgmtCamp
Monoliths, Myths, and Microservices - CfgMgmtCampMonoliths, Myths, and Microservices - CfgMgmtCamp
Monoliths, Myths, and Microservices - CfgMgmtCamp
Michael Ducy
 
Microservices Security: dos and don'ts
Microservices Security: dos and don'tsMicroservices Security: dos and don'ts
Microservices Security: dos and don'ts
Minded Security
 
QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes
Abdul Basit Munda
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
Ashwini Kuntamukkala
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
Dmitry Buzdin
 
Practical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfPractical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdf
Ahmed Misbah
 
I Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at AmazonI Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at Amazon
Apigee | Google Cloud
 
Migrating to Microservices Patterns and Technologies (edition 2023)
 Migrating to Microservices Patterns and Technologies (edition 2023) Migrating to Microservices Patterns and Technologies (edition 2023)
Migrating to Microservices Patterns and Technologies (edition 2023)
Ahmed Misbah
 
The Overview of Microservices Architecture
The Overview of Microservices ArchitectureThe Overview of Microservices Architecture
The Overview of Microservices Architecture
Paria Heidari
 
Designing Microservices
Designing MicroservicesDesigning Microservices
Designing Microservices
David Chou
 
Micro services
Micro servicesMicro services
Micro services
Brian Perera
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
Engin Yoeyen
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
Christian Posta
 
Building Resilient Microservices
Building Resilient Microservices Building Resilient Microservices
Building Resilient Microservices
IndicThreads
 
Architecting for Scale
Architecting for ScaleArchitecting for Scale
Architecting for Scale
Pooyan Jamshidi
 

Similar to Microservices: A developer's approach (20)

API’s and Micro Services 0.5
API’s and Micro Services 0.5API’s and Micro Services 0.5
API’s and Micro Services 0.5
 
Mastering microservices - Dot Net Tricks
Mastering microservices - Dot Net TricksMastering microservices - Dot Net Tricks
Mastering microservices - Dot Net Tricks
 
Grokking microservices in 5 minutes
Grokking microservices in 5 minutesGrokking microservices in 5 minutes
Grokking microservices in 5 minutes
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 
20141210 - Microservice Container
20141210 - Microservice Container20141210 - Microservice Container
20141210 - Microservice Container
 
Monoliths, Myths, and Microservices - CfgMgmtCamp
Monoliths, Myths, and Microservices - CfgMgmtCampMonoliths, Myths, and Microservices - CfgMgmtCamp
Monoliths, Myths, and Microservices - CfgMgmtCamp
 
Microservices Security: dos and don'ts
Microservices Security: dos and don'tsMicroservices Security: dos and don'ts
Microservices Security: dos and don'ts
 
QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
 
Practical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfPractical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdf
 
I Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at AmazonI Love APIs 2015: Microservices at Amazon
I Love APIs 2015: Microservices at Amazon
 
Migrating to Microservices Patterns and Technologies (edition 2023)
 Migrating to Microservices Patterns and Technologies (edition 2023) Migrating to Microservices Patterns and Technologies (edition 2023)
Migrating to Microservices Patterns and Technologies (edition 2023)
 
The Overview of Microservices Architecture
The Overview of Microservices ArchitectureThe Overview of Microservices Architecture
The Overview of Microservices Architecture
 
Designing Microservices
Designing MicroservicesDesigning Microservices
Designing Microservices
 
Micro services
Micro servicesMicro services
Micro services
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
 
Building Resilient Microservices
Building Resilient Microservices Building Resilient Microservices
Building Resilient Microservices
 
Architecting for Scale
Architecting for ScaleArchitecting for Scale
Architecting for Scale
 

More from Foyzul Karim

Software architecture
Software architectureSoftware architecture
Software architecture
Foyzul Karim
 
Software design principles SOLID
Software design principles SOLIDSoftware design principles SOLID
Software design principles SOLID
Foyzul Karim
 
BizBook365.com 16Feb2018 Demo
BizBook365.com 16Feb2018 DemoBizBook365.com 16Feb2018 Demo
BizBook365.com 16Feb2018 Demo
Foyzul Karim
 
BizBook365 - Modern Inventory System for Shops
BizBook365 - Modern Inventory System for ShopsBizBook365 - Modern Inventory System for Shops
BizBook365 - Modern Inventory System for Shops
Foyzul Karim
 
Windows store app development using javascript
Windows store app development using javascriptWindows store app development using javascript
Windows store app development using javascript
Foyzul Karim
 
Unit testing (workshop)
Unit testing (workshop)Unit testing (workshop)
Unit testing (workshop)
Foyzul Karim
 
Windows store app development V1
Windows store app development V1Windows store app development V1
Windows store app development V1
Foyzul Karim
 
Data types
Data typesData types
Data types
Foyzul Karim
 
Linq
LinqLinq

More from Foyzul Karim (9)

Software architecture
Software architectureSoftware architecture
Software architecture
 
Software design principles SOLID
Software design principles SOLIDSoftware design principles SOLID
Software design principles SOLID
 
BizBook365.com 16Feb2018 Demo
BizBook365.com 16Feb2018 DemoBizBook365.com 16Feb2018 Demo
BizBook365.com 16Feb2018 Demo
 
BizBook365 - Modern Inventory System for Shops
BizBook365 - Modern Inventory System for ShopsBizBook365 - Modern Inventory System for Shops
BizBook365 - Modern Inventory System for Shops
 
Windows store app development using javascript
Windows store app development using javascriptWindows store app development using javascript
Windows store app development using javascript
 
Unit testing (workshop)
Unit testing (workshop)Unit testing (workshop)
Unit testing (workshop)
 
Windows store app development V1
Windows store app development V1Windows store app development V1
Windows store app development V1
 
Data types
Data typesData types
Data types
 
Linq
LinqLinq
Linq
 

Recently uploaded

Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
aymanquadri279
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 

Recently uploaded (20)

Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 

Microservices: A developer's approach

  • 2. Topics • What is Microservices • Why we need Microservices • Design a single service • Building blocks of a Microservice System • What’s next
  • 3. @Me • Foyzul Karim • Started journey on 2009 • Details on LinkedIn [linkedin.com/in/foyzul] • Love to make videos [youtube.com/foyzulkarim] • Love to contribute open source [github.com/foyzulkarim] • Love to contribute on Facebook [facebook.com/foyzulsacademy]
  • 5. Brief history • The term "microservice" was discussed at a workshop of software architects near Venice in May 2011 to describe what the participants saw as a common architectural style that many of them had been recently exploring. • In May 2012, the same group decided on "microservices" as the most appropriate name. James Lewis presented some of these ideas as a case study in March 2012 at 33rd Degree in Krakow in Microservices - Java, the Unix Way as did Fred George about the same time. • Adrian Cockcroft at Netflix, describing this approach as "fine grained SOA" was pioneering the style at web scale as were many of the others mentioned in this article - Joe Walnes, Daniel Terhorst-North, Evan Botcher and Graham Tackley. • Article link: https://martinfowler.com/articles/microservices.html
  • 6. 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. -- James Lewis and Martin Fowler (2014) [https://martinfowler.com/articles/microservices.html]
  • 8. Characteristics of a Microservice System • Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are • Highly maintainable and testable • Loosely coupled • Independently deployable • Organized around business capabilities • Owned by a small team • The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. It also enables an organization to evolve its technology stack.
  • 9.
  • 10. Why we need Microservices? And why now? Why we didn’t use this architecture 15 years ago?
  • 11. Why we need Microservices? Why now? • Single vendor lockdown era is over • Different database for different purpose • Different programming stack for different purpose • Different software architecture for different purpose • Scaling is not more multiplying the whole server • Containers (Lxc, Lxd, Docker etc.) • Orchestrators (Kubernetes) • Cloud computing era is in full swing • Can choose different cloud service in different microservice • We don’t have luxury to go offline for a minute now a days • No more outage because of a problematic service
  • 12. Design a single micro-service How do we design a single service?
  • 13. Designing a single micro-service • Define the domain boundaries • Follow Single Responsibility Principal in every level • Select appropriate tech stack • Choose programming stack • Choose database • Database can only be accessed by it’s parent service • Expose the api endpoints to be consumed by other services • Should independently handle the request • Adapt the architecture for the whole microservices system Service DB
  • 14. Microservices System What are the building blocks of a microservices system
  • 15. Building blocks of a Microservices System • Service to service communication • Client to service communication • Service discovery • Service security • Service monitoring • Service containerization • Service orchestration • Continuous integration • Continuous delivery
  • 16. Service to service communication • Point to point communication • HTTP request • gRPC request • Asynchronous message-based communication • Queue • Service Bus
  • 17. Http / gRPC request
  • 19. Client to service communication • API Manager / API Gateways • Directly call to the service
  • 22. Service discovery • Mainly applicable for container based architecture • Register the service into a service registry
  • 23. API API API API EventBus Client/APIM Service registry Name: product, Ip: 10.0.0.15 Name: customer, Ip: 10.0.0.16 Name: sales, Ip: 10.0.0.17 Name: identity, Ip: 10.0.0.18 Get product service detail
  • 24. Service security • Authentication server • Handles different types of authentication • Token based • Cookie based • Authorization server • Fully functional RBAC management system • Returns true/false depending on the resource request
  • 25. Service monitoring • Paid • Application insight • Papertrail • Datadog • Free • ELK (self hosted)
  • 26. Service containerization • Multiple service to use multiple types of resources • Different operating system (Linux, Windows etc.) • Different programming language (C#, Python, JavaScript etc.) • Different database (SQL Server, MySQL, MongoDB, ElasticSearch etc.) • Different package versions • We need the runtime and a thin OS layer to execute the system calls • Containers here to rescue • Pack the service (containerize) • Run it anywhere • Docker
  • 27. Service orchestration • How to build the containers in multiple environments • How to run the containers in multiple environments • How to monitor the containers after deployment • How to troubleshoot the containers • Kubernetes, Docker Compose etc.
  • 28.
  • 29. Where to go next? • Build one from scratch
  • 30. Questions? Send email to foyzulkarim@gmail.com Send message to “Foyzul’s Academy” Facebook page

Editor's Notes

  1.  The term "microservice" was discussed at a workshop of software architects near Venice in May, 2011 to describe what the participants saw as a common architectural style that many of them had been recently exploring. In May 2012, the same group decided on "microservices" as the most appropriate name. James presented some of these ideas as a case study in March 2012 at 33rd Degree in Krakow in Microservices - Java, the Unix Way as did Fred George about the same time. Adrian Cockcroft at Netflix, describing this approach as "fine grained SOA" was pioneering the style at web scale as were many of the others mentioned in this article - Joe Walnes, Daniel Terhorst-North, Evan Botcher and Graham Tackley.
  2. https://blog.rsuter.com/logging-with-ilogger-recommendations-and-best-practices/