19.11.2022 Views

NET-Microservices-Architecture-for-Containerized-NET-Applications

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

• File storage offers shared storage for legacy applications using standard SMB protocol. Azure

virtual machines and cloud services can share file data across application components via

mounted shares. On-premises applications can access file data in a share via the File service

REST API.

• Table storage stores structured datasets. Table storage is a NoSQL key-attribute data store,

which allows rapid development and fast access to large quantities of data.

Relational databases and NoSQL databases. There are many choices for external databases, from

relational databases like SQL Server, PostgreSQL, Oracle, or NoSQL databases like Azure Cosmos DB,

MongoDB, etc. These databases are not going to be explained as part of this guide since they are in a

completely different subject.

Service-oriented architecture

Service-oriented architecture (SOA) was an overused term and has meant different things to different

people. But as a common denominator, SOA means that you structure your application by

decomposing it into multiple services (most commonly as HTTP services) that can be classified as

different types like subsystems or tiers.

Those services can now be deployed as Docker containers, which solves deployment issues, because

all the dependencies are included in the container image. However, when you need to scale up SOA

applications, you might have scalability and availability challenges if you’re deploying based on single

Docker hosts. This is where Docker clustering software or an orchestrator can help you, as explained in

later sections where deployment approaches for microservices are described.

Docker containers are useful (but not required) for both traditional service-oriented architectures and

the more advanced microservices architectures.

Microservices derive from SOA, but SOA is different from microservices architecture. Features like

large central brokers, central orchestrators at the organization level, and the Enterprise Service Bus

(ESB) are typical in SOA. But in most cases, these are anti-patterns in the microservice community. In

fact, some people argue that “The microservice architecture is SOA done right.”

This guide focuses on microservices, because a SOA approach is less prescriptive than the

requirements and techniques used in a microservice architecture. If you know how to build a

microservice-based application, you also know how to build a simpler service-oriented application.

Microservices architecture

As the name implies, a microservices architecture is an approach to building a server application as a

set of small services. That means a microservices architecture is mainly oriented to the back-end,

although the approach is also being used for the front end. Each service runs in its own process and

communicates with other processes using protocols such as HTTP/HTTPS, WebSockets, or AMQP.

Each microservice implements a specific end-to-end domain or business capability within a certain

context boundary, and each must be developed autonomously and be deployable independently.

Finally, each microservice should own its related domain data model and domain logic (sovereignty

25 CHAPTER 3 | Architecting container and microservice-based applications

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!