Wednesday, November 11, 2020
Thursday, October 1, 2020
Building Composite Architectures
Recently after Gartner in its recent report highlighted “Composite Architecture” or “Composable Architecture” as one of the five emerging trends in modern innovation and technology for the next 10 years. I started coming across this topic in various technical forums.
“Composability” as such is not a new topic, as we have used this frequently in object-oriented programming to achieve Polymorphism. In software architecture terms it is defined as the combination of software systems to produce a new system. In other words, it is directly connected to the goal of agility and reusability and the whole crux of it is to respond to the changing business spectrum.
Domain-Driven Design to build Composable Application
If we take a step back and go back to the way a simple application created using domain-driven design using an onion architecture. The orchestration layer plays a pivotal role in making an application composable by interacting directly with the repository or service layers.
The orchestration layer as such can either be a WebHooks API, a Data importer, API Controller, Messaging service, or a simple REST or SOAP request.
This kind of atomic structure if done properly can result in designing a system that is open to change its external integration seamlessly and also meet the changing business landscape.
Atomic Architecture
If we take the earlier example and apply it in a larger context, the below visualization depicts a circular relationship between different layers in a typical business domain.
Elements of Composable Architecture
The basic building blocks of a composable system is still around the foundation of Containerization, Microservices, Cloud, API’s, headless architecture, etc.
Conclusion
With a Composable mindset, organizations can uplift isolated business operating models and move towards a more practical loosely coupled technology landscape where systems can be plugged in and out flexibly.
This kind of model perfectly fits with organizations adopting agile ways of working or building modern omnichannel integrations with different types of native Cloud-based SaaS platforms.
This model can also be applied to bridge gaps across the entire ecosystem of legacy and modern applications including areas of a unified experience, operations, transformations, infrastructure, external and internal system integrations.
Thursday, July 30, 2020
Friday, June 19, 2020
10 Fundamental Principles one needs to ask before breaking the monolith platform
Below are some of the key principles that need to be evaluated when one starts to break out services from a monolithic platform.
Thursday, June 11, 2020
The myth of Sharing State when breaking large applications
However, legacy applications are seldom portable, and sharing data or state to all intents and purposes is convoluted. Below are some of the typical concerns that need to be evaluated building or maintaining applications with a single state.
Friday, January 10, 2020
Dealing with Concurrency Issues in large applications
Tuesday, December 17, 2019
Product Oriented Development Methodolgy
- Changes in the organization and team structures
- Changes to the ways of working.
- Product Goal
Definition
Sunday, December 15, 2019
Simple way to create automatic alerts for your application using Slack API
Slack has become one of the most widely used channel for communication between teams in many organizations. It has an open source API that can be used to notify alerts and events to different channels and stakeholders.
Below is a simple spring boot application that uses JPA repository to fetch database contents and communicates to Slack via JSlack api
The spring boot application is present in the following path on github.
https://github.com/shailendrabhatt/spring-boot-slack-notification
Saturday, December 7, 2019
Quick 5 Point Website Inspection for Peak Holiday Traffic
1) Examine the Infrastructure Sizing
Calculating the number of Cores?
Calculate the maximum load or throughput of the system?
Calculate the Average response times?
2) Tweak the Enterprise Search Relevancy
Prioritization of Attributes
Monitoring Search Results
Enterprise Search Engines
3) Keep a Close Vigil on the Browser Load times
Evaluate the Caching TTL
Avoid those Content Publishes
Avoid those External Scripts Calls
4) Tune Database Performance
Evaluate the Database Statistics
Optimize Indexes
5) Network Optimization
Thursday, December 5, 2019
How to develop a quick load test for your micro service application
Sunday, November 24, 2019
Changing Organization Perception in a Microsevices journey - Series Part 6



Do spend resources and time on the monolith and its improvement. Seldom, teams just start concentrating on building new-age technology solutions and hardly spend time understanding the legacy system. Without understanding the monolith, it’s hysterical to even attempt breaking it.
Building Microservices by decreasing Entropy and increasing Negentropy - Series Part 5


Always try to target the first step as is to create a macro service until the core services are demarcated. Once the demarcations are clear it is easy to further split into microservices.
Do not add a dependency to the monolithic platform. Ensure that the new services do not call the monolithic application directly and always access it via the anti-corruption layer.
Concluding Thoughts
- If after building services you are in a situation where all developers congregate to fix production issues
- if teams require several developers and take umpteen number of days to fix issues
- If your applications have several hours of downtime
- If your services cannot be tested as a single entity
- If the teams fear to make changes to the code when adding new features
- If you are reverting code and releases instead of failing fast or failing forward
- If you are building services that access the same database
- If the services and functionality is spread across multiple services and teams
- If your applications take multiple teams and several people to deploy changes to production
- If there are too many services depending on each other
- If your teams are still writing and performing manual tests
- If you are building services with hundred of Classes having hundreds of lines of code
- If you have several services that have not been modified for several months
Dividing and Conquering Microservices using Concern Based Modularization - Series Part 4
“Gather together the things that change for the same reasons. Separate those things that change for different reasons”.
“Deciphering the concern based modularization of an enterprise is an essential requisite to amalgamate the intricacies of the microservices system.”


Once the core services are nailed down, detailing out the Peripheral and Composite services becomes much easier.
Building Microservices by decreasing Entropy and increasing Negentropy - Series Part 5
Microservice’s journey is all about gradually overhaul, every time you make a change you need to keep the system in a better state or the ...