Heraclitus, the Greek philosopher said, “Change is the only constant in life.” The willingness to change our life for the better has been around for the time being. Going all the way from inventing the wheel to mastering cloud-based services, modernization always remains the synonym of business growth. Whether we’re talking about manufacturing facilities, business standards, equipment, and applications — for each of these items modernization is a must.
So, you’ve been developing applications for decades. Previously, you pioneered in leveraging IT technologies and your applications were always successful. Sooner or later, these apps become outdated and fail to meet the latest industry standards and requirements. To stay abreast of the competition, you need to adapt to new technology trends.
DB Best application modernization portfolio includes hundreds of successful projects. In this blog post, we will share the application modernization best practices and key findings with you.
Why and when modernize applications?
According to Lehman’s laws of software evolution, all applications need to be constantly updated during their life cycle. However, adding minor features and updates for long years may make your system unmaintainable.
Studies show that the average software lifespan is around 6-8 years. For huge applications with millions of lines of code, the lifespan may reach 14 years. We at DB Best have worked with applications that have been utilized for over 40 years! For example, we updated a dinosaur Cobol application that interacts with outdated versions of the Oracle database to modern Java language.
Eventually, you have to call it a day and think of a major upgrade of your application. That’s what we call application modernization, and here’s when the high time comes for this:
- Adding new features becomes impossible or more expensive than re-writing the whole application from scratch
- The application becomes unmaintainable
- The technologies used in the application become out-of-support or outdated (for example, Oracle Forms, the technology which is now deprecated by Oracle)
Usually, we recommend modernizing your applications every decade. With the rise of the cloud era, many organizations are happy to get rid of their data centers and prefer using cloud storage and services. The cloud welcomes all customers, regardless of the age of their applications. However, the older your application is, the higher modernization effort it may require.
Typical application modernization steps
The application modernization process includes but is not limited to updating the application code. Your applications depend on data stores and you need to update those as well. Actually, most of the application modernization initiatives originate from database migration projects. Anyway, modernization projects are complex and involve different parts of your data infrastructure.
TODO: Need to crop the title out of the image and use h tags instead for SEO.
TODO: Need an introduction sentence describing what the reader should expect to gain from the diagram below. Basically, move the text below the image into a concise paragraph.
[/cci] [TODO] The content below the diagram is the core behind the post for these three phases. Also, the steps below need to align with the diagram. For example – Step 1. Analysis.[/cci]
Usually, the application modernization projects break into 3 parts.
Step 1. Thorough analysis of the current solution
At this step, we:
- Get a Golden Copy of the application code from the customer
- Decompose application to small modules
- Prepare the proof of concept (PoC) for one module
Step 2. Application and database transformation
We utilize conversion automation tools including the likes of SSMA, AWS SCT, and DB Best Migration Platform to convert database code and SQL statements embedded into your application. Anyway, these tools do not provide a 100% conversion rate. So, our team has to perform a round of manual fixes to ensure that all source code was converted to the new target.
Based on the results of the PoC, we apply the created architecture solution to the largest module of the source application. After we make sure that everything works fine, we proceed to the next modules one by one.
Step 3. Delivery
At the final step, we make sure that the application works exactly as before after an upgrade. To do so, we:
- Prepare unit tests
- Run integration and functional tests
And then we deliver the converted application to our customer.
Many of customers that turn to DB Best, maintain applications based on an obsolete monolithic architecture. Nowadays, cloud technologies gain ground. Particularly, the microservice application architecture becomes more and more popular. This is a cloud-born solution that implies using different independent services, where each service is responsible for a certain task. Our experience shows that microservice-based applications are relatively easier to upgrade, scale, and maintain compared to monolithic analogs.
That is why we usually take the services approach when it comes to the modernization of monolithic applications. However, this is not the only architecture-level update we apply. As we already mentioned, most of the application modernization projects run side by side with database migrations. This may be a simple database upgrade or a complex heterogeneous migration, where we change the underlying database platform. In any case, you should consider a modernization project as a complex database and application upgrade.
Generally speaking, all applications include the user interface at the front end, business logic as well as data access layer at the back end, and a data storage. While leaving the front end of the application untouched, we go a long way with the back end, updating all of its components. This includes database schema and code conversion, an update of the embedded SQL statements, and make the required driver changes. And, of course, we use different conversion automation tools.
Useful tools to save time and money
The DB Best team has successfully completed hundreds of application modernization projects. In these projects, we rely on the following tools:
- DB Best Migration Platform automates the migration of your databases across different platforms both on-premises and in the cloud.
- Our internal Application Migration Utility allows for extracting SQL statements from the application code, converting them, and inserting back into the application.
- Microsoft SQL Server Migration Assistant converts database and application code conversion to Microsoft SQL Server and Azure SQL Database.
- AWS Schema Conversion Tool (SCT) assists in migrations to MySQL and PostgreSQL. SCT also provides users with conversion action items as well as recommendations on how to address them.
- Oracle Forms and Reports Converter automatically converts up to 100% of your Oracle Forms and Reports code to modern Web 2.0 architecture. The ultimate DevOps process established around this tool allows for seamless conversion of forms and reports of any complexity.
The Application Migration Utility is DB Best’s secret weapon, that allows for simplifying and automating modernization projects. This is an orchestrator tool, which integrates many other converter engines. This highly customizable utility has a simple GUI, with straightforward scenarios for any user.
Managing our customer’s complex applications for decades, we created and delivered thousands of builds. The sad truth is that most of these builds have never been properly tested because many customers underestimate the importance of testing all systems’ components. This issue goes back in time to the very beginning of the application development era. At that time quality assurance was not common practice. However, both the rapid growth of application development activities and the modern development flow require rigorous testing.
Believe it or not, but we worked with the customer, who used to test more than one thousand application windows and forms manually. This sounds like the labors of Sisyphus, and it certainly is! Manual testing may be acceptable for small projects but this approach quickly becomes unbearable as the size of your application grows. That is why we insist on using automated testing for all system components, from databases to applications’ user interface.
Testing automation allows for increasing the quality of any product while meeting the frequent release schedule of agile development. Once you create the automated test, it will work for years with no additional effort required.
The DB Best team uses the tools like TestNG, Apache Maven, and Appium to help customers cover most of the application features with automated tests. However, often our customers don’t have all the application features properly documented. In this case, creating tests becomes a relatively more complex task. The good news is that when modernizing customer’s applications, we always create automated tests for the core app features. Our customers benefit from using these tests in further development activities and application maintenance.
Continuous integration and delivery
We at DB Best strongly believe that test automation is a must for any application. However, this is just the first step to adopting modern software development culture. Broadly speaking, you need to make continuous integration and continuous delivery a standard for your development process.
Going back to the above-mentioned Lehman’s laws of software evolution, you can never stop your application development. The only way to avoid pitfalls is to comprehend the art of DevOps. In other words, you need to start using continuous integration (CI) and continuous delivery (CD). CI allows for merging the code from several developers into a certain branch of a shared repository, ensures the quality of released software, and foresees the execution of all related tests. CD allows for shortening software production cycles and automating the delivery of software.
Let us return to the application migration topic and take a broader look at it. All steps of this process must be orchestrated through the CI/CD process. These include application and database conversion, creating a build, testing, and deployment. Only after automating these steps, you can polish your application development process to perfection.
The application development industry constantly changes, and you need to keep on track. Regularly modernizing your applications and databases, adopting CI/CD and test automation practices, you will stay on par with multiple competitors. Be sure to address your application modernization needs and pains to the trusted DB Best team and stay focused on your business goals. Let the DB Best team take care of your data-driven applications and build the foundation for the prosperity of your data infrastructure!