Architecture Evolution
Looking at the speed at which requirements are evolving ( #Agile ) for new applications , it imperative application architectures is well laid out and understood by all stakeholders. Architectures are becoming complex with new platforms, tools & programming languages and on top of that everyone wants their application to fit into #cloudnative #cloudfirst architectural style.
Many project teams also want to follow agile and don't believe in going through proper arch definition phase. Yes I agree architecture can evolve but certain architectural principles needs to be defined and governed by the team to ensure no challenges towards fag end of the project.
My top 5 architecture principles to succeed in most projects will be
- Believe in #reuse and don't try to create many components from grounds up. I still see many teams reinvent common libraries and controls like Grid. Creating a new control may not be technically challenging to begin with but one need to keep in mind stabilization phase and also unique requirements that can complicate the implementation
- Create low fidelity design documents like sequence diagram to communicate solution design . This can be minimal documentation for complex use cases and not necessary for all
- Depending upon the size of the project, ensure there is loose coupling in application modules and dependencies managed well. This can help a lot in code management and #devops implementation to ensure speed to market is not impacted. I have seen teams spending days together to merge code than using simple solutions like #featuretoggles
- Focus on operations from day 1 and ensure there are appropriate logging, auditing enabled to help with production triage and quick resolution of issues. Keep in mind tools that will be used and how data needs to be made available by application to those
- Architectural governance and compliance should lay down principles #design patterns that application can follow for certain usage patterns for example how user interface will talk to API gateway and how data should be transformed and transferred between different application layers
Good luck in transforming IT landscape for your businesses and clients. Let us ensure that architecture is #fitforpurpose and clearly communicated to all stakeholders. Wherever possible, think about architectural compliance using tools to identify any #antipatterns that can impact application performance and make your code complex to maintain
That's so true, Rakesh. Thanks for sharing. These basic architecture principles are really critical to the success of any project. You have put this together in such simple words. I see great value in each of these, especially the one "Focus on operations from day 1". I can relate many instances in some of the projects where appropriate logging and auditing is not enabled and the teams struggled to debug production issues. This brings in lot of frustration to the customers (due to high turn around time) resulting in credibility loss. The architecture has to be #fitforpurpose!