.NET Fest 2019. Dan Patrascu-Baba. Microservices from the trenches. When buzzwords don’t make your application work

N
Тема доклада
Тема доклада
Тема доклада
KYIV 2019
Dan Patrascu-Baba
Microservices from the trenches
.NET CONFERENCE #1 IN UKRAINE
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
Dan Patrascu-Baba
BIO: Software developer @Amdaris, Founder
@Codewrinkles, Co-organizer @ApexVox
Blog: http://danpatrascu.com
Twitter: @danpdc
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Agenda
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• Microservices architecture overview
• The project
• Lessons learned:
Decomposing services
Messaging
The API gateway
• Conclusions
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
Microservices architecture
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Possible app architecture
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Services are…
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• small in size
• messaging enabled
• bounded by contexts
• autonomously developed
• independently deployable
• decentralized
• built and released with automated processes
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Benefits
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• Scalability
• Agility
• Availability
• Innovation
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Drawbacks?
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
Let's discuss them at the end :)
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
The project
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• The customer is a provider of integrated systems
for Contact Centers
• Rich application ecosystem
• Goal: Rebuild the Time and Attendance solution to
meet modern software architecture standards and
business needs
• How? Use Microservices architecture
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
Lessons learned:
1. Scoping / decomposing services
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Decomposing models
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• By business capability and define services corresponding to business
capabilities
• By DDD bounded contexts
• By verb or use case and define services that are responsible for
particular actions. e.g. a Shipping Service that’s responsible for
shipping complete orders
• By nouns or resources by defining a service that is responsible for all
operations on entities/resources of a given type. e.g. an Account
Service that is responsible for managing user accounts
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Issues
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• How to identify the bounded contexts?
• How to identify business capabilities?
• Which decomposition model is suitable for a given scenario?
• Is it really possible to decompose everything in a meaningful way
following only one model?
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
DEMO:
Decomposing services
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
Lessons learned:
2. Messaging
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Issues
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• A microservices architecture is all about communication
• How should services communicate in any given business scenario?
• Should they call each other synchronously?
• Should they communicate via asynchronous messaging?
• What are the pros and cons of the chosen message brokering
technology?
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Communication patterns
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
Synchronous Calls if:
• we want to query some data, because a query is not changing any state so we don’t have to
worry about distributed transactions and data consistency across service boundaries
• the call is allowed to fail and we don’t need a sophisticated retry mechanism
Simple Messaging if:
we want to send state-changing commands
• the operation must be performed eventually, even if it fails the first couple times
• we don’t care about potentially complex message structure
Transactional Messaging if:
• we want to send state-changing commands only when the local database transaction has
been successful
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Message broker concepts
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• Producer - User application that sends messages to an exchange.
• Exchange - Pushes messages into queues. Exchange types define what to do
with the message when it’s received, whether. appended to a one queue, to
many queues, or discarded. Example exchange types are direct, topic and
fanout.
• Queue - Each exchange contains a buffer, or queue, that stores messages. A
queue is only bound by the host’s memory & disk limits, it’s essentially a large
message buffer. Many producers can send messages that go to one queue, and
many consumers can try to receive data from one queue.
• Consumer - User application that receives messages.
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
DEMO:
Messaging infrastructure
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
Lessons learned:
3. The API gateway
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
What should an API gateway do?
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• Proxying
• Service discovery
• Response aggregation
• Header translation
• Protocol translation
• Load balancing
• Authorization
• Rate limiting
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Available options
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• All the major cloud providers offer such services
• Kubernetes has such a functionality
Drawbacks
• Technology debt
• Additional complexity when setting up environments
• Not very flexible
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
A possible solution in the .NET world…
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• Meets all discussed requirements
• Easy to configure
• Can be extended with own
functionality
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
DEMO:
Ocelot
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP
Conclusions
.NET CONFERENCE #1 IN UKRAINE KYIV 2019
• A microservices architecture adds a lot of complexity that we might tend to
oversea in the planning phase
• Are the benefits really outnumbering the complexities?
• A microservices architecture is not only about software architecture, but also
about the organization and how teams are set up
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
Before deciding on going for a
microservices architecture try to
ask yourself if it’s worth
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
Questions?
Тема доклада
Тема доклада
Тема доклада
.NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019
Thank you!
1 of 27

