This article highlights our technical solutions and the results of optimizing the health and wellness app.
Context:
Our partner, the U.S. health and wellness company, embarked on the digital transformation journey. It released a helpful mobile app that assists users in maintaining their food habits and meal programs with the guidance of professional coaches. By tracking one’s progress, they move to a healthier lifestyle. The app has the following features:
a meal plan to promote weight loss while keeping users on track for their health goals;
a weekly grocery list that allows users to customize their meal plan according to their preferences and has alternative food choices;
a dedicated personal coach who keeps users motivated and well-informed throughout their journeys;
a personalized page with milestones and achievements in clear graphs, visually representing weight loss progress. The health and wellness app also contains a resourceful recipe repository, community platform, and leaderboard pages to interact with other members and exchange experiences.
In short, the app creators aim to promote a long-term lifestyle change rather than resorting to occasional diets. However, the app required significant technical improvements soon after the first release. Our team was invited to make necessary improvements and set on enhancing the app’s performance.
Goals of the Health and Wellness App’s Improvement
The project encountered several challenges that required meticulous planning and creative problem-solving.
We mapped the implementation path with our business analysts and created several product hypotheses to drive revenue and bring value. Our team identified several significant challenges:
Slow performance. Before we started our work, the app experienced low operational speed on iOS and web platforms, which needed to be optimized to provide a seamless user experience. When we measured app speed, we found that opening a chat room takes more than 35 seconds.
Media storage optimization. The space took more than 170 GB
Poor test coverage: only 5% of the backend was covered with tests. To ensure the app’s stability and functionality, it was essential to implement comprehensive testing coverage.
Process:
1) Media storage optimization was crucial because every photo was uploaded as an original file and downloaded every time the user opened the screen. Upon that, the average size of the picture was around 10-12 Mb.
We applied compression techniques without compromising image proportions, which resulted in faster loading times. Additionally, the storage space was reduced by a remarkable factor of ten, from 170 GB to 17 GB, by utilizing DigitalOcean Spaces, an S3-compatible object storage.
2) To ensure database consistency, we made it impossible to delete attachments without a file and vice versa.
3) An essential update that boosted the app performance was to achieve a faster opening time for multiple app pages. For example, the web app took a user 15 to 30 seconds to open a chat room and more than 30 seconds on average to open the “Teams” page. Two patches were released at one-day intervals. The below chart represents the dynamic of time responses to different requests. On the first date, it jumped to 50 seconds; after the patches, it was reduced to 5 seconds.
The web app user can now open a chat room for 6 – 9 seconds on average.
4) We identified the N+1 query problem that affects the requests’ performance. By eliminating N+1 for the latest messages for chat rooms, we cut the processing time from 3,9 to 3,5 seconds.
5) Optimizing the main request for the chat room was essential. Our engineers measured the request time before the optimization, found it to be 16,89 sec, and cut it by more than a half down to 7 seconds.
6) One of our goals was to increase testing coverage. Only 5% of the backend was covered before the work, with more than 40% being covered now.
The app parts covered by testing now include:
api/meal_plans_controller
api/user_meal_plans_controller
api/coach/meal_plans_controller
api/playments_controller
set_status_suspended_worker
7) Improving and tracking performance is impossible without adequately understanding the metrics. Implementing New Relic agents in staging and production environments enabled real-time application performance tracking.
We also integrated Slack to enable critical alerts and permanent monitoring of essential metrics.
Immediate alerts were enabled for main infrastructure entities, such as:
CPU usage (should be less than 80%)
Memory usage (should be less than 80%)
Disk usage (should be less than 80%)
Host responding (should be available with 5 min intervals)
Redis process presence (should be available at 5 min intervals)
Alerts are sent to the dedicated Slack channel, covering technical incidents and allowing us to address them quickly. There is more to that: we introduced the incident management procedure. It allowed the customer team to forward a matter to the engineer in charge rapidly.
In general, New Relic provided multiple informative dashboards to track application performance.
This tool helped us identify the most frequently used backend endpoints, along with the frontend request statistics
Performance improvements:
The following statistics visually represent critical improvements of major tracked parameters that were included in our “to-do” list:
The combined design, testing, and optimization efforts transformed the app into a feature-rich, lightweight, and user-friendly tool for health and wellness enthusiasts. Users experienced improved performance, faster loading times, and increased ease of use, allowing them to embrace and maintain a healthy lifestyle effortlessly. This digital health project’s success not only delighted the U.S. health and wellness company but also positively impacted countless individuals seeking a healthier and happier life.
Thinking about the development or improvement of your digital health app? Our custom development team will be glad to assist you with that! JetRuby has a sound health tech app development experience, delivering exceptional products that aid health brands in enhancing medical care.
Summary: This article reviews server configuration approaches that will help you to maximize the Ruby app performance. Our previous article dealt with the…
Business Requirements Analysis is a systematic approach used to identify, analyze, and document the needs and objectives of a business or organization. It…
In summer 2021, Microsoft and its subsidiary GitHub announced the launch of Copilot – a neural network capable of writing code correctly for…
Get the best content once a month!
Once a month you will receive the most important information on implementing your ideas, evaluating opportunities, and choosing the best solutions!Subscribe
We use cookies to make Jetruby better. By clicking "Accept cookies", you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. OK, I want to read more