Keeping a Popular Web Application Up and Running While Rebuilding It

by Pavel TsiukhtsiayeuSeptember 16, 2010
Learn how Altoros helped to rebuild the outdated architecture of the app, while retaining the functionality and reducing downtime to seconds.

About the project

An interactive community for childcare providers turned to Altoros to redesign the architecture of the existing web application while preserving high availability. The customer wanted to develop a web application that had to operate at full capacity throughout the whole development and integration process. Although there were some challenges with adding new modules, as well as integration and testing procedures, experts at Altoros managed to completely rewrite the outdated code structure to address the issues.


Step-by-step code updates

To minimize the downtime when applying the changes, developers at Altoros decided to perform the integration and code updates in stages. Replacing the whole working modules step by step could help to avoid affecting the performance of the entire application.

First, each unit of the existing code was carefully tested to find out how it behaves. With all the necessary information, it was clear what actions and results should be reproduced.

As a second step, all the updates and the new code were also completely covered with tests. When a new piece of the code was created, new tests were written for it. As soon as all the tests had been passed, the new code was uploaded to staging, where real users and QA engineers tested it in the environment close to the production server. The new module was moved to production right after making sure everything was operating properly. These step-by-step code updates guaranteed that each new unit functioned properly and would not damage the system.

During the process, our experts encountered a problem with improper testing. A part of the application was not covered with unit tests by the developer who launched this application prior to our involvement. This incurred the issues with user registrations after adding one of the new modules, leaving out the information on how the system should work and the number of possible user scenarios. Fortunately, our engineers fixed this problem and created the missing unit tests after the updates were implemented.

Initially, the system had about 400 unit tests. After the redesign, it had over 1,000 tests that can be utilized now by other developers willing to add new functionality.


Error notifications

However, it is not enough to pay attention to testing during the implementation process only. When a new feature is added, there are always minor bugs that are very hard to detect. Fortunately, Google bots and spambots are great testers. They may visit new pages earlier than real visitors, fill out forms there, etc. This often leads to discovering situations a developer could have overlooked.

To improve bug-fixing and react as soon as possible, our experts made the application automatically send an e-mail when any performance error occurs. This is an efficient way of tracking bugs when the system is already in production—even if a bug is found by bots.


Highly available web application

Partnering with Altoros, the customer retained the functionality of the app throughout the whole development process almost without downtime—the latter was limited to just a few seconds. With this solution, the customer succeeded in expanding its services further—the team successfully engaged four new cities and two new states in their community.

Our team has created a case study that covers this topic. Comment on this blog post if you’d like to learn more about the story.


Further reading


About the author

Pavel Tsiukhtsiayeu is a full-stack engineer at Altoros. He has solid experience in web apps delivery. Pavel has profound knowledge of both front- and back-end technologies, including Elixir, Phoenix, Ruby on Rails, React, Twitter Bootstrap 4, etc. In addition, he has expertise in leading a practical course on Ruby and Ruby on Rails for junior developers.

The post was written by Pavel Tsiukhtsiayeu and edited by Katherine Vasilega and Alex Khizhniak.