Recommended

Api more than payload (2021 Update) by
Api more than payload (2021 Update)Api more than payload (2021 Update)
Api more than payload (2021 Update)Phil Wilkins
67 views29 slides
Deep-dive into Microservice Outer Architecture by
Deep-dive into Microservice Outer ArchitectureDeep-dive into Microservice Outer Architecture
Deep-dive into Microservice Outer ArchitectureWSO2
3.5K views33 slides
Microservices: The OSGi way A different vision on microservices by
Microservices: The OSGi way A different vision on microservicesMicroservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservicesMiguel Pastor
6.2K views66 slides
Bluemix overview with Internet of Things by
Bluemix overview with Internet of ThingsBluemix overview with Internet of Things
Bluemix overview with Internet of ThingsEric Cattoir
10K views16 slides
[Open Source Summit 2019] Microservices with Ballerina by
[Open Source Summit 2019] Microservices with Ballerina[Open Source Summit 2019] Microservices with Ballerina
[Open Source Summit 2019] Microservices with BallerinaWSO2
344 views29 slides
apidays LIVE Paris 2021 - Edge Side APIs by Kevin Dunglas, Les Tilleuls by
apidays LIVE Paris 2021 - Edge Side APIs by Kevin Dunglas, Les Tilleulsapidays LIVE Paris 2021 - Edge Side APIs by Kevin Dunglas, Les Tilleuls
apidays LIVE Paris 2021 - Edge Side APIs by Kevin Dunglas, Les Tilleulsapidays
111 views41 slides

More Related Content

What's hot

Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura by
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaHands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaJamie Coleman
18 views41 slides
.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки by
.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки
.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузкиNETFest
251 views52 slides
Oracle Developer Meetup March 2018 by
Oracle Developer Meetup March 2018Oracle Developer Meetup March 2018
Oracle Developer Meetup March 2018Phil Wilkins
1.1K views33 slides
APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX U... by
APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX U...APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX U...
APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX U...apidays
218 views33 slides
Seriously Open Cloud Native Java Microservices by
Seriously Open Cloud Native Java MicroservicesSeriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesJamie Coleman
74 views49 slides
Devoxx 2014 presentation by
Devoxx 2014 presentationDevoxx 2014 presentation
Devoxx 2014 presentationEric Cattoir
2.8K views36 slides

What's hot(20)

Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura by Jamie Coleman
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaHands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Jamie Coleman18 views
.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки by NETFest
.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки
.NET Fest 2019. Андрей Винда. Создание REST API с поддержкой высокой нагрузки
NETFest251 views
Oracle Developer Meetup March 2018 by Phil Wilkins
Oracle Developer Meetup March 2018Oracle Developer Meetup March 2018
Oracle Developer Meetup March 2018
Phil Wilkins1.1K views
APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX U... by apidays
APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX U...APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX U...
APIdays Helsinki 2019 - The Future of the Dynamic Application Server, NGINX U...
apidays218 views
Seriously Open Cloud Native Java Microservices by Jamie Coleman
Seriously Open Cloud Native Java MicroservicesSeriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java Microservices
Jamie Coleman74 views
Devoxx 2014 presentation by Eric Cattoir
Devoxx 2014 presentationDevoxx 2014 presentation
Devoxx 2014 presentation
Eric Cattoir2.8K views
2449 rapid prototyping of innovative io t solutions by Eric Cattoir
2449   rapid prototyping of innovative io t solutions2449   rapid prototyping of innovative io t solutions
2449 rapid prototyping of innovative io t solutions
Eric Cattoir1.1K views
Voxxed Days Minsk. Microservices:
 The phantom menace
