Improving performance of a corporate app with modernization. Legacy Garage 4
00:00 → 00:04
Every company dreams of a big increase in the demand for its services.
00:04 → 00:08
But what if the demand grows and your product is not ready for scaling?
00:08 → 00:11
Would you let the opportunity go or instead focus on
00:11 → 00:12
improving performance?
00:12 → 00:14
If you are still watching this video,
00:14 → 00:16
it means you chose the second option.
00:16 → 00:18
So without further ado,
00:18 → 00:21
let me show you how you do it with software modernization.
00:38 → 00:41
Legacy Garage is a series where we present different
00:41 → 00:44
ways of dealing with the most common challenges of software
00:44 → 00:45
modernization.
00:45 → 00:49
We draw on our experience and present solutions based on the
00:49 → 00:51
example of one product.
00:51 → 00:52
In this episode,
00:52 → 00:55
we show how to improve the performance of a platform for
00:55 → 00:59
managing corporate processes in industrial environment.
00:59 → 01:02
It's not a typical project management application because
01:02 → 01:04
it's used in the mining industry.
01:04 → 01:08
It serves both the company's employees and its customers.
01:08 → 01:11
The app was created about ten years ago and for a long
01:11 → 01:14
time was able to meet the business needs.
01:14 → 01:17
However, recently, there was a significant demand boost.
01:17 → 01:18
On the one hand,
01:18 → 01:21
it was a huge opportunity for business growth and revenue
01:21 → 01:22
increase, but on the other,
01:22 → 01:25
the company realized that the current application would not
01:25 → 01:28
be able to meet such high demand.
01:28 → 01:31
The most important thing that needs to be improved is the
01:31 → 01:33
performance of the application.
01:33 → 01:34
And by performance,
01:34 → 01:38
we mean boosting the the speed of the application and its usability.
01:38 → 01:42
This also translates into improving the overall productivity.
01:42 → 01:46
This way, the company will be able to handle a much larger workload.
01:46 → 01:50
How to adjust the performance of the new requirements?
01:50 → 01:53
Is migrating to the cloud always the right solution?
01:53 → 01:57
Is there any way to ensure the processes will not be disturbed
01:57 → 01:59
because of connectivity issues?
01:59 → 02:01
Let's look under the hood and find out.
02:01 → 02:04
So what are the main challenges in this project?
02:04 → 02:08
First of all, we need to deal with an outdated code base with
02:08 → 02:09
a high entry threshold.
02:09 → 02:13
The company started working on this product over a decade ago.
02:13 → 02:17
Since then, they have focused on adding new features but haven't introduced
02:17 → 02:19
any major updates.
02:19 → 02:20
On top of that,
02:20 → 02:24
some technologies are no longer supported and need an urgent upgrade.
02:24 → 02:28
As you can imagine, it translates into very low performance.
02:28 → 02:32
It doesn't facilitate or I can even say it blocks the company
02:32 → 02:35
from scaling and achieving ambitious business goals.
02:35 → 02:38
The inadequate cloud architecture causes another problem.
02:38 → 02:42
The company was aware of the costs of migrating to the cloud.
02:42 → 02:43
But in the end,
02:43 → 02:45
they decided on a cheaper solution instead of choosing
02:45 → 02:47
the AWS architecture.
02:47 → 02:50
Another important challenge is to ensure that the application
02:50 → 02:53
runs smoothly without Internet access.
02:53 → 02:57
Inspectors using the app on the client's side sometimes work
02:57 → 02:59
hundreds of meters underground.
02:59 → 03:02
Users often report problems with the application.
03:02 → 03:04
The overall usability is poor,
03:04 → 03:06
and the app is not intuitive.
03:06 → 03:09
But the biggest problem can be found on the technological side.
03:09 → 03:13
The code is outdated, and its maintenance takes ages.
03:13 → 03:16
The main challenge for the company is to provide a
03:16 → 03:19
seamless workflow in a low connectivity environment.
03:19 → 03:22
It can significantly improve the performance of both the app
03:22 → 03:24
and the entire business.
03:24 → 03:26
How does it look right now?
03:26 → 03:28
Inspectors work in their offices with a very good
03:28 → 03:30
Internet connection.
03:30 → 03:32
They download tasks and update the app.
03:32 → 03:36
Then they go underground where the connection is low or there
03:36 → 03:37
is no connection at all.
03:37 → 03:40
They do their job by scanning the RFID of mining tools,
03:40 → 03:42
filling the forms, and taking photos.
03:42 → 03:45
All of this data is introduced to the app.
03:45 → 03:47
While inspectors are back in the office,
03:47 → 03:51
they turn on synchronization and the data is sent to the server.
03:51 → 03:52
What's the problem here?
03:52 → 03:56
Firstly, the synchronization is done by an API that doesn't
03:56 → 03:58
meet the modern development standards.
03:58 → 04:02
Secondly, if any inspector mistakenly enables synchronization while
04:02 → 04:05
still underground with a low Internet connection,
04:05 → 04:07
it results in a database error.
04:07 → 04:09
Now, let me show you how to fix that.
04:09 → 04:12
First of all, we need to start with the code base.
04:12 → 04:13
On the one hand,
04:13 → 04:15
we focus on maintaining the current code base to keep the
04:15 → 04:17
app functional.
04:17 → 04:22
On another, we clean and update the code to adjust it to the today's standards.
04:22 → 04:26
We upgrade Python two to Python three as the older version is
04:26 → 04:28
no longer supported.
04:28 → 04:33
We fix all the bugs that arose over the years and haven't been addressed yet.
04:33 → 04:36
We also upgrade the framework to the newest version.
04:36 → 04:39
This phase will last about two to three months.
04:39 → 04:42
Then we can start working on improving the performance.
04:42 → 04:46
Firstly, we focus on changes that can be implemented within the app.
04:46 → 04:50
To do that, we need to create a different code repository we can work on.
04:50 → 04:51
It's basically the same code,
04:51 → 04:56
but the first repository allows the application to run without interruption,
04:56 → 04:58
so the current business operations are not affected by
04:58 → 05:00
the modernization.
05:00 → 05:04
The second repository is the one where we implement improvements.
05:04 → 05:06
So here, we analyze and optimize
05:06 → 05:08
database queries.
05:08 → 05:12
We also migrate the data from MySQL to PostgreSQL.
05:12 → 05:13
Thanks to this solution,
05:13 → 05:17
we achieved twenty times faster loading of views, no timeouts,
05:17 → 05:19
and improved user experience.
05:19 → 05:22
Let's focus on cloud solutions.
05:22 → 05:23
Since the very beginning,
05:23 → 05:26
every client has had its own application on a dedicated
05:26 → 05:28
server and domain.
05:28 → 05:31
But the efficiency of the system is limited as this
05:31 → 05:35
solution has become ineffective for the largest customers.
05:35 → 05:37
Now we plan to migrate it to the cloud.
05:37 → 05:41
It will be based on micro service infrastructure,
05:41 → 05:45
at the heart of which is the main dashboard accessible for all clients.
05:45 → 05:48
This solution is responsible for user authentication,
05:48 → 05:51
so all the data previously scattered across different
05:51 → 05:54
servers are now gathered within one main dashboard.
05:54 → 05:57
We also implement nodes that communicate with the dashboard
05:57 → 06:01
and indicate what data a specific user can retrieve.
06:01 → 06:02
Now, let's move on to the offline mode.
06:02 → 06:07
The application has to be able to run-in a low connectivity environment.
06:07 → 06:08
The current solution,
06:08 → 06:11
ensuring access to the app with no Internet connection,
06:11 → 06:14
is unreliable and causes usability problems.
06:14 → 06:17
Firstly, we implement data caching during synchronization and
06:17 → 06:20
create duplicate detection rules.
06:20 → 06:23
Then we can take care of improving APIs.
06:23 → 06:27
We get rid of sending large JSON files and we replace them
06:27 → 06:28
with REST API.
06:28 → 06:33
This will improve the performance and overall productivity.
06:33 → 06:36
It will also reduce the risk of errors related to a low
06:36 → 06:37
Internet connection.
06:37 → 06:40
For authentication, the application will still use
06:40 → 06:44
OAuth two and authenticate through this central service.
06:44 → 06:47
These are the technological solutions that we use to
06:47 → 06:51
improve the app performance and help the company prepare for growing demand.
06:51 → 06:52
Thanks for watching.
06:52 → 06:54
If you like this video and want to know more about
06:54 → 06:58
software modernization, visit our insights.



.avif)

.avif)
.avif)
.avif)