JAX enter: More often than not, architecture is seen as a separate concern from development process. Why is that and what should the relationship between the two be?
I believe that architecture if done with a purpose and objective approach gives a strong foundation to the development process and is an integral part of development. When an architecture is built for the sake of building one, things are going to go haywire.
Architecture functions as a blueprint for the system and the developing project. It involves making fundamental choices which helps in laying out the tasks necessary to be then executed by development teams. If a software architecture does not do that, it does not capture early decisions about the high-level design, identification of reusable components, consistency across different components in terms of responsibilities handled by them than the exercise of drawing the architecture before development starts is futile. If the architecture designing is done right, it forms a solid foundation for the development process and helps developers a long way in decision making and efficiency.
JAX enter: Serverless is definitely one of the fast-paced changes to software architectures right now. What does it bring to the table?
Serverless is an extension of Microservices architecture in my opinion.
In a microservices architecture, a monolithic application is broken down into smaller services each responsible for a specific “responsibility”. This is so that these services can be built, deployed and scaled individually. However, what that means is a traditional monolithic server might end up having 100 microservices and this can lead to significant management and infrastructure cost. I have experienced this recently in a digital payment solution infrastructure which ended up consuming 12 micro instances (for 12 services).
Serverless computing is driven by the reaction to events and triggers happening in near-real time in the cloud. What that means is you pay only for those services and infrastructure that was consumed and scaling is managed by someone else for you. So in other words, serverless products help you mitigate the challenges a truly microservice architecture exposes and helps create cost-effective microservices. AWS Lambda, Google App Engine, Firebase, Azure functions are some services that are hugely popular with my team at Systango.
Two biggest advantage that serverless architecture brings to the table is the improved time-to-market since the team has to focus less on infrastructure management and can redirect that effort into innovating and bringing apps to the market faster and hence reduced operation cost.
JAX enter: Will microservices become a default architecture? Why/why not?
I will definitely say, Service-oriented and Microservices architecture are here to stay especially with all the serverless computing tools that are coming out. However, there are pros and cons to it and one must balance. Like any other CEO, I ask my developers to focus on solving business problems in most efficient, balanced manner and not be on the extremes i.e. “truly” microservices or monolith. Having 15 microservices might mean efficient scalability but at the same time it adds complexity and has an impact on performance. In-memory computation, data distribution, and communication will anytime be faster than between processes irrespective of how improved network speed we have. Similarly, microservices makes the system robust but it also increases the time to test. One that needs to spin as many nodes as many microservices it has!
JAX enter: Security threats are on the rise, that’s a given. That being said, how can we balance security and innovation in software development?
I think it’s important to achieve a right balance between security and innovation. Innovation is all about staying ahead of the curve especially in the digital transformation age that we live in, however, it will mean nothing if its against losing the trust of the users. There are basic common sense things that one needs to follow regardless of how fast they want to iterate – ask for minimum data and keep it as the most precious thing in your data store, over communicate about who you are sharing it with, document it and take user agreement for it, most importantly build a security growth mindset in the development team. Don’t build security protocols just for the sake of it but do it to deliver secure business.
JAX enter: Last but not least, what are the top architecture trends for 2018 and beyond?
Some of the Architecture trends for 2018 I would like to highlight are:
- Microservices, it qualifies as an evolutionary architecture,
- Use of Blockchain in enterprise architecture as a data store as well as an active node for code execution,
- Docker and paradigm of containerization.