Table of Contents(non-restricted links)Design Patterns
- How to Avoid Exponential Growth of Classes by Applying Bridge Pattern in C#
- Ugly dependency graph? The Mediator Design Pattern is the solution for you.
- Decoupling with Chain of Responsibility Pattern in C#
- How to manage states with State Design Pattern in C#
- How to Dynamically Add Behaviors With Decorator Pattern
- How to Switch the Algorithms at Runtime with Strategy Pattern in C#Software Architecture & Refactoring
- How to Rewrite your Code to Achieve More Flexible Design(Single Responsibility Principle)
- Four Reason to Change your Software
- How to safely extend your legacy code
- Seven Techniques to Master Error Handling
- How did I reduce the load time of my application
- Recipe to greatly layered architecture
- 3 Domain-Centric Architectures Every Software Architect Should Know
- 3 CQRS Architectures that Every Software Architect Should Know
- Layers in Software Architecture that Every Sofware Architect should Know
- Screaming Architecture & Functional Organization of Folders
- From Monolith to Microservices in 5…
First, we will find out what is Monolithic Architecture. Therefore, I will show you how to modify its domain to be ready for Microservice Architecture. In the end, I will briefly tell you the basics of Microservice Architecture and judge its pros and cons.
Monolithic Architecture is every non-vertically divided architecture. Vertical division in software design means splitting the application into more deployable units. This does not mean that monolith can’t be horizontally divided into layers.
The adjective monolithic refers that the architecture of software consists of one backend unit. …
Let me hear you scream like you want it
Let me hear you yell like you mean it
This is a part of the refrain from Ozzy Osbourne’s song “Let Me Hear You Scream.” Let me modify it a little bit into a software-related context.
Let me hear it screams like client want it
Let me hear it yells like client mean it
Otherwise, let your software architecture copy the intent of an application. The purpose of the application is mostly what the client wants. This is the ceiling of my creativity. Enjoy it. It will not get any better.
The author of the term Screaming Architecture is Robert C. Martin. He is presenting it in the blog post from 2011. …
This year is hard for all of us. When everybody is scared of how global warming affects humanity's future, other catastrophes came by. Large fires in Australia, COVID-19 Pandemic, American Riots, and recent events, the Islamic state’s strikes in France and Austria.
But from my individual perspective, I love the year 2020. This year was groundbreaking for my career. My long-term relationship with the love of my life could not be better, and I doubled my incomes in nine months. Here is what happen.
Layers are horizontal (don’t get confused with title image) abstract parts of an application. Their boundaries are making a right angle with the data flow. Layers are representing the different levels and types of abstraction of the concerns which accompany software development.
This is the most common architecture pattern, also known as the n-tier architecture pattern. …
Identity is a unique identification of an object. Such an object can be a human being, machine, or a combination of it. When we talk in the cloud computing context, identity means a set of properties about this object stored in the cloud's datacentre.
Identity Management (IdM) and Identity and Access Management (IAM) is an interchangeable term in identity access management. So if you are reading about one, you are probably reading about the second term too.
IAM is a framework of policies that tell what users can do in their restricted area and what he needs from the user to operate properly. Such systems identify, authenticate, and authorize individuals or hardware applications to use restricted resources. …
In 1988 Bertrand Meyer devised the CQS principle for object-oriented languages in the book Object-Oriented Software Construction. In simple words, the principle says that software should either modify the system (commands) or return values (queries) and you should maintain the command-query separation in your software.
The expression domain is occurring in software bibles for a very long time now and is heavily discussed in the book Domain-Driven Design by Eric Evans. The domain is the real-world context which you are attempting to solve by writing a piece of software. Simply said, the domain is the thing why software exists and is about.
Evans divides the domain into three subdomains.
The core domain represents a competitive advantage and the software’s reason for being. It is a hearth of the software with the most fundamental business rules, use cases, and domain models. It usually is the smallest part of the codebase. …
Once you have your Azure account and access into Azure portal, you are ready to create your first Azure Resource Group and add some resources into it. You will also need a subscription. If you don’t have any of those things then I would recommend you to see my tutorial How to Create an Azure Account.
Azure Resource is the manageable item in Azure. It includes things like Virtual Machines, Azure Storage Accounts or Azure Web Service. The Azure resource is an instance of Azure Services.
There are three basic divisions of Azure Services.
Most of the Azure resources demand the region to be specified. I was struggling with this choice and always picked the one nearest to my location. Lately, I found out that the choice should be made more based on the physical location of resource users than the location of me, and I changed it.
After a while, one question still bothers me — Does the choice of region matter more than I think? Then, I started to dig deeper into this topic and boy. It really matters, especially on enterprise application levels.
Azure regions approximately specified Azure Resource’s physical location. It is not the precise location of the machine your resource is hosted on but it’s more the scope where you expect the majority of requests. …