KPN migrated the kpn.com website to the Public Cloud. The developers completed this migration within six months. How did the engineers get this done and what was involved?
Cloud plays a critical role in digital transformation. When KPN initiated the migration of kpn.com to the Public Cloud, it was driven by several motives. Not only would this decision reduce costs, but the Public Cloud offered development teams more options and freedom to deliver the best customer experience that was no longer offered by on-premise hosting platforms. This decision also meant that every IT team would work as a DevOps team. Busra, Lead Software Engineer at KPN, was involved in this from the beginning.
Cloud migrations: what forms are there?
Before we look specifically at the migration journey that KPN has undertaken, it is good to take a brief look at the different forms of cloud migrations that a company can undertake.
The most common is to move data and applications from a local on-premises data center to the public cloud. However, cloud migration can also involve moving data and applications from one cloud platform or cloud provider to another; this is called cloud-to-cloud migration. A third form of migration is reverse cloud migration, cloud repatriation or cloud exit. With the latter, data or applications are removed from the cloud and – brought back to a local data center.
There are also intermediate forms. We speak of a hybrid cloud model when there is a combination of public and private cloud models, with data being moved between the two. And in a multi-cloud scenario, a company uses IaaS options from more than one public cloud provider.
Roadmap, technologies, and tools
Back to KPN. Busra was heavily involved in migrating the kpn.com website to Public Cloud. ‘The exciting thing about moving to the Public Cloud is, as an engineer, that you get the chance to challenge your existing architecture as you migrate it. My starting point was to analyze and challenge the current state of the existing architecture from different angles such as infrastructure, database, and security. Then I worked out high-level architecture diagrams of the different software components and the complete infrastructure on AWS, considering the constraints and possible improvements in terms of security and performance.’
A high-level design explains the architecture used to develop a system. The architecture diagram provides an overview of a complete system by identifying the key components, such as compute resources, database resources, monitoring resources and so on, that are developed for the product as well as their interrelationships. At the beginning of the migration, Busra first identified the main components of its application, taking into account all its limitations and possible improvements, and then drew its diagram.
The next objective was to determine the direction in which KPN was heading, so they created a roadmap. As a basis, there were the main blocks such as infrastructure, provisioning, database migration, security, monitoring, testing. Each of these blocks was detailed with explanations of the skills and tasks required. I found this roadmap as a transition plan very important, because it helped us to see the progress of the project on the one hand, and on the other hand to assess the obstacles and hindrances for the future, so that we could make early adjustments.
AWS Well-Architected Framework describes the design principles and architectural best practices in the cloud. The six pillars of AWS Well-Architected – operational excellence, security, reliability, performance efficiency, cost optimization, and sustainability – were a good checklist for Busra to build a secure, high-performing, resilient and efficient infrastructure: ‘Defining non-functional requirements such as scalability, availability, security and so on then helped me understand and assess how our system would work in production.’ Finally, she defined different tools and technologies that would be used during the migration process. ‘While I decided to use CloudFormation as “Infrastructure as Code”, I chose Ansible as a provisioning tool.’
Freedom (to develop)
The shared responsibility model of AWS excited Busra, partly for her own personal development. It was very motivating for her to know that everything – infrastructure, operating system, application, network, security, database – would be under the full control of the team: ‘My journey on Cloud/AWS began in March 2020. After getting my first certification, I migrated two different on-remise applications to the AWS environment in early May 2020. In May, I started working on my biggest challenge; moving kpn.com on AWS.’
Busra: ‘Every IT team at KPN makes use of this flexibility and is free to choose any operating system or programming language. For example, there are teams that prefer CloudFormation as Infrastructure as Code (IaC) tools but there are also teams that prefer Terraform as IaC. Another example applies to database engines; some applications work better with Oracle databases, but others work better with PostgreSQL.
Busra learned a lot during the migration. ‘For one thing, I learned that I have to be more transparent. And I can be. It’s not a problem to make mistakes or to lose track of things. By talking to each other about challenges, problems, things that get stuck and things that don’t go well, you eventually find solutions. I have also learned so much on a technical level, including database administration. Previously, there was a specific DBA team that managed the database. Due to the migration, the responsibility has been transferred to our team. As back-end and front-end engineers, we are traditionally mainly involved in development and implementation, so DBA was new to us.’
Amazon makes it easy to set up, manage and scale a database in the cloud. It provides cost-effective and customizable capacity while automating time-consuming management tasks such as hardware provisioning, database setup, patching, and backups. It frees up developers to focus on their applications, providing them with fast performance, high availability, security, and compatibility. The databases in AWS are designed to overcome the limitations of traditional database systems in terms of performance, availability, and scalability. It was a wise decision to keep our databases in the Cloud, along with our applications,” says Busra.
During the migration phase, Busra and her team members had to learn how to migrate database workloads to fully managed databases built specifically for the cloud. The developers also learned best practices for moving data, schema, and code from the source database while minimizing application downtime and ensuring no data was lost. Busra: ‘Besides the data migration, we also need to improve ourselves in how to set up the monitoring tools for the databases and how to take action if something went wrong. To learn, I usually read the whitepapers on how to migrate databases from on-premises to AWS and how to tune our database performance when it’s on Cloud. Currently we are still investing time in hands-on workshops for databases on different engines and for the migration service.’
Besides the hard work at KPN, there is fortunately also room for fun events,’ Busra laughs. One of these is AWS GameDay, where for a day various teams have to perform practice tasks as well as they can. These tasks are, of course, similar to challenges and obstacles that developers might encounter in their working lives. The team with the best and smartest solutions to tackle the problems wins.
The freedom for the developers and Busra to choose which programming language and operating system to use during the migration was seen by the team as extraordinary. Some companies migrate to the cloud but restrict their engineers. Not so with KPN. Of course, there was constant consultation to make sure to choose the right decisions. Each application has different requirements, such as scalability, complexity, development time limit, security of the application and so on. As a developer, it is important to know all the components like the back of your hand. A good overview at the start of a project helps in choosing a sensible programming language and this leads to spending less time later on maintaining -, scaling – , and securing the project.
With great power comes great responsibility
After migration, the world looked very different. The impact is huge.
The various DevOps teams now have full control over infrastructure, database, patching, security, and monitoring. But… ‘with great power comes great responsibility. Therefore, the engineers also set up their own monitoring dashboards and alarms to be notified in case of certain (emergency) situations,’ says Busra.
Soon, the developers began to experience the speed of delivering new features to customers. The speed of building and releasing new features has increased. Developers are now able to implement technology services in a matter of minutes. This gives them the freedom to experiment and test new ideas to differentiate customer experiences.
In addition, there is no longer a need to allocate too many resources in advance to accommodate future peaks in business activity. Instead, we work with the number of resources that are needed. With tools like Auto Scaling and Elastic Load Balancing, developers can scale resources up or down to instantly increase or decrease capacity based on demand. They can now quickly fire up resources when they need them – from infrastructure services such as compute, storage, databases and more. In this way, KPN always has the right number of resources at the right time.
In addition to these technical advantages, KPN has also noticed benefits from AWS in the areas of cost-efficiency and sustainability. Busra: ‘Instead of having to invest heavily in data centers and servers, we only pay when we consume computing resources, without long-term contracts or pre-commitments. It allows us to control costs and continually optimize expenditure. AWS has a lower carbon footprint and is more energy efficient than typical on-premises alternatives because it invests in inefficient power and cooling technology, works with energy-efficient server populations, and achieves high, efficient server utilization.