Microsoft Azure – a cloud-native success story
One of our clients helps several retailers, both local and global, acquire, engage, and retain their customers.
They achieve this by providing strategy, tools, and tactics. These services are provided to the customer in a digital way. The customer can use web portals, a variety of different services, and can get valuable insights into their data.
To bring their services to the next level, and to address the requirements that their customers have now and in the future, they decided to take advantage of using the cloud. By leveraging cloud-native services, they are able to provide their customers with a set of secure services and give real-time insights into data. To support their customers in the most effective way, they decided to host their services on Microsoft Azure.
The challenge this client is facing is similar to the challenges a lot of organizations face right now. There is an urgent need for digital transformation to keep addressing customer needs, stay competitive, and innovate and use state-of-the-art technologies. But most of the services that are offered to their customers still run on an on-premises infrastructure that is not ready to support this.
This was also the challenge for our client. They were providing services that were still running in an on-premises environment, which was not able to provide innovative technologies and scale accordingly to address future needs.
This client reached out to us to help them implement cloud-native services to renew their IT landscape, offer their customers a set of services that are specifically designed for performance, security, and redundancy and provide real-time insights in data coming from various sources. This data is partially stored in Azure, but also in on-premises databases.
Together with the client, we decided to take advantage of all the cloud-native services that Azure has to offer, from a microservices and data analytics and insights perspective. The project was divided into two smaller projects, starting with building a full cloud-native microservices environment using only serverless technology. This will be followed by a new project for storing customer data using Azure Data Lake, implementing real-time insights using Azure Event Hub, and using various services to provide interactive, immersive dashboards and reports, such as Azure Data Share and other tooling. We decided that our cloud-native development offering was most applicable to this project.
With our offering, we are providing tour clients with:
- Domain-driven design (DDD): When implementing a microservices architecture, DDD is a design approach you can benefit from. Where to draw the boundaries is the key task when designing and defining a microservice. DDD patterns help you understand the complexity in the domain.
- Cloud-native design patterns: To build highly reliable, scalable, secure applications and services, every developer needs to make use of common cloud-native design patterns. We focus fully on implementing Microsoft best practices and patterns.
- Dev/test optimization: We bring our own development and test environments to the project. For this, we use container technologies, which have all the commonly used tooling and software pre-deployed. Next, we use automated performance and acceptance tests, fully integrated in Azure DevOps.
- Everything-as-code: We offer out-of-the-box landing zones, which include security and compliance policies and monitoring rules. These monitoring rules are based on our experiences and best practices that we have developed over the years managing cloud environments for our global customers. We are implementing zero-touch deployments using Azure DevOps and CI/CD pipelines for automatically building and releasing applications and services.
How we implemented it
The first step was to deploy the landing zone, which included an API Management gateway, a VNet, log analytics, application insights, security policies, and default monitoring and logging rules in the Azure subscription. We deployed it automatically using CI/CD pipelines so that it can easily be deployed across different environments. Next, we started building the first APIs, using serverless services, such as Azure Functions, Azure Storage, Azure Service Bus, an Azure Key Vault, and more. We implemented cloud-native design patterns to build them. To get access to the data that still resides in the SAP on-premises environment, an Express Route connection was set up. For authentication, we used Azure Active Directory, Auth 2.0, Open ID Connect and the out-of-the-box libraries that are provided by Microsoft, such as MSAL.
By using landing zones, cloud-native patterns and Microsoft best practices, and securing it using Azure Policies and Azure Active Directory in our solution, we now have a solid foundation for rapidly building and deploying additional services.
At this stage, we have successfully implemented a set of secure microservices for the client, which are automatically deployed across environments, securely connecting to an on-premises SAP environment, and exposed via a single gateway. Next, we will be implementing the second project, where we will form an additional DevOps team that will implement the solution for storing customer data, and provide real-time insights.
This blog provides an overview of a cloud-native project that we are currently implementing for one of our customers. At Capgemini, we have a lot of experience, use cases, and best practices in implementing cloud-native practices and designing and building cloud-native applications and systems for our enterprise customers. If you want more information about our experiences with this, you can contact me on LinkedIn or Twitter.
You can also read my other articles here.
This was a very good concise read. Barely took 3 mins. However, I’m more interested in how to use dev/test environments as containers. If you have any articles on it then kindly share it.