Innovation in Software Architecture
Atul Joshi
Experienced Technology Leader | Senior Architect @ Western Union | AWS Certified Solutions Architect
Technology architect’s role is changing! Traditionally, software architects operated at a high levels – Initial customer/project meetings, proposals, multi level designs, team hand-holding and periodic reviews to ensure right direction were the basic responsibilities. All this is based on certain standard design & architecture patterns, industry proven methodologies and multi years of experience that an architect brings in. Since last few years, many things are changing – 1) Customers are more informed 2) Technologies are getting smarter 3) Big data and analytics are the necessary extensions of all customer facing applications 4) Cost considerations 5) Security by design and architecture is essential 6) Innovation is becoming essential for services and product organizations. There are also changes to the operating environment where software architects work. All this demands a changed approach or innovation in this very important role.
Well, architects were always learning, new technologies and requirement challenges enriched their experiences, so how it is different now? To answer that – 1) Understand at the pace with which new technologies are showing up 2) Non-functional requirements are changing (smart, auto-healing etc.) 3) Cost factor demands new patterns 4) Cloud platforms require you to know from network to the service commercials 5) Internet of things projects need broad expertise and finally 6) New flat organizational structures demands you to be hands-on team player.
Traditionally multi layer architecture was the proven pattern in terms of separation of concerns, but emerging trends like server-less functions are radically changing our design thought process and also produces new challenges in terms of monitoring those processes. Cloud managed services offers great new way of focusing on your core functionality and at the same time it demands good balance between cost, vendor lock-in and the application needs.
Continuous learning and improvements means we need to innovate over and above our traditional approach. This at first, demands, acceptance and agility towards the new ideas and the needs. If your organization supports, then be part of the team and take ownership of your solution, take advantage of virtualization and cloud environment to run proof of concept for emerging technologies. Be part of the processes like BDD and TDD to understand pain of implementing high level architecture at a developer level. By doing this, you would rediscover ingredients of an applications that ensures quality by supporting the continuous deployments process. You would also find that traditional OO concepts can also be challenged during this process.
Solution architects were always involved in communicating the solution road-map amongst all the stakeholders from business to developers, this ensured focused efforts from everyone; I see this role taking center stage in an agile team. Architect’s also can start contributing towards new set of design patterns demanded from IOT and analytics projects; which still is little unorganized area when talking about solution architecture.
Serverless architecture, microservices, application containerization, streaming patterns, single page architecture technologies and encryption patterns are some of the areas where lot of innovation is happening, be part of the open source software groups and forums to keep pace with and contribute in those areas.
Finally it is very important for an architect to focus on the solution rather than the underlying technologies; this process of bringing in innovation towards our approach would ensure that we always get best possible technology and processes to strengthen our solution.