. Istio Service Mesh: 
... by Sergii Bishyr
Voxxed Days Minsk. Microservices:
 The phantom menace
. Istio Service Mesh: 
...Voxxed Days Minsk. Microservices:
 The phantom menace
. Istio Service Mesh: 
...
Voxxed Days Minsk. Microservices:
 The phantom menace
. Istio Service Mesh: 
...
Sergii Bishyr288 views
9 patterns of microservices by Al Sayed Gamal
9 patterns of microservices9 patterns of microservices
9 patterns of microservices
Al Sayed Gamal3.1K views
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew... by WSO2
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
WSO2455 views
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo... by Jon Su
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...
Jon Su118 views
Dangerous Demo, Rapid WebRTC application development with Restcomm, Docker an... by Alan Quayle
Dangerous Demo, Rapid WebRTC application development with Restcomm, Docker an...Dangerous Demo, Rapid WebRTC application development with Restcomm, Docker an...
Dangerous Demo, Rapid WebRTC application development with Restcomm, Docker an...
Alan Quayle1.8K views
apidays LIVE JAKARTA - 10 commandments for scalable microservices by Archanaa... by apidays
apidays LIVE JAKARTA - 10 commandments for scalable microservices by Archanaa...apidays LIVE JAKARTA - 10 commandments for scalable microservices by Archanaa...
apidays LIVE JAKARTA - 10 commandments for scalable microservices by Archanaa...
apidays49 views
DevOps India Summit - Cloud Confusion, DevOps Dilemma, Microservice Madness by BMK Lakshminarayanan
DevOps India Summit - Cloud Confusion, DevOps Dilemma, Microservice MadnessDevOps India Summit - Cloud Confusion, DevOps Dilemma, Microservice Madness
DevOps India Summit - Cloud Confusion, DevOps Dilemma, Microservice Madness
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET by NETFest
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
NETFest617 views
apidays LIVE Australia - Data with a Mission by Matt McLarty by apidays
apidays LIVE Australia -  Data with a Mission by Matt McLarty apidays LIVE Australia -  Data with a Mission by Matt McLarty
apidays LIVE Australia - Data with a Mission by Matt McLarty
apidays115 views
[WSO2 Integration Summit San Francisco 2019] The Composable Enterprise by WSO2
[WSO2 Integration Summit San Francisco 2019] The Composable Enterprise[WSO2 Integration Summit San Francisco 2019] The Composable Enterprise
[WSO2 Integration Summit San Francisco 2019] The Composable Enterprise
WSO2322 views
Show and Tell: Building Applications on Cisco Open SDN Controller by Cisco DevNet
Show and Tell: Building Applications on Cisco Open SDN Controller Show and Tell: Building Applications on Cisco Open SDN Controller
Show and Tell: Building Applications on Cisco Open SDN Controller
Cisco DevNet883 views
A Decade of Microservices by Ruman Khan
A Decade of MicroservicesA Decade of Microservices
A Decade of Microservices
Ruman Khan368 views

Similar to .NET Fest 2019. Dan Patrascu-Baba. Microservices from the trenches. When buzzwords don’t make your application work

Net fest final presentation by
Net fest final presentationNet fest final presentation
Net fest final presentationAlexandre Malavasi
84 views31 slides
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ... by
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ....NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...NETFest
535 views31 slides
.NET Fest 2019. Андрей Антиликаторов. Проектирование и разработка Big Data ре... by
.NET Fest 2019. Андрей Антиликаторов. Проектирование и разработка Big Data ре....NET Fest 2019. Андрей Антиликаторов. Проектирование и разработка Big Data ре...
.NET Fest 2019. Андрей Антиликаторов. Проектирование и разработка Big Data ре...NETFest
212 views46 slides
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali... by
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali....NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...NETFest
182 views27 slides
Integrate 2019 - Creating a Processing Pipeline with Azure Functions and AIS by
Integrate 2019 - Creating a Processing Pipeline with Azure Functions and AISIntegrate 2019 - Creating a Processing Pipeline with Azure Functions and AIS
Integrate 2019 - Creating a Processing Pipeline with Azure Functions and AISWagner Silveira
197 views28 slides
Micro Service Architecture by
Micro Service ArchitectureMicro Service Architecture
Micro Service ArchitectureLinjith Kunnon
816 views50 slides

