Cloud Native App in 1 day: an instructive workshop case
The organization and its context
MedSem Online provides conference website services tailored to the medical community. They have grown from building a few conference sites to handling almost 150 conferences per year.
Medical conferences are typically low budget websites as the conferences are usually between 100 to only 1500 attendees at the high end. At the same time, the conference owners have significant customization and change demands that require turnaround on a dime to the live sites: from UI through to the back end, including conference registration and payment terms.
The MedSem Online team and their challenges
The VP of Engineering at MedSem Online, Arthur Block, has a team of 10 developers who handle all aspects of development, testing, deployment, and operational management of their customer sites. Due to customer demands, they have issues with the efficiency and reliability of their development and DevOps workflows.
The technical setup
The conference sites are currently hosted on-premises with the following topology and platform implementation:
- The conference websites are built with the MEAN stack (Mongo, Express, Angular, Node.js).
- Web sites and APIs are built as microservices hosted on Linux servers.
- The on-premise data backend is MongoDB; also running on a separate cluster of Linux servers.
- There is relational data stored in PostgreSQL running on Linux servers.
Customers are considered “tenants”, and each tenant is treated as a unique deployment, whereby the following happens:
- Each tenant has a database in the MongoDB cluster with its own collections, and a database in PostgreSQL.
- A copy of the most recent functional conference code base is taken and configured to point at the tenant database.
- This includes a web site code base and an administrative site code base for entering conference content such as speakers, sessions, workshops, sponsors, and session feedback from attendees.
- Modifications to support the customer’s styles, graphics, layout, and other custom requests are applied.
- The conference owner is given access to the admin site to enter event details.
- They will continue to use this admin site each conference, every year.
- They have the ability to add new events and isolate speakers, sessions, workshops, and other details.
- The tenant’s code (conference and admin website) is deployed to a specific group of load balanced Linux servers dedicated to one or more tenant. Each group of machines hosts a specific set of tenants, and this is distributed according to scale requirements of the tenant.
Once the conference site is live, the inevitable requests for changes to the website pages, styles, registration requirements, and any number of custom requests begin…
Arthur realizes MedSem Online needs to evolve towards a fully multi-tenanted application suite for conferences.
However, the team is having difficulty approaching this goal. They are constantly updating the code base for each tenant and doing their best to merge improvements into a core code base they can use to spin up new conferences.
The pace of change is fast, the budget is tight, and they simply do not have time to stop and restructure the core code base to support all the flexibility customers require.
These are the 3 key objectives Arthur has formulated:
- Reduce regressions introduced in a single tenant when changes are made.
- One of the issues with the code base is that it has many dependencies across features. Seemingly simple changes to an area of code introduce issues with layout, responsiveness, registration functionality, content refresh, and more.
- To avoid this, he would like to rework the core code base so that registration, email notifications and templates, content and configuration are cleanly separated from each other and from the front end.
- Improve the DevOps lifecycle.
- The time it takes to onboard a new tenant, launch a new site for an existing tenant, and manage all the live tenants throughout the lifecycle of the conference is highly inefficient.
- Increase visibility into system operations and health.
- The team has little to no aggregate views of health across the websites deployed. While multi-tenancy is a goal for the code base, even with this in place, Arthur believes there will always be the need for custom copies of code for a particular tenant who requires a one-off custom implementation.
- Arthur feels that Docker containers may be a good solution to support their short-term DevOps and development agility needs, while also being the right direction once they reach a majority multi-tenant application solution.
This is what MedSem Online needs you to do:
- Reduce the overhead in time, complexity, and cost for deploying new conference tenants
- Improve the reliability of conference tenant updates.
- Choose a suitable platform for their Docker container strategy on Azure. The platform choice should:
- Make it easy to deploy and manage infrastructure.
- Provide tooling to help them with monitoring and managing container health and security.
- Make it easier to manage the variable scale requirements of the different tenants, so that they no longer have to allocate tenants to a specific load balanced set of machines.
- Provide a vendor neutral solution so that a specific on-premises or cloud environment does not become a new dependency.
- Migrate data from MongoDB on-premises to Azure Cosmos DB with the least changes possible to the application code
- Migrate relational data from PostgreSQL on-premises databases to Microsoft Azure
- Continue to use Git repositories for source control and integrate into a CI/CD workflow
- Prefer a complete suite of operational management tools with:
- UI for manual deployment and management during development and initial POC work.
- APIs for integrated CI/CD automation.
- Container scheduling and orchestration.
- Health monitoring and alerts, visualizing status.
- Container image scanning.
- Complete an implementation of the proposed solution for a single tenant to train the team and perfect the process
- Enhance attendee session feedback with AI to prevent inappropriate content from being posted, and real-time language translation to better accommodate growing worldwide conference attendance
Work out the solution: by yourself… or with live guidance of one of Xylos’ Microsoft MVPs/MCTs
During our FREE workshop (in Dutch), on 30/11/2022, we will dive into the essentials of cloud native, work out the case above during an interactive whiteboard session and demonstrate CosmoDB and Azure Kubernetes service.
Hope to see you there!