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.

Let's connect and build together