Similar to .NET Fest 2019. Dan Patrascu-Baba. Microservices from the trenches. When buzzwords don’t make your application work(20)

.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ... by NETFest
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ....NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...
.NET Fest 2019. Alexandre Malavasi. The future of Web: what Microsoft Blazor ...
NETFest535 views
.NET Fest 2019. Андрей Антиликаторов. Проектирование и разработка Big Data ре... by NETFest
.NET Fest 2019. Андрей Антиликаторов. Проектирование и разработка Big Data ре....NET Fest 2019. Андрей Антиликаторов. Проектирование и разработка Big Data ре...
.NET Fest 2019. Андрей Антиликаторов. Проектирование и разработка Big Data ре...
NETFest212 views
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali... by NETFest
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali....NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
NETFest182 views
Integrate 2019 - Creating a Processing Pipeline with Azure Functions and AIS by Wagner Silveira
Integrate 2019 - Creating a Processing Pipeline with Azure Functions and AISIntegrate 2019 - Creating a Processing Pipeline with Azure Functions and AIS
Integrate 2019 - Creating a Processing Pipeline with Azure Functions and AIS
Wagner Silveira197 views
Microservices, Containers, Kubernetes, Kafka, Kanban by Araf Karsh Hamid
Microservices, Containers, Kubernetes, Kafka, KanbanMicroservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, Kanban
Araf Karsh Hamid2.6K views
.NET Fest 2019. Roberto Freato. Azure App Service deep dive by NETFest
.NET Fest 2019. Roberto Freato. Azure App Service deep dive.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
NETFest197 views
IoT Physical Servers and Cloud Offerings.pdf by GVNSK Sravya
IoT Physical Servers and Cloud Offerings.pdfIoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdf
GVNSK Sravya310 views
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf... by NUS-ISS
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS103 views
Evolutionary evnt-driven-architecture-for-accelerated-digital-transformation by Slobodan Sipcic
Evolutionary evnt-driven-architecture-for-accelerated-digital-transformationEvolutionary evnt-driven-architecture-for-accelerated-digital-transformation
Evolutionary evnt-driven-architecture-for-accelerated-digital-transformation
Slobodan Sipcic225 views
Transforming the Central Office: Implementing CORD by Radisys Corporation
Transforming the Central Office:  Implementing CORDTransforming the Central Office:  Implementing CORD
Transforming the Central Office: Implementing CORD
Radisys Corporation1.9K views
WSO2Con USA 2017: The Role of Enterprise Integration in Digital Transformation by WSO2
WSO2Con USA 2017: The Role of Enterprise Integration in Digital TransformationWSO2Con USA 2017: The Role of Enterprise Integration in Digital Transformation
WSO2Con USA 2017: The Role of Enterprise Integration in Digital Transformation
WSO2999 views
apidays LIVE Paris 2021 - Synchronous Communication Patterns by Sébastien Ber... by apidays
apidays LIVE Paris 2021 - Synchronous Communication Patterns by Sébastien Ber...apidays LIVE Paris 2021 - Synchronous Communication Patterns by Sébastien Ber...
apidays LIVE Paris 2021 - Synchronous Communication Patterns by Sébastien Ber...
apidays170 views
Openbar 12 - Leuven - From reactive programming to reactive architecture by Openbar
Openbar 12 - Leuven - From reactive programming to reactive architectureOpenbar 12 - Leuven - From reactive programming to reactive architecture
Openbar 12 - Leuven - From reactive programming to reactive architecture
Openbar57 views
CNCF in Japan: Keynote, Open Source Summit Japan, Tokyo by Cheryl Hung
CNCF in Japan: Keynote, Open Source Summit Japan, TokyoCNCF in Japan: Keynote, Open Source Summit Japan, Tokyo
CNCF in Japan: Keynote, Open Source Summit Japan, Tokyo
Cheryl Hung74 views
The Role of Enterprise Integration in Digital Transformation by Kasun Indrasiri
The Role of Enterprise Integration in Digital TransformationThe Role of Enterprise Integration in Digital Transformation
The Role of Enterprise Integration in Digital Transformation
Kasun Indrasiri5.4K views

