We are living in the high tech 21st-century world, where we use to say: “change is the only constant“, it’s not only applicable in software, it’s applicable in general life too. In software, we call it evolution. Whatever we call it, but this is the fact that “change is the only constant“.
If we keep doing the same thing everyday, we use to say get bored in life, nothing new is coming. Doing the same thing every day is called a monotonous or saturated life. We wanted to see better version of ourself in real-life year-on-year or month-on-month, or day-by-day, so we will have to keep changing by exploring new thing and by learning new things.
Law of changes says: Your job is to be a master of change rather than a victim of change.
1. Changes in Software Application
- the architecture of the application
- the table structure of the application
- structuring of logical layers and Tiers for scaling out of application
- Structuring of UI layers for better UI/UX
- Navigation of UI for better UI/UX or SEO engine.
- the way of pulling and pushing the data into and from the database for application to showcase
- the way of caching of data for better performance of the application
- distribution of server’s session to highly available cache systems like Redis or Memcache or any other distributed caching system.
- processing logics of business components
- assigning of processing logic to separate components for separation of Concerned.
2. The Law of Change
Change is inevitable. Because it is driven by expanding knowledge and technology, it is accelerating at a speed never seen before.
For any changes, Low of creativity plays an important role, so understand deeply the Law of creativity. Every change in your life begins with an idea of some kind, and since your ability to generate new ideas is unlimited, so your future can be unlimited as well.
Whatever your mind can conceive and believe, it can achieve
I am very much influenced by the book “Good to Great” by Jim Colin. This book has been published after 10 years of rigours research by more than 20 of his associates. Every chapter of this book is very excited. Even if you open first chapter of this book, you can see, first chapter is “Good is the enemy of Great“. If you are satisfied with the good, which you have in present, you can never ever move towards great. So keep evolving a better version of yourself or better version of next goal.
3. Is our Architecture best?
Let me share one interesting thing in the software world of architecture. When someone used to ask me, what is the best software architecture in the software world? My response to them is “flexible architecture is the best one“. why so? because, change is the only constant, and we need to keep changing in the future, so it should be flexible enough so that when we will have to change as per the demand of that time and business, at least we are able to proceed with our new set of requirement.
When someone claims, I have developed the best architecture, actually, it may be the best as of now, but could be not best in the future. Why so? because this was the best, at that point in time but not now. It was best architecture because of requirements at that time.
As per the rule, It was best at that time of requirement, may be not for today. It may not best for the future. The basic principle of software architecture, when time changes requirements will have to change too, and when a requirement changes our architecture will have to change too. We are saying, change is the only constant then how can we say this is the best one. As per my understanding, that should be flexible enough to accommodate any changes on top of a present or existing one. When we change, it should not be fragile and can be changed easily.
4. Approach of Change in software applications
There is 3 type approach of restructuring of any application as:
1. Top-up Approach
2. Bottom-up Approach
3. Man-in-the-middle Approach
Every approach has its own pros and cons, it depends on who is going to take the lead in this change of the architecture. If you think from a different perspective like DBA perspective, application programmer perspective, UI designer perspective approach gets changed. Whenever we think through the restructuring of any architecture of up & running application, it can have different perspectives. Here, I am explaining one by one
- Top-up Approach: when we do form top to bottom, here top and bottom is the point. e.g. in the Application UI layer will be on the top layer and DB infrastructure will be bottom.
- Bottom-up Approach: from DB to application UI layer
- Man-in-the-middle Approach: Usually we do whenever we are comfortable of starting from any components from the mid.
5. Why we do restructuring?
- for Scalability?
- for maintainability?
- for Cost optimization:
- For UI/UX changes
- for Features
- for Evolution
- for Separation of concerned
- for changes of logical layers Layers
- for changes in physical Tiers
- for Changes of Tech stacks:
- for Security
- for Performance:
- for shifting of responsibility form one component to another component
- for changes in Architecture could be from Monolithic to microservices architecture.
- and can be many more reasons…
You came here, it means you like this article so please write your comment which encourage me and give me more energy to write further. Happy learning 🙂