Categories
Architecture Microservices

Principles of Microservice Architecture

The term “Microservice Architecture” has become popular over the last few years descibe a way of designing large scale software applications as suites of small, independently deployable services. While there’s no precise definition of this style of architecture, there are certain common characteristics around organisation around business capability, automated deployment, intelligence within the endpoints, and decentralized control of languages and data.

The common guiding principles of microservices are:

Small

All services are small, fulfiling a single business function. Ideally each service is developed and operated by a small, agile, autonomous team.

Cohesive

All service implementation is part of fulfilling the single service business function. Anything that is not should be part of a seperate service.

Independent

Services are capable of being deployed independently and generally no direct coupling exists between services. Some services may communicate with

Stateless

A stateless service handles every request with the information contained only within it. Microservices should generally be stateless and service each request without “remembering” any previous communications from the service client(s).

Categories
.NET Core Architecture Microservices

Microservices using .NET Core

As previously discussed, the term “microservice” covers a software development paradigm that has grown from contemporary practices that are intended to increase the speed and efficiency of developing and managing software solutions at scale. Microservices is more about applying a set of principles and architectural patterns than it is about architecture itself. Each microservice lives independently, but are depended upon by one or more business applications. All microservices in an enterprise are deployed into production at their own timeframe, either on-premise or in the cloud or a mixture of both. Each service exists independently, but the enterprise as a whole depends on each toa greater or lesser degree.

.NET Core provides an ideal platform for building and operating a microservice based enterprise. It is truly Object Oriented, highly performant, and modern, continuously evolving language incorporating many of the most useful “design patterns” natively, such as Factories, Templates, Builders, Iterators and of course, Model-View-Controller, along with many other standard patterns to standardise and speed up development of your services.