10 Day Cloud Onboarding
Hörmann Digital is a newly founded company with the primary goal to drive the digital transformation within the Hörmann Group. As a starting point, a small, highly motivated and rather inexperienced team has been set up to develop and launch the first application. The target platform is the AWS cloud where an account is already in place. However, without any in-depth knowledge about building on AWS, the entire stack including the database is deployed in a Docker environment hosted on a single EC2 instance, effectively using the cloud like a single on-premise instance. Best-practices such as data encryption or backups have not yet been considered. The team is eager to learn more about the benefits of cloud-native development and use that knowledge to build up a solid foundation for the application and its delivery pipeline.
Instead of just setting up a suitable architecture we decided to work closely with the team with the primary goal to enable them to do future work on their own in mind. Over the span of 2 months we spent 10 days with the team in order to teach basic concepts, support with the biggest challenges, and collaboratively launch the application to production. We used pair and mob programming for everything we did and made sure all team members understand the rationale behind the different good practices we applied.
After jointly analysing the status quo, we proposed a first version of the target architecture to implement. First of all, we put it together manually with a few shortcuts to demonstrate different involved AWS services and their integration. In this exploratory phase we could already identify a few major challenges such as the inability of the application to run more than one instance with consistent state. While iteratively refining and documenting the desired architecture we continued with the introduction of Cloud Formation to make sure everything we did was clearly documented, reproducible, and versioned. The backend runs in Docker containers deployed on Fargate and provides REST endpoints to the frontend which is served from S3 via CloudFront. The application is backed by a multi-AZ RDS database and can scale with increasing load. The entire build and deployment process is automated using CodePipeline and related AWS services.
Besides a successful launch, the most important outcome of our collaboration is the rapid increase of knowledge and experience among the development team members. Since our support was limited to one or two days per week, they already learned how to apply this knowledge and overcome difficulties on their own. Nevertheless, we focused on removing bigger impediments that would have flattened the learning curve and decreased motivation otherwise.
Discussing examples and receiving guidance on real life situations made the AWS concepts easy to digest. I highly recommend Sekib Omazic as a Solution Architect.