There is no doubt digital transformation is affecting how businesses operate online with cloud computing offering compelling benefits, from unprecedented flexibility in IT infrastructure use and consumption to significant cost savings. With the market diversifying into a myriad of cloud services across the entire range there is a big push towards changing traditional monolithic IT estates into a landscape of integrated building blocks comprising a multitude of specialised services. The traditional on-premise IT infrastructure gets more and more dissolved into a network of services in a hybrid cloud (on-premises and public cloud) and multi-cloud (procuring services from a multitude of public cloud providers) – frequently it is a mix of both. The challenge to IT architecture is thus how to align and integrate these services with the legacy estate that often still follows the monolithic approach to designing IT applications.
In this article, we will explore this challenge and look at how this can be addressed.
There is nothing new about IT software and hardware ageing. What is new, however, is the increased need for resource efficiency while maintaining operational requirements and performance in an increasingly distributed environment. Customers and clients expect an individualised approach and experience across a multitude of devices and locations, inevitably creating a far more diverse usage and data generation pattern than ever before.
To summarise, performance efficiency comprises the following aspects:
In your digital transformation process, the strategy on how to address these requirements and respond with a modern IT infrastructure architecture that fits your needs becomes key. Inevitably, you will not only have to integrate external services into your IT portfolio. You will have to address the architecture of your own custom software applications and services and decide how to evolve it to fit the modern era of cloud computing.
The first step is to define your individual Rome: the desired end state of your application. A cloud-native architecture may not be your end goal for a variety of reasons; there is no universal architecture which fits every business needs and models.
In our experience, there are two key software engineering principles of well-performing and efficient IT applications:
This might sound counterintuitive but is in fact, a key ingredient often forgotten. An example describes best what this means: Software development departments try to measure the productivity of their employees using KPIs. Since it is easily measurable, they often count and aggregate the lines of code written over a given period, e.g. a week or a month. However, this does not account for how these lines of code came to be: If, for example, you replace large chunks of self-written code with integrating a third-party library (often open-source) then all of a sudden your KPI drops (or reverses into negative if calculated as relative change) and your internal employee happiness team will be on your case. But all you did was improve performance and efficiency (given that you chose the right library to integrate) with less code you need to write and maintain yourself.
The key takeaway here is that you need not reinvent the wheel when others already have solved the problem for you.
While this sounds similar to the previous point, it addresses the code and architecture you decided to maintain yourself. This entails reviewing the architecture and look for elements that can be reused internally, whether internally to the application, or across your applications. Often, this goes hand in hand with the decomposition of your IT software from tightly coupled to loosely coupled reusable components. The keywords here are API driven and microservices – we discussed the latter already in one of our previous blog posts.
A classic example of an API driven IT architecture is that of user interfaces across many different access media. A classic three-tier design would feature a presentation layer, a business layer, and a persistence layer, connected using HTTP/HTML and SQL, respectively. In the modern times of smartphone access to the Internet and hence your services, screen size is the most limiting factor when it comes to providing mobile access to your website.
One approach would be to change your website layout to a mobile-first approach. This is what modern SEO is all about, certainly since Google and other large search engines access and assess your public services with a mobile-first assessment kit. But mobile-first gets you only so far and is often not suitable for scenarios where real interaction and data generation takes place. Means of input are entirely different on a mobile phone from a classic desktop, therefore your approach to user interaction should be different, too.
The solution supporting interactivity across access media is an API driven architecture:
This comparatively simple change in architecture may seem to be overkill at first, but the loose coupling of smaller components directly builds the foundation for a more agile and responsive IT landscape. Here are the top four reasons why you should consider switching to an API-driven architecture:
There is a fine balance you need to maintain on the scope and aggressiveness of decomposing your workload into an API driven microservices architecture. The one undeniable benefit of a monolithic architecture with tight component integration is the speed of function/procedure calls. And the more you introduce APIs and indirection via loose coupling of components, the more your workload’s internal communication will rely on the comparatively slow network-based remote invocations.
While performance loss through network calls can be mitigated, it requires experience and expertise in distributed computing.
Digital Craftsmen can help to assist you in your road to a modern distributed, scaling, and performant cloud workload architecture. Just drop us a line at firstname.lastname@example.org, call us on 020 3745 7706 or book a free workshop with our solution architects by signing up here.