Monolith To Microservices
Sachin Dabir | Founder & Director, Ashnik
In my last article – Trends and Technologies: looking back to look ahead, I talked about the past and upcoming trends in infrastructure technologies – Computing power to Containerization.
Now, let’s look at how application development and packaging have evolved, and, what are the key trends that you should watch out for…
Traditional application development has been termed as Monolith application for the reasons the way it is built. Entire application is one big mountain of code packaged together and shipped on set of CDs and installed on server. Typically, these applications were written for centralized environment such as Mainframe or Unix servers and to be accessed by terminals.
With the advent of Desktops, there came a wave of ‘Client- Server’ era. The applications were written to take advantage of resources available at the desktop end and compliment it with the server’s computing power. The application development practice was tricky, and this era gave rise to a lot of new tools. Though this particular wave didn’t last long, as the internet was setting the industry on fire.
With availability of internet in the mass market, a Three-Tier-Architecture came into picture. It was loved by all. You could segregate your application into backend, business logic and web-frontend. This era gave rise to need to a new set of standards in order to create uniformity in accessing of applications. This era gave ‘Java’ (not the coffee!!) to the world and ‘run anywhere’ became a catch phrase. Application development and packaging became complex; yet it simplified the deployment in many ways. Assumption of availability of network was central to this development architecture. This era also created new concepts such as Object-Oriented programming, re-usable components etc. These concepts were taken to new heights in subsequent time.
The number of applications started growing within the organizations, and business units slowly started getting involved. The typical ‘only-IT team-knows-everything’ syndrome had to invent a way to be efficient in catering to the rising demands. Similarly, applications written for silos were not good enough. It was realized that applications were required to talk to each other within the organization. This gave rise to ‘Service-Oriented-Architecture’. A concept of service bus was introduced in the application design and each application was communicating with other through this service bus.
Barring this, the deployment architecture had not changed much. Only change that was happening was Unix servers gave way to Linux servers and network/s became powerful for faster application access.
“Microservices – DevOps – Containerization”
The advent of containerization has given new options of deployment. As mentioned in my previous article, containerization is promising to overcome the potential lock-in created by Cloud vendors. Containerization allows smaller footprints and massively scalable (up and down) deployment mechanism. To truly take advantage of this platform, your application has to be architected appropriately.
Micro-services is an approach that addresses new business realities. It offers lot of benefits, but it also introduces complexities. Usually whether to adopt microservice architecture approach or not is the decision based on business environment. I am listing key considerations that one should be aware of while making this decision.
- How dynamic is your business environment?
- How many new applications are you developing and anticipate developing?
- What technical skill sets your team has?
- How easy is to re-train or hire new skills?
- Can you attract and retain good talent?
- What are the dynamics of your deployment platforms?
- For existing application to be broken into microservices, how much institutional knowledge do you have?
Along with these considerations, you need to also take into account what kind of development approach / environment you want to adopt. Key benefits of microservices that you are looking for are – rapid development and deployment. For this to happen, you must adopt appropriate culture; and DevOps is the way to go. We would talk about DevOps practices in detail in the next article.
To conclude, the new trends in application development and deployment are centered around microservices architecture, DevOps culture and Container platform for deployment. Stay tuned to these areas to be successful, professionally and personally.
- Sachin is veteran in IT industry and brings over 25 years of experience in setting up new businesses, leading high performance sales teams and executing growth strategies. He is passionate about open source and is an acknowledged leader in open source in Asia. As a founder of Ashnik he is leading the growth initiatives and taking Ashnik global. His stints in Asia, UK and USA enables him to bring unique perspective to entrepreneurship and life. His interests in writing, reading and mentoring makes him an excellent networker. Currently he is learning to be a patient father to teenage sons and striving to be a good husband.
- Multi-cloud strategy: What it doesn’t guarantee
- What it means to complete 11 years in the open source business
- In Hybrid Cloud Architecture, Redis is the key component!