Technology Architectural Thinking 101

Satyender Yadav
easyeat
Published in
3 min readJan 8, 2022
source — https://www.crowdbotics.com/blog/5-common-software-architecture-patterns-and-when-to-use-them

What is Architecture

In world of programming / Software Development, We often use the term Architecture. While almost every developer with some years experience under their belt are familiar with the term and use it as if they know what it means, we are rarely ever speaking about the same thing when we say it architecture.
Various Meanings we attribute to Architecture casually are.

  1. Set of principles or rules developers / contributors agree upon in development and maintenance of the Software.
  2. Things / Decisions about a system that are hard to change once put in place, like Programming language, deployment method etc.
  3. Infrastructure of application, albeit wrong but frequently we refer to infrastructure diagram as architecture diagram, infra decisions as architecture.
  4. Implementation details that happen point in time during software dev lifecycle confused with Architectural Decision.

My Take

Over past couple of years I have been through various goto talks about architecture, been part of activities around moving from Monoliths to SOA(Service Oriented Architecture) and Monoliths to Micro Services. Also Having read some material like blog post & books surrounding the Design Patterns & Architecture Design. I have formed a view about Architecture that is Filtered and Distilled version of these various definitions, which is,

Architecture is principles & decisions that are largely agreed upon by various contributors to the lifecycle of software, along with structure & integration of these principles & decision with each other.

This can be seen very similar to how we define Grammar of a language, which would be made of Alphabet, Literals and Rules of combining the Literals. Another analogy that comes to my mind which can demonstrate the above definition in an entirely different setting would be following.

Example Restaurant Architectures

Monolithic Restaurant

Every Employee is supposed to be able to perform either cooking, serving or cash management. Its very evident that if a Single Person or Handful people say 2 or 3, if start a new Restaurant Business the Architecture is pretty much Monolithic as Almost everyone is expected to everything as need strike.
Traits
— Ideal for starting up
— Very hard to scale.

Service Oriented Restaurant

An employee is either a cook, or a server or a cashier. In this case for a restaurant to actually be operational with above assumed rule, there is need of at least 3 staff member to be able to do business.
Traits
— Requires a minimal amount of resources, ideal for growth phase
— Scaling can be done at service level, whenever a particular service starts becoming bottleneck more resources can be allocated to that service alone

Micro Service Restaurant

Enter the technology driven restaurant. There are now Muplitple Players / Variations providing the same service. Example, there is a cashier counter as well as few kiosks. You can place order either via kiosk or via cashiers at the counters. There are now servers as well as option to self serve from a pick up point. Business can even take a decision to make self serving at a discounted price. Even at cooking end there can be segregation of cooking and packaging. Where packaging can have its variations like there can be different way of packing for dine in customers, whereas entirely different for take away orders.
Traits
— More Flexibility compared to Service Oriented
— Opens door to more business cases that may not be easy to implement or change with previous architectures
— Incurs Slight cost / resource burden with every breakdown
— Dependency of micro services with each other may not let things scale well if dependency is not well handled, example if cashier & kiosk both are dependent on a central ordering service they will be limited by this central service’s speed and in turn limit speed of remaining services regardless of resources allocated.

Epilogue

This is just beginning of various articles to follow in the series. Hope you as a reader had a good time and this article helped you become a better version of yourself. Thanks.

--

--