ClearPoint Practice Lead - Cloud, Terence White, shares how to modernise your enterprise applications with AWS cloud services and similar, to improve scalability, agility, and resilience.
If a large enterprise has been around for any length of time there will be a mix of applications they rely on from Software as a Service (SaaS) or Commercial Off The Shelf (COTS) offerings to software developed in-house by their own development teams. SaaS software gets updated regularly behind the scenes by the vendors and COTS software like Oracle Applications or SAP has to run within vendor supported configurations but what can be done with the bespoke applications to modernise them and to make both the development and the user experience better?
Modern application architecture principles are aimed at improving scalability, agility and resilience of the applications, and building in the cloud using native cloud services (as opposed to treating the cloud as just another data centre) is key to achieving those goals.
Modern applications are often structured as many loosely coupled microservices working together instead of one big monolithic application. Each microservice handles a specific function and can be developed, deployed and scaled independently. Developers are free to choose the most suitable technologies for the microservice which can improve performance or costs. As an example, a microservice that stores highly connected data (such as links between customers and items ordered in an online grocery store) might choose to use a graph database like AWS Neptune or the open source Neo4J as a data store instead of a relational database like Oracle or SQL Server. Another upside is that because of the loose coupling, an issue with one microservice should not affect the rest of the application and users will still have the most of the functionality available.
Microservices are often built using containers or serverless technologies like AWS Lambda. Serverless computing is where the cloud providers manage the infrastructure the code is run on which frees the developers to focus on writing code instead of managing servers. Containers help to package the services with their dependencies so they are consistent when deployed across multiple environments. Containers are often orchestrated using tools like AWS’s Elastic Kubernetes Service (EKS) or Elastic Compute Service (ECS) which enable managing containers at scale. Both serverless and container technologies also enable auto scaling where a microservice can grow or shrink its computing resources depending on the demands placed on it by the users. This can result in significant cost savings compared to leaving the resources scaled at the maximum anticipated levels at all times.
Now ask yourself a question - how fast can your developers get a source code change pushed through to production? In a modern application it should be minutes instead of days or weeks, even if the change is hidden behind a feature flag and is not immediately available. Continuous Integration / Continuous Deployment (CI/CD) pipelines are typically built using technologies like AWS CodePipeline or GitHub Actions. CI/CD pipelines should be able to compile and package a microservice from source code, run tests against the package and once an acceptable level of tests pass deploy it automatically and with no outage to the live environment. They should then test if the deployment was successful and roll back to the previous version and alert someone if not. There should be no manual steps (like approvals or change management) involved. The record I have heard of is just eight minutes from repository push to live and available to tens of thousands of Kiwis on the internet. This was an enterprise’s primary business system that it was staking its reputation on. Do you have faith in your automated testing? They did.
The build-and-deploy is not the only process that should be automated. Observability is a modern software engineering concept that refers to the ability to monitor, understand and gain insight into an application’s internal state based on the data it produces. It helps developers ensure the application’s health, diagnose issues, and optimise performance. It is especially valuable in a microservices based architecture where each individual microservice produces its own logs and metrics. Observability is more than just simple monitoring. It’s automatically gathering and analysing logs and metrics from the microservices and traces from individual user requests through the application and making them available in a one-stop location like a dashboard. This can help support teams diagnose actual or potential issues across all the many components of the application which can lead to faster issue resolution and a better user experience. They can also look to automate resolution of commonly occurring incidents which results in reduced downtimes and fewer 2am call outs which in turn results in happier customers and happier developers.
If you are interested in moving your applications to AWS and modernising them to gain the scalability, reliability and agility benefits above then reach out to us. ClearPoint is an AWS APN Gold partner and technical support, funding and AWS credits may be available as part of AWS’s Migration (and Modernisation) Acceleration Program (MAP).