Software Application Architecture, JUST DO IT!
In this post, Senior Application Development Manager, Alphonsus Pillai, spotlights the importance of a good architecture as the foundation of application quality and ROI.
I am amazed at the amount of application development, without proper footings and foundations. We could never imagine building a house without proper design, construction, and meeting up-to-date building codes based on the climate and location. However, developers frequently forget to vet out an appropriate architecture and invest the time to apply best practices when building new applications.
Everything is not rocket science according to NASA and big or small, the principals are the same. In software, we don’t need to make things complicated, however, if we build applications on sound footings, those stable, vetted out architectures are more resilient to handle change and adapt in the future. That means you can reap benefits and ROI for many years to come.
The idea of putting key business applications under an architectural microscope can be controversial. How would you like to examine the intricate flows and functionalities of your applications? For some, it might be boring, but for others it may be an adventure on a terrible roller coaster. Reviewing an architecture can rejuvenate a team by building a deeper, intimate knowledge of a solution. That knowledge and confidence gained can better enable you to support applications more strategically.
According to Gartner in 2018, software spend is going to reach a staggering $1/2 trillion. Just imagine, how much you can increase the ROI on that investment if software is built on a solid foundation.
There is a plethora of architectural guidance information available– from best practices at your fingertips, to reference architecture, and solution architecture.
One specific offering Premier Support for Developers can provide is an AAR (Application Architecture Review). This is a multi-day dive into the applications core code base to address issues or concerns, identify gaps, and build a plan to bring the application to current best practices and standards. Keep in mind, if this is a new application, we prescribe a “reference” architecture, based on the specifics of the application.
Relationships between application owners (Dev. Team, Product Team, Project Team, Analyst team, and of course the Sponsor) need to be built on trust. If an application is stable, running smoothly, scaling well, performing well, and has sufficient security, why would anyone propose an Architecture review? A review might not be appropriate after an isolated problem, however, if patterns emerge with recurring outages, that might suggest some underlying issues that need attention. The point here is, there should be specific concerns to focus a review effort: technical debt, deprecating technology, scalability issues, performance issues, loose security, no proven ALM / Methodology patterns, recurring outages, team dynamics, etc. All this would point towards identifying an application that is a good candidate for a review.
Architecture Review Expectations
Once specific concerns have been raised to focus the effort and there is sufficient background info to work with, engage your ADM to help coordinate a review. Keep in mind, application owners may still not be comfortable engaging outside help, or more importantly, may not have people and time to spare, so there needs to be a clear expectation of the purpose and the outcome.
MS Architecture Recommendations / Guidelines
Microsoft supports many industries like manufacturing, agriculture, finance, etc., many of which may promote architectures and guidelines that are unique to their space. When we lead an architecture review, we are recognizing and considering the industry. Since Premier Support works with customers in every industry, we’re in a good position to blend both Microsoft recommendation with industry best practices (SaaS, IoT, Blockchain, etc.). As part of your Premier Support relationship, we can partner with your application owners to strategically advance business goals and software quality.
The review process is often made up of several iterations that involve different teams and stakeholders to establish concerns, gather information, and prioritize goals. The intent is to establish a proposal where the concerns are clear and the outcomes can be measured. For instance, a concern of “current batch processing is too slow” might establish an outcome targeting “specific performance recommendations to optimize batch processing”. After scope is established and addressable issues are prioritized, Microsoft will typically engaged a variety of resources who specialize in technical areas to contribute to the effort and anchor to core technical areas.
An example request from a customer might be: We are running a .NET MVC app with dependency injection, JSON, Node.js, and 3rd party software with heavy transactions, long running multi threaded operations, on SQL Server 2008, with dev teams in US, China, India, and Turkey. Our main concern is performance, as we are planning to move to Azure. There are a lot of moving parts, so where to begin? SQL? Front-end? Middle-tier? Deployment process? Azure? Team dynamics and ALM process? Where do we start?
A good place to begin is to determine technologies where you could anchor the request and use your ADM to engage resources with expertise in these areas. Casual conversations between your business and technology stakeholders and Microsoft Premier Support resources can help break down complex systems into smaller, manageable components to scope, examine, and review one by one.
In many situations, Architecture Reviews can be an ideal way to validate application design, build team knowledge, and promote better supportability. After proposing these and conducting numerous sessions over the past several years with my customers, I am in the camp that this will give everyone a deeper understanding of what is on-hand, and how to improve. This is a true partnership with our application owners, where at the end of that process both sides have learned a lot more and can partner on a more strategic level moving forward.
Premier Support for Developers provides strategic technology guidance, critical support coverage, and a range of essential services to help teams optimize development lifecycles and improve software quality. Contact your Application Development Manager (ADM) or email us to learn more about what we can do for you.