Strip down monolithic legacy apps into pure Cloud-native services &/or developing new Cloud-native apps using microservices architecture
Preface to Modernisation in the Cloud
Modernisation is a frequently used term in any technical sphere and it is increasingly applied to a Cloud situation: we want to modernise this into that. Modernisation relates to both where you were and where you want to go; and often it is recognised that even then, that is just a stepping stone to something else.
Modernisation is about exploiting the benefits of Cloud technologies generally acknowledged to be:
Elasticity and ability to scale,
operational ease leading to organisational agility,
In the first of these three blogs we explored why you should consider building a modern environment first, one which is architected to AWS best practice, before you think about modernising the way you run your workloads.
In the second blog, we explored how to start leveraging the opportunity of Cloud, by optimising how to run your legacy workloads with minimal code changes, and new code using newer features available in AWS Cloud.
In this, the third blog, we explore Cloud-native technologies. If your organisation started life in the Cloud you would start here - developing with Cloud-native services, but if you have migrated your pre-Cloud legacy application workloads and databases to the Cloud, you are probably still not seeing the promised benefits in full. This is the driver for Cloud Application Modernisation.
You may have started with a lift and shift type migration from your existing platform into AWS. This minimal code rewrite option, helped you to migrate fast and provide some benefits of cloud like operational excellence and resilience and consolidate into one platform. Possibly you have moved on to Containers, for even better scalability, or you migrated to Amazon Relational Database Service (RDS) to liberate you from Database management.
Now we explore how to modernise legacy applications to take advantage of Cloud-native technologies.
What are the Cloud-native Technologies of Modernisation?
AWS provides a suite of services providing all the tools you need to modernise your applications and application development environment. Many are also microservices - like pieces of Lego - specialised and autonomous - which fit together to allow you to build functionality to serve the needs of your users and customers, and replace the functionality of your old, often monolithic, applications.
Compute Services: serverless
AWS Lambda is a serverless compute service that lets you run code for virtually any type of application with zero administration. Just upload your code as a ZIP file and Lambda automatically allocates compute power and runs your code based on an incoming request or event. You can write Lambda functions in your favorite language (Node.js, Python, Go, Java, and more) and use serverless tools, such as Serverless Application Model (SAM) to build, test, and deploy your functions.
AWS SAM is an open-source framework for building serverless applications. It provides shorthand syntax to express functions, APIs, databases, and event source mappings. With just a few lines per resource, you can define the application you want and model it using YAML. Like all open-source environments, you can find and leverage new applications in the AWS Serverless Application Repository and contribute your own.
Pre-modernisation, you are probably still utilising an all-purpose SQL Server-like database, because that was the technology available then. Now you can move to a scalable, high performance Cloud-native database purpose-built for the objects being stored. For example:
Amazon Aurora: a MySQL and PostgreSQL-compatible relational database.
Amazon DynamoDB: a key-value and document database that delivers low latency at scale.
Amazon Neptune: a fast, reliable, fully managed graph database service.
Amazon Redshift: a data warehouse that makes it easy to gain new insights from all your data.
Conversely if you just need simple storage, there is Amazon S3 (Simple Storage Service), which because it too is Cloud-native means it’s secure and highly available (99.999999999% (eleven nines) robust) by default. Being scalable means it’s also cost-effective - as you only use what you need, when you need it.
Your public or customer-facing services experience different loads at different times of the day - the perfect reason to exploit the elasticity of the Cloud. With Elastic Load Balancing, you can use the Application Load Balancer, to load balance traffic at the application layer (Layer 7), and Network Load Balancer, which offers high performance load balancing at the connection layer (Layer 4).
Amazon API Gateway allows you to process hundreds of thousands of concurrent API calls and handles traffic management and access control, whilst Amazon Route 53 is a highly available and scalable cloud Domain Name System (DNS) web service that connects requests to your infrastructure that is running in the Cloud.
More and more people and applications are communicating via simple messages. Amazon Simple Notification Services (Amazon SNS) provides application-2-application messaging between distributed systems and services applications, as well as application-2-person messaging, at scale, via SMS, mobile push and email (SES).
DevOps and Continuous Delivery
AWS provides a set of Developer Tools that enable developers and IT operations professionals practicing DevOps to deliver new Cloud-native application code more rapidly. Together, these services help developers securely store and version control the application source code and automatically build, test, and deploy new functionality.
Working with Cloud-native microservices tends to foster teams empowered to work independently and more quickly, which shortens development cycles and delivers agility. There is the technical freedom to choose the best tool for the job, and reuse code across multiple applications. Microservices enable continuous integration and continuous delivery, making it easy to try out new ideas and to roll back if something doesn’t work, which accelerates overall time-to-market for new features.
You can, of course, also continue to develop and enhance legacy bespoke Windows applications by using .NET-Core to re-code components to take advantage of Cloud-native services for performance improvement. Building .NET applications on AWS using .NET-Core allows you to leverage Cloud agility and automation to complete and deploy projects faster, with lower risk. All the same tools you use on-premises are available, including a broad range of APIs, toolkits for Microsoft Visual Studio and PowerShell, and a .NET Developer Center.
Bottom line: the full Benefits of Cloud
Cloud-native technologies exploit the elasticity of Cloud services and their natural ability to scale which in turn delivers cost-effectiveness - as you only ever pay for what you use, yet you have the ability to use it whenever you need it.
The inherent reliable availability and security of Cloud presents you with development and operational ease, and lets you focus on the needs of your users, your customers and your business rather than your platform and its administration.
If you would like to discuss any of these concepts in relation to your organisation, or need help with implementing any of them, PolarSeven is just a phone call away. We would be happy to give you a free consultation to discuss your unique situation.