To talk about how the architecture evaluation let’s segregate the time into 3 intervals and see how things have changed.
- Pre 2000
- Years 2000 – 2010
- Post 2010
Before 2000 most of the applications are built from scratch. Every component is designed and built from scratch and this used to increase the development cycles. Waterfall is adopted for project management and because of the huge timelines the chances of failing is high. Development cycles did not adopt to the changes in requirements during the development phase. Business users are not integrated into the development phase which resulted in mismatch when the application is finally delivered. The success rate of projects is very less during this time.
Years 2000 - 2010
The decade of 2000 – 2010 has seen usage of more best practices that the industry has learnt. Before starting the development, project managers and product owners started looking at build vs buy options for some of the components. Even if you incur addition cost in buying some of the readily available components the advantages are high. We could save on the project time lines and quickly validate the business ideas in market. This improved the success rate of the projects. However, the business demands have increased and that brought in more complex architectures to be adopted.
The need for scaling the application has grown with growing business needs. Business features have gone up and the applications have become more complex. Since features are added to the same code base it has become one giant monster. It has become tough to reduce the technical debt since touching any component can have adverse effects to other areas of the application. The evolution of Service oriented architecture during this era helped in resolving some of the issues. People started splitting the applications into different components so that multiple teams can independently work. Because of SOA scaling of application has become easy.
This is also the time when we started seeing huge data getting generated from business applications. The complexity in handling huge data in RDBMS has given way for the evolution of NoSQL databases. BigData has started gaining prominence towards the end.
With all these complexities the significance for roles like security testing, performance testing, penetration testing, Release engineers, production support engineers have gone up. Agile is also adopted more and more for project execution. However, the maturity of Agile is comparatively less in many of the organizations following Agile. The real benefits are not fully experienced by adopting Agile.
Cloud adoption has started catching up fast. Initially there are apprehensions about data security & IP protection but gradually cloud adoption has matured with better processes and practices. Initially cloud adoption was perceived to save cost for the organizations. Most of the sales decks mentioned the cost saving by adopting cloud. But very soon people have realized the cost saving are not high enough.
By adopting cloud hosting, things have become more flexible. There are many commonly used services readily available in cloud platforms for applications to leverage. This has cut down the development time further. One good thing about cloud is we do not need to commit ourselves to a certain infrastructure. It helps us to be flexible while making our technology decisions. For small company’s cloud helped save the initial infrastructure cost. It helped many startups to focus and spend on their core innovation thus leading to more successful products.In the earlier decade (2000-2010) the focus was to build more business features to users but since 2010 the focus primarily shifted towards usability. We started seeing the products move away from huge grid layout designs to a more simplified user workflow designs.
Microservices architecture is hugely popular now. This architecture will help to build disjoint components and club them together to complete the business functionality. Since they are disjoint they can be modified and scaled independently. All this was possible primarily due to the numerous features available in all the cloud service provides in the market today. Companies like Netflix, Uber, AirBnB, Dropbox, Amazon have adopted innovative approaches to resolve their unique challenges. People are more open to share their learnings in Opensource forums.
We started seeing more applications built using BigData and Data science being adopted as a mainstream job function. New innovations have come to study the user behavior and studying the data helped in selling targeted products. Things like recommended products, recommended shows/movies have come studying our earlier purchases. This greatly improved the usability of the applications.
The adoption of Artificial intelligence & deep learning has just begun. I am very certain the years 2020 -2030 will see a dramatic change in the way application are build by keeping Cloud native and AI at the core of the framework. We could see more innovations in the architecture and approaches in the coming 10 years.