More from NETFest

.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET by
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NETNETFest
705 views74 slides
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE... by
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE....NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...NETFest
341 views41 slides
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов by
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистовNETFest
516 views40 slides
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem... by
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem....NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...NETFest
254 views7 slides
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design by
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven DesignNETFest
1.5K views55 slides
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex by
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at WirexNETFest
356 views35 slides

More from NETFest(20)

.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET by NETFest
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
NETFest705 views
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE... by NETFest
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE....NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
NETFest341 views
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов by NETFest
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
NETFest516 views
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem... by NETFest
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem....NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
NETFest254 views
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design by NETFest
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
NETFest1.5K views
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex by NETFest
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
NETFest356 views
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A... by NETFest
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A....NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
NETFest1.6K views
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture by NETFest
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
NETFest326 views
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests by NETFest
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
NETFest224 views
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос... by NETFest
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос....NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
NETFest275 views
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production by NETFest
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
NETFest250 views
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com... by NETFest
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com....NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
NETFest204 views
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real... by NETFest
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real....NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
NETFest453 views
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem by NETFest
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
NETFest263 views
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ... by NETFest
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ....NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
NETFest170 views
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET by NETFest
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
NETFest388 views
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur... by NETFest
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur....NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
NETFest243 views
.NET Fest 2019. Eran Stiller. 6 Lessons I Learned on My Journey from Monolith... by NETFest
.NET Fest 2019. Eran Stiller. 6 Lessons I Learned on My Journey from Monolith....NET Fest 2019. Eran Stiller. 6 Lessons I Learned on My Journey from Monolith...
.NET Fest 2019. Eran Stiller. 6 Lessons I Learned on My Journey from Monolith...
NETFest215 views
.NET Fest 2019. Kevin Dockx. Uncovering Swagger/OpenAPI by NETFest
.NET Fest 2019. Kevin Dockx. Uncovering Swagger/OpenAPI.NET Fest 2019. Kevin Dockx. Uncovering Swagger/OpenAPI
.NET Fest 2019. Kevin Dockx. Uncovering Swagger/OpenAPI
NETFest255 views
.NET Fest 2019. Kevin Dockx. OpenID Connect In Depth by NETFest
.NET Fest 2019. Kevin Dockx. OpenID Connect In Depth.NET Fest 2019. Kevin Dockx. OpenID Connect In Depth
.NET Fest 2019. Kevin Dockx. OpenID Connect In Depth
NETFest322 views

Recently uploaded

Gopal Chakraborty Memorial Quiz 2.0 Prelims.pptx by
Gopal Chakraborty Memorial Quiz 2.0 Prelims.pptxGopal Chakraborty Memorial Quiz 2.0 Prelims.pptx
Gopal Chakraborty Memorial Quiz 2.0 Prelims.pptxDebapriya Chakraborty
684 views81 slides
Psychology KS4 by
Psychology KS4Psychology KS4
Psychology KS4WestHatch
90 views4 slides
The Accursed House by Émile Gaboriau by
The Accursed House  by Émile GaboriauThe Accursed House  by Émile Gaboriau
The Accursed House by Émile GaboriauDivyaSheta
212 views15 slides
Monthly Information Session for MV Asterix (November) by
Monthly Information Session for MV Asterix (November)Monthly Information Session for MV Asterix (November)
Monthly Information Session for MV Asterix (November)Esquimalt MFRC
58 views26 slides
Sociology KS5 by
Sociology KS5Sociology KS5
Sociology KS5WestHatch
76 views23 slides
Solar System and Galaxies.pptx by
Solar System and Galaxies.pptxSolar System and Galaxies.pptx
Solar System and Galaxies.pptxDrHafizKosar
94 views26 slides

