In partnering with Modern Muse, a platform for women in business, Microsoft IT migrated the Modern Muse app from Amazon Web Services to Azure. We’re using Azure App Service with Visual Studio Team Services (VSTS) to provide modern engineering practices such as user stories, continuous integration, continuous deployment, and gated check-ins with the open source Modern Muse code. VSTS allows us to simplify and standardize the Modern Muse development process while retaining the open source codebase and development tools.

EXPLORE RELATED CONTENT

Modern Muse is a UK-based charity that’s designed to inspire and engage the next generation of female business leaders and entrepreneurs. Together with fellow technology partner Avanade, Microsoft IT is working to make www.modernmuse.org a modern platform that’s accessible to everyone, and that can scale and grow with the organization. We’re using Microsoft Azure and open-source development with Visual Studio Team Services (VSTS) to refine the Modern Muse experience.

Bringing Modern Muse into modern engineering with Azure

We recently migrated Modern Muse’s open-source systems from Amazon Web Services (AWS) to Microsoft Azure to demonstrate the flexibility and range of Microsoft technologies, showcase our partner Avanade’s skill set, and showcase how agile, open-source development can be achieved using modern engineering practices and VSTS. This is significant for businesses that have built their applications using open-source technologies but have decided to upgrade and capitalize on the business value of Azure and modern engineering practices—particularly its increased flexibility, agility, accessibility, and scalability.

Modern Muse development in AWS

Before Microsoft took over sponsorship of the venture, Modern Muse was managed by a vendor that used AWS. When we assessed the development environment and processes, we identified areas that could be improved in Modern Muse. We identified Azure and VSTS as a combined solution to unite the development environment for Modern Muse and build effective continuous integration and continuous deployment (CI/CD) into the Modern Muse release process.

Modern Muse in Azure

In Azure, we kept most of the Modern Muse architecture the same as it was in AWS and moved it into corresponding Azure services. We kept most of the base code and continue to use open-source components. The Modern Muse solution is an application ecosystem that’s based around Java and JavaScript open frameworks, and is hosted in Azure. There are three main components in Azure:

  • Front-end tier. The front end is a responsive webpage that’s hosted as an Azure App Service. It uses the standard Apache Tomcat server environment, just like it did on AWS. The technology that drives this tier is a React-based webpage that’s written using CoffeeScript. We manage the application using VSTS and the CI/CD platform that’s integrated into VSTS Release Management and the Azure App Service.
  • Back-end tier. The code from the back-end tier is also hosted in Azure App Service—this enables a similar level of code re‑use and CI/CD benefits as the front-end tier. The back-end code is primarily Java-based, and uses the Spring Framework. Deployments for all environments are fully automated using VSTS Release Management. The back-end tier uses some Azure core functions, such as Azure Search, Azure Redis Cache, and Azure Notification Hubs.
  • Database tier. The database tier is hosted in Azure Database for PostgreSQL. We can re-use almost all the database code structure and patterns—while maintaining a solution for Modern Muse components in Azure that’s completely based on platform as a service (PaaS). Like with the other tiers of the application, the database is deployed using release management and uses CI/CD for metadata upgrades.

Platform and tools

VSTS is the primary tool that unifies the modern engineering experience in Modern Muse. We used VSTS in conjunction with Azure to remove the disparate toolsets that were used in the AWS version of Modern Muse and to provide a unified, end-to-end solution for code and release management. Because VSTS seamlessly incorporates with Azure, we didn’t need to develop additional tools or modify the Modern Muse code. We use VSTS to manage the following development processes:

  • Collect user stories. We use VSTS to track user stories, features, and bugs. All code check-ins are associated with their relevant items. Then we get the stories automatically attached to each release when it goes live.
  • Manage releases. Modern Muse operates with CI/CD at the core of the development and release cycle. We operate on a two-week sprint cycle in three environments, one each for build, test, and production. Our code is hosted in VSTS using a Git repository. Each release goes through a sign-off process, which fully publishes the bug fixes and features in the release. This process is coordinated using email messages that are automatically generated and checked to confirm sign-off for a release.
  • Gated check-ins. With our gated check-in process, a release is halted if any unit test fails when code is checked in. This halt remains until the developer fixes the code.

Using VSTS, our developers can still use the code development environments of their choice, using the open-source tools that are required for this kind of development. By using VSTS, we can connect and manage the end-to-end process while still offering open-source tools and components to provide the core functionality.

The following figure shows Modern Muse architecture as it was in AWS and how it exists now in Azure.

Illustration of the Modern Muse architecture migration from AWS to Azure. The three main components (Front-end,  back-end and database) are shown migrating from AWS to Azure. Connected to the back-end are four third party integrations.

Figure 1. Modern Muse architecture in AWS and Azure

Assessing results

After we completed our migration, we assessed ongoing results and made necessary changes to the functioning Azure-based Modern Muse app. The migration was a success—we lifted the existing AWS solution and shifted it to Azure without significant code changes, and we realized several other benefits from running Modern Muse on Azure:

  • CI/CD support. The VSTS CI/CD stack that’s built into Azure App Service immediately improved our development practices. We can get new features and functionality changes to production much faster and more often.
  • Simplified release management. Release management is, literally, the click of a single button. The entire build and release process is managed by VSTS through GitHub using integrated CI/CD support. Our three environments are all compiled at the same time—this saves time and makes it much easier to manage the three environments together for development and testing.
  • Standardized monitoring and management. We have visibility into Modern Muse in the same way as the rest of our Azure-hosted solutions, and the Azure monitoring capabilities make it easy to effectively monitor and manage.
  • Retention of open-source code and third-party tools. Because of the lift-and-shift nature of the migration and the VSTS flexibility, we’re working with most of the original code base and we seamlessly maintained connection to third-party components like Google Analytics, MailChimp, Getstream.io, and Cloudinary.

Best practices and lessons

We learned a lot from this migration. AWS and Azure each have their nuances, so this experience will help us to be more effective at similar migrations in the future:

  • Use sanitized and standardized code. We ran into several code challenges during the migration. Some of the original code used non-standard coding and references that didn’t fully support a platform-agnostic PaaS solution. To avoid setbacks and delays later in the migration process, it’s important to know your code and fix problems before a migration.
  • Design for modern engineering. Even though the AWS solution wasn’t designed for modern engineering, we incorporated modern engineering standards into the Azure version of Modern Muse with small changes and broad support for modern engineering capabilities in Azure. CI/CD integration and the ability to adopt an agile software development process has enabled us to efficiently publish new releases of Modern Muse that include fixes and new features.
  • Visual Studio Team Services integrates with any Azure codebase. Open source worked perfectly in Azure. With VSTS, we took advantage of the built-in integration with Azure and essentially plugged in a modern engineering toolset without significant changes to the existing code base.

For more information

Microsoft IT

microsoft.com/ITShowcase

 

© 2019 Microsoft Corporation. This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. The names of actual companies and products mentioned herein may be the trademarks of their respective owners.


You might also be interested in

Automating data protection with Azure Information Protection scanner
October 26, 2018

Automating data protection with Azure Information Protection scanner

Read case study
DevOps is sending engineering practices up in smoke
October 10, 2018

DevOps is sending engineering practices up in smoke

Read blog
Redesigning business applications at Microsoft using PowerApps
October 01, 2018

Redesigning business applications at Microsoft using PowerApps

Read case study
Creating consistent and engaging corporate apps with PowerApps
October 01, 2018

Creating consistent and engaging corporate apps with PowerApps

Read Article