Architectural patterns are smart, reusable solutions to routine issues encountered by software architects, developers and operators. In this interview, Harihara Subramanian, co-author of the book “Architectural Patterns,” talks upskilling, micro-services and trade-offs.
What’s your opinion on evolving architectures?
The most important aspect of designing a software application is the time and cost involved. However, every software architecture has a desirable state to reach, so having a mechanism to measure and evaluate the current state and design of the system in a way that’s affordable and achievable within a stipulated time is important. In my opinion, architects must make good use of agile, iterative deliverable practices so that the architecture evolves and move towards that desired state.
Distributed systems increase the complexity of software architectures. What’s the best way to handle the design of these architectures?
Complexity in a distributed environment is a trade-off with many other, more prominent goals including lower cost, better software, rapid deliverables and optimized infrastructure. However, the complexities can be very well managed and reduced with proven enterprise methodologies and by adopting suitable enterprise design patterns such as MSA patterns, enterprise integrations, event base architectures and big data integration patterns.
Understanding the enterprise architectural patterns and applying them to the enterprise software applications will immensely help in managing and reducing the distributed systems complexities — that’s precisely what any architect would love to have in their design.
What are the most difficult trade-off architects face?
I believe architectural trade-offs need to be evaluated as contextual and should not as generalized; for instance, security cannot be compromised over performance in financial transactions and applications. The most challenging part of trade-offs is finding the right balance. Here the patterns come to the rescue.
With proven mechanisms and methodology, the design patterns help architects make better decisions and devise a balanced solution without any painful trade-offs. ATAM (Architecture Trade-off Analysis Method) would be the right starting point to understand a few fundamentals of software engineering risks and its mitigation process. It also helps give strategic ideas for trade-offs.
You have plenty of experience, what tools do you use on a daily basis?
My inclination is not to stick to any one tool as I might miss out on some exciting new developments, such as creately.com. Predominantly, I use MS Visio (for system architecture, application architecture, deployment diagrams and sequence diagrams), Eclipse IDE’s ModelGoon (modeling for sequence diagrams, package dependencies and reverse engineering), SonarQube, sonarLint for day-to-day code reviews and automated CIs for code quality monitoring.
What are your thoughts on the adoption of micro-services, cloud native and serverless?
Speed, scale, and agility are the key factors in delivering high-quality software applications in the shortest time possible. This has become a foremost requirement for many customers. On the other hand, traditionally most software applications are predominantly monolith, with all their functionalities in a single process. That’s why they become very difficult to manage when scalability, evolving with new additional features, high availability and performance become the significant factors, especially in distributed environments.
So, it’s inevitable that software applications need to be built as micro-services to satisfy ever-increasing customer demands, and at the same time. Drastic reductions in cost, dynamic or flexible use of resources, well-managed data integrity and security and productivity increases by workforce collaboration are some of the reasons for an enterprise to make use of cloud-native/Native Cloud application (NCA) and serverless architectures.
For an enterprise architect what would your recommended learning plan be?
Day-to-day research on enterprise integration frameworks and integration design patterns are crucial. You should keep practicing software engineering and architectural principles to inject the latest proven algorithms, techniques, and methodologies in your product’s tech stack. Upskilling, unlearning and relearning are also critical. Attending conferences, short training programs and earning specialized certifications, along with tools to empower your architectural design and documentation skills will definitely help you keep your brain occupied!
What are the key takeaways for readers from your book “Architectural Patterns?”
While improving the scalability, resiliency, performance and many other aspects of enterprise software applications, the complexities of software solutions increasingly support these aspects in a distributed environment. So, there needs to be a mechanism and an easy-to-implement solution. The answer is in architectural patterns. This book in particular is all about patterns and their implementation, with a focus on three crucial aspects: participating components, distinct capabilities of those components and connectivity between those components.
Check out Harihara Subramanian’s latest book “Architectural Patterns,” to understand what architectures are, why they’re used, and how and where architecture, design and integration patterns are being leveraged to build better and bigger systems.
About the author
Harihara Subramanian works for SABRE Corporation as a principal software architect. He’s been evolving and practicing software development and various software architecture concepts since 1999. He’s also co-author of the forthcoming “Hands-On RESTful API Design Patterns and Best Practices.”
Interview courtesy Packt Publishing