Skip to content

Commit 99fd1e7

Browse files
robvetamolenkEdwinVWSumit GhoshRob Vettor
authored andcommitted
Dapr/release/ch1 world dist (dotnet#21266)
* Create folder for Dapr for .NET Developers * Remove dapr-for-net-devs folder with readme file * added outline * Closer to it * WIP * First pass for review * First pass for review * Update the-world-is-distributed.md * Update the-world-is-distributed.md * Updates on PR suggestions * More updates on PR suggestions * Word-smithing * Adding SOA * Added suggestions * suggestions added * Final updates before PR to MSFT Team * Update docs/architecture/dapr-for-net-developers/the-world-is-distributed.md Co-authored-by: Sumit Ghosh <[email protected]> * Update docs/architecture/dapr-for-net-developers/the-world-is-distributed.md Co-authored-by: Sumit Ghosh <[email protected]> * Update docs/architecture/dapr-for-net-developers/the-world-is-distributed.md Co-authored-by: Sumit Ghosh <[email protected]> * Update docs/architecture/dapr-for-net-developers/the-world-is-distributed.md Co-authored-by: Sumit Ghosh <[email protected]> * Updates for Microsoft review * fixed lint errors * Updated cover Co-authored-by: Sander Molenkamp <[email protected]> Co-authored-by: Edwin van Wijk <[email protected]> Co-authored-by: Sumit Ghosh <[email protected]> Co-authored-by: Rob Vettor <[email protected]>
1 parent 119265e commit 99fd1e7

File tree

6 files changed

+63
-39
lines changed

6 files changed

+63
-39
lines changed

docs/architecture/dapr-for-net-developers/index.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ Authors:
4848
Participants and Reviewers:
4949

5050
> **Nish Anil**, Senior Program Manager, .NET team, Microsoft
51+
>
52+
> **Mark Fussell**, Prinicpal Program Manager, Azure Incubations, Microsoft
53+
>
54+
> **Yaron Schneider**, Prinicpal Software Engineer, Azure Incubations, Microsoft
55+
>
56+
> **Ori Zohar**, Senior Program Manager, Azure Incubations, Microsoft
5157
5258
Editors:
5359

@@ -65,8 +71,6 @@ A secondary audience is technical decision-makers who plan to choose whether to
6571

6672
## How you can use this guide
6773

68-
Blah
69-
7074
This guide is available both in [PDF](https://dotnet.microsoft.com/download/e-book/cloud-native-azure/pdf) form and online. Feel free to forward this document or links to its online version to your team to help ensure common understanding of these topics. Most of these topics benefit from a consistent understanding of the underlying principles and patterns, as well as the trade-offs involved in decisions related to these topics. Our goal with this document is to equip teams and their leaders with the information they need to make well-informed decisions for their applications' architecture, development, and hosting.
7175

7276
## Send your feedback
61.7 KB
Loading
28.6 KB
Loading
32.7 KB
Loading

docs/architecture/dapr-for-net-developers/the-world-is-distributed.md

Lines changed: 56 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,95 @@
11
---
22
title: The World is Distributed
3-
description: Gain an understanding of the challenges of distributed applications
3+
description: The benefits and challenges of distributed applications with a look at monolithic and SOA approaches.
44
author: robvet
5-
ms.date: 09/17/2020
5+
ms.date: 11/07/2020
66
---
77

88
# The world is distributed
99

10-
Modern, distributed systems are in and, monolithic apps are out! Just ask any 'cool kid.'
10+
[!INCLUDE [book-preview](../../../includes/book-preview.md)]
1111

12-
But, interestingly, they aren't the only ones saying it. More and more, corporate architects and IT leaders are designing new and replatforming existing enterprise applications to fit this mold.
12+
Just ask any 'cool kid': *Modern, distributed systems are in, and monolithic apps are out!*
1313

14-
As a developer, architect, or IT leader...
14+
But, it's not just "cool kids." Progressive IT Leaders, corporate architects, and astute developers are echoing these same thoughts as they explore and evaluate modern distributed applications. Many have bought in. They're designing new and replatforming existing enterprise applications following the principles, patterns, and practices of distributed microservice applications.
15+
16+
But, this evolution raises many questions...
1517

1618
- What exactly is a distributed application?
17-
- Why is it important?
19+
- Why are they gaining popularity?
1820
- What are the costs?
1921
- And, importantly, what are the tradeoffs?
2022

21-
For years, we designed, developed, and deployed applications as a single, monolithic unit. Figure 1.x shows a monolithic architecture.
23+
To start, let's rewind and look at the past 15 years. During this period, we typically constructed applications as a single, monolithic unit. Figure 1-1 shows the architecture.
2224

2325
![Monolithic architecture.](./media/monolithic-design.png)
2426

25-
**Figure 1**. Monolithic architecture.
27+
**Figure 1-1** : Monolithic architecture.
2628

27-
In the previous figure, note how modules for Ordering, Identity, Marketing, and others, all reside in a single-server process. Application state is stored inside a shared relational database. Business functionality is exposed via HTML and RESTFul interfaces.
29+
Note how the modules for Ordering, Identity, and Marketing execute in a single-server process. Application data is stored in a shared database. Business functionality is exposed via HTML and RESTful interfaces.
2830

29-
Although straightforward, monolithic architectures present many challenges:
31+
In many ways, monolithic apps are `straightforward`. They're straightforward to...
3032

31-
- Coupling
32-
- Deployment
33-
- Scaling
33+
- build
34+
- test
35+
- deploy
36+
- troubleshoot
37+
- scale vertically (scale up)
3438

35-
As the application grows in size, complexity, and volume, these challenges become more pronounced. Eventually, you enter the `Fear Cycle`. The *fear cycle* is a state in which you have lost control of your monolithic application.
39+
However, monolithic architectures can present significant challenges.
3640

37-
The Microsoft guidance eBook, [Architecting Cloud-Native .NET Apps for Azure](https://docs.microsoft.com/dotnet/architecture/cloud-native/), provide the obvious giveaways:
41+
Over time, you may reach a point where you begin to lose control...
3842

39-
- The app has become so overwhelmingly complicated that no single person understands it.
40-
- You fear making changes - each change has unintended and costly side effects.
41-
- New features/fixes become tricky, time-consuming, and expensive to implement.
42-
- Each release as small as possible and requires a full deployment of the entire application.
43+
- The monolith has become so overwhelmingly complicated that no single person understands it.
44+
- You fear making changes as each brings unintended and costly side effects.
45+
- New features/fixes become time-consuming and expensive to implement.
46+
- Even the smallest change requires full deployment of the entire application - expensive and risky.
4347
- One unstable component can crash the entire system.
44-
- New technologies and frameworks aren't an option.
45-
- It's difficult to implement agile delivery methodologies.
48+
- Adding new technologies and frameworks aren't an option.
49+
- Implementing agile delivery methodologies are difficult.
4650
- Architectural erosion sets in as the code base deteriorates with never-ending "special cases."
47-
- The consultants tell you to rewrite it.
51+
- Eventually the consultants come in and tell you to rewrite it.
52+
53+
IT practitioners call this condition `the Fear Cycle`. If you've been in the technology business for any length of time, good chance you've experienced it. It's stressful and exhausts your IT budget. Instead of building new and innovative solutions, the majority of your budget is spent maintaining legacy apps.
54+
55+
Instead of fear, businesses require `speed and agility`. They seek an architectural style with which they can rapidly respond to market conditions. They need to instantaneously update and individually scale small areas of a live application.
56+
57+
An early attempt to gain speed and agility came in the form of [Service Oriented Architecture](https://en.wikipedia.org/wiki/Service-oriented_architecture), or `SOA`. In this model, service consumers and service providers collaborated via middleware messaging components, often referred to as an [Enterprise Service Bus](https://en.wikipedia.org/wiki/Enterprise_service_bus), or `ESB`. Figure 1-2 shows the architecture.
58+
59+
![SOA.](./media/soa-basic.png)
4860

49-
Instead of fear, businesses need speed and agility. They seek an architectural style enables them to rapidly respond to market conditions. They can instantaneously update small areas of a live, complex application, and individually scale those areas as needed.
61+
**Figure 1-2** SOA architecture.
5062

51-
Many organizations are mitigating the monolithic fear cycle. They are gaining speed and agility by adopting a distributed architectural approach to building systems. Figure 1 shows the same system built applying cloud-native techniques and practices.
63+
With SOA, centralized service providers registered with the ESB. Business logic would be built into the ESB to integrate providers and consumers. Service consumers could then find and communicate with these providers using the ESB.
64+
65+
Despite the promises of SOA, implementing this approach often increased complexity and introduced bottlenecks. Maintenance costs became high and ESB middleware expensive. Services tended to be large. They often shared dependencies and data storage. In the end, SOAs often resulted in a 'distributed monolithic' structure with centralized services that were resistant to change.
66+
67+
Nowadays, many organizations have realized speed and agility by adopting a distributed microservice architectural approach to building systems. Figure 1-3 shows the same system built using distributed techniques and practices.
5268

5369
![Distributed architecture.](./media/distributed-design.png)
5470

55-
**Figure 1**. Distributed architecture.
71+
**Figure 1-3** : Distributed architecture.
72+
73+
Note how the same application is decomposed across a set of distributed services. Each is self-contained and encapsulates its own code, data, and dependencies. Each is deployed in a software container and managed by a container orchestrator. Instead of a single database shared by multiple services, each service owns a private database. Other services cannot access this database directly and can only get to data that is exposed through the public API of the service that owns it. Note how some services require a full relational database, but others, a NoSQL datastore. The Basket service stores its state in a distributed key-value cache. Note how inbound traffic routes through an API Gateway service. It's responsible for directing calls to back-end services and enforcing cross-cutting concerns. Most importantly, the application takes full advantage of the scalability, availability, and resiliency features found in modern cloud platforms.
74+
75+
But, while distributed services can provide agility and speed, they present a different set of challenges. Consider the following...
5676

57-
Note in the previous figure how the same application is decomposed across a set of distributed services. Each is self-contained and encapsulates its own code, data, and dependencies. Each is deployed in a software container and managed by a container orchestrator. Instead of a large relational database, each service owns it own datastore, the type of which vary based upon the data needs. Note how some services depend on a relational database, but other on NoSQL databases. One service stores its state in a distributed cache. Note how all traffic routes through an API Gateway service that is responsible for directing traffic to the core back-end services and enforcing many cross-cutting concerns. Most importantly, the application takes full advantage of the scalability, availability, and resiliency features found in modern cloud platforms.
77+
- How can distributed services discover each other and communicate synchronously?
78+
- How can they implement asynchronous messaging?
79+
- How can they maintain contextual information across a transaction?
80+
- How can they become resilient to failure?
81+
- How can they scale to meet fluctuating demand?
82+
- How are they monitored and observed?
5883

59-
But, while distributed applications can help bring agility and speed, they bring many challenges.
84+
For each of these challenges, multiple products are often available. But, shielding your application from product differences and keeping code maintainable and portable become a challenge.
6085

61-
| Challenge | Description |
62-
| :-------- | :-------- |
63-
| State Management | Maintaining contextual information during a transaction |
64-
| Interservice Communication | Communicate with other independent services |
65-
| Messaging | |
66-
| Obseraviblity | End-to-end monitoring of processes executing on different machines |
86+
This book introduces Dapr. Dapr is a distributed application runtime. It directly addresses many of the challenges found that come along with distributed applications. Looking ahead, Dapr has the potential to have a profound impact on distributed application development.
6787

68-
So, what exactly is Dapr? Sit back, relax, and let us help you explore this new world.
88+
## Summary
6989

70-
In this chapter, we introduced Dapr. Blah. We provided a definition along with the key capabilities that drive a cloud-native application. We looked at the types of applications that might justify this investment and effort.
90+
In this chapter, we discussed the adoption of distributed applications. We contrasted a monolithic system approach with that of distributed services. We pointed out many of the common challenges when considering a distributed approach.
7191

72-
With the introduction behind, we now dive into a much more detailed look at cloud native.
92+
Now, sit back, relax, and let us introduce you the new world of Dapr.
7393

7494
### References
7595

docs/architecture/dapr-for-net-developers/toc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
items:
44
- name: The world is distributed
55
href: the-world-is-distributed.md
6-
displayName: distributed system, distributed application, microservice, monolithic
6+
displayName: distributed system, distributed application, distributed architecture, microservice, SOA, monolithic, monolithic architecture

0 commit comments

Comments
 (0)