Recently uploaded(20)

Psychology KS4 by WestHatch
Psychology KS4Psychology KS4
Psychology KS4
WestHatch90 views
The Accursed House by Émile Gaboriau by DivyaSheta
The Accursed House  by Émile GaboriauThe Accursed House  by Émile Gaboriau
The Accursed House by Émile Gaboriau
DivyaSheta212 views
Monthly Information Session for MV Asterix (November) by Esquimalt MFRC
Monthly Information Session for MV Asterix (November)Monthly Information Session for MV Asterix (November)
Monthly Information Session for MV Asterix (November)
Esquimalt MFRC58 views
Sociology KS5 by WestHatch
Sociology KS5Sociology KS5
Sociology KS5
WestHatch76 views
Solar System and Galaxies.pptx by DrHafizKosar
Solar System and Galaxies.pptxSolar System and Galaxies.pptx
Solar System and Galaxies.pptx
DrHafizKosar94 views
Ch. 8 Political Party and Party System.pptx by Rommel Regala
Ch. 8 Political Party and Party System.pptxCh. 8 Political Party and Party System.pptx
Ch. 8 Political Party and Party System.pptx
Rommel Regala53 views
AI Tools for Business and Startups by Svetlin Nakov
AI Tools for Business and StartupsAI Tools for Business and Startups
AI Tools for Business and Startups
Svetlin Nakov111 views
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB... by Nguyen Thanh Tu Collection
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (GLOB...
EIT-Digital_Spohrer_AI_Intro 20231128 v1.pptx by ISSIP
EIT-Digital_Spohrer_AI_Intro 20231128 v1.pptxEIT-Digital_Spohrer_AI_Intro 20231128 v1.pptx
EIT-Digital_Spohrer_AI_Intro 20231128 v1.pptx
ISSIP379 views
11.30.23 Poverty and Inequality in America.pptx by mary850239
11.30.23 Poverty and Inequality in America.pptx11.30.23 Poverty and Inequality in America.pptx
11.30.23 Poverty and Inequality in America.pptx
mary850239167 views
7 NOVEL DRUG DELIVERY SYSTEM.pptx by Sachin Nitave
7 NOVEL DRUG DELIVERY SYSTEM.pptx7 NOVEL DRUG DELIVERY SYSTEM.pptx
7 NOVEL DRUG DELIVERY SYSTEM.pptx
Sachin Nitave61 views
CUNY IT Picciano.pptx by apicciano
CUNY IT Picciano.pptxCUNY IT Picciano.pptx
CUNY IT Picciano.pptx
apicciano54 views
Narration lesson plan by TARIQ KHAN
Narration lesson planNarration lesson plan
Narration lesson plan
TARIQ KHAN59 views

.NET Fest 2019. Dan Patrascu-Baba. Microservices from the trenches. When buzzwords don’t make your application work

  • 1. Тема доклада Тема доклада Тема доклада KYIV 2019 Dan Patrascu-Baba Microservices from the trenches .NET CONFERENCE #1 IN UKRAINE
  • 2. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Dan Patrascu-Baba BIO: Software developer @Amdaris, Founder @Codewrinkles, Co-organizer @ApexVox Blog: http://danpatrascu.com Twitter: @danpdc
  • 3. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Agenda .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • Microservices architecture overview • The project • Lessons learned: Decomposing services Messaging The API gateway • Conclusions
  • 4. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Microservices architecture
  • 5. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Possible app architecture .NET CONFERENCE #1 IN UKRAINE KYIV 2019
  • 6. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Services are… .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • small in size • messaging enabled • bounded by contexts • autonomously developed • independently deployable • decentralized • built and released with automated processes
  • 7. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Benefits .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • Scalability • Agility • Availability • Innovation
  • 8. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Drawbacks? .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Let's discuss them at the end :)
  • 9. Тема доклада Тема доклада Тема доклада .NET LEVEL UP The project .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • The customer is a provider of integrated systems for Contact Centers • Rich application ecosystem • Goal: Rebuild the Time and Attendance solution to meet modern software architecture standards and business needs • How? Use Microservices architecture
  • 10. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Lessons learned: 1. Scoping / decomposing services
  • 11. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Decomposing models .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • By business capability and define services corresponding to business capabilities • By DDD bounded contexts • By verb or use case and define services that are responsible for particular actions. e.g. a Shipping Service that’s responsible for shipping complete orders • By nouns or resources by defining a service that is responsible for all operations on entities/resources of a given type. e.g. an Account Service that is responsible for managing user accounts
  • 12. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Issues .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • How to identify the bounded contexts? • How to identify business capabilities? • Which decomposition model is suitable for a given scenario? • Is it really possible to decompose everything in a meaningful way following only one model?
  • 13. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 DEMO: Decomposing services
  • 14. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Lessons learned: 2. Messaging
  • 15. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Issues .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • A microservices architecture is all about communication • How should services communicate in any given business scenario? • Should they call each other synchronously? • Should they communicate via asynchronous messaging? • What are the pros and cons of the chosen message brokering technology?
  • 16. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Communication patterns .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Synchronous Calls if: • we want to query some data, because a query is not changing any state so we don’t have to worry about distributed transactions and data consistency across service boundaries • the call is allowed to fail and we don’t need a sophisticated retry mechanism Simple Messaging if: we want to send state-changing commands • the operation must be performed eventually, even if it fails the first couple times • we don’t care about potentially complex message structure Transactional Messaging if: • we want to send state-changing commands only when the local database transaction has been successful
  • 17. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Message broker concepts .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • Producer - User application that sends messages to an exchange. • Exchange - Pushes messages into queues. Exchange types define what to do with the message when it’s received, whether. appended to a one queue, to many queues, or discarded. Example exchange types are direct, topic and fanout. • Queue - Each exchange contains a buffer, or queue, that stores messages. A queue is only bound by the host’s memory & disk limits, it’s essentially a large message buffer. Many producers can send messages that go to one queue, and many consumers can try to receive data from one queue. • Consumer - User application that receives messages.
  • 18. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 DEMO: Messaging infrastructure
  • 19. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Lessons learned: 3. The API gateway
  • 20. Тема доклада Тема доклада Тема доклада .NET LEVEL UP What should an API gateway do? .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • Proxying • Service discovery • Response aggregation • Header translation • Protocol translation • Load balancing • Authorization • Rate limiting
  • 21. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Available options .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • All the major cloud providers offer such services • Kubernetes has such a functionality Drawbacks • Technology debt • Additional complexity when setting up environments • Not very flexible
  • 22. Тема доклада Тема доклада Тема доклада .NET LEVEL UP A possible solution in the .NET world… .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • Meets all discussed requirements • Easy to configure • Can be extended with own functionality
  • 23. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 DEMO: Ocelot
  • 24. Тема доклада Тема доклада Тема доклада .NET LEVEL UP Conclusions .NET CONFERENCE #1 IN UKRAINE KYIV 2019 • A microservices architecture adds a lot of complexity that we might tend to oversea in the planning phase • Are the benefits really outnumbering the complexities? • A microservices architecture is not only about software architecture, but also about the organization and how teams are set up
  • 25. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Before deciding on going for a microservices architecture try to ask yourself if it’s worth
  • 26. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Questions?
  • 27. Тема доклада Тема доклада Тема доклада .NET LEVEL UP .NET CONFERENCE #1 IN UKRAINE KYIV 2019 Thank you!