At devolute we have been developing and supporting Ruby on Rails application since Rails version 1.
One of the best features of Rails is, that it continuously improved. That advantage also leads to software becoming outdated from time to time.
Here we want to answer some questions and explain how you can avoid getting close to end of life of your product.
The truth is: Even an old Ruby on Rails application can run stable. But you have to be careful with a couple of things:
Security updates and fixes
Every couple of weeks in Ruby, Rails or one of the many ruby libraries used is found a security issue.
While not all of them are critical for you, you have to be aware of them and update as fast as possible.
If your platform grows too old, and still runs on Ruby 1.8.7 or 1.9.3 you loose community updates and your application becomes a permanent risk
Community support of libraries
Ruby on Rails is an open source plattform. It is powerful, free and supported by many different developers and teams. Sometimes one of its building bricks stops being developed or supported or simply gets replaced by a new and better version.
If too much of your application
Best practices
10 years ago, software has been written differently than nowadays. This is not only a question of style - time has changed. How the internet developed also changed the requirements for a modern application.
If you notice performance issues or it just becomes harder and harder to hire anyone who is still able to work with your platform: It is important to modernize step by step.
No matter how old your project is, it is usally the same things that keep it health and alive.
You just have to reserve the time to take care of it. And of course you need an experienced team, willing to work on a legacy codebase.
Spend some time on documentation
Worst case: Nobody in your team knows anymore, how to set up the application - and then you need help.
The first thing we do, when we take over the support of an old application, is to ensure that setup and documentation allow fast intervention.
Set up error and performance monitoring
Your application will have bugs and bottlenecks. It is crucial, to know what parts throw errors and where your software runs slow.
If something happens, you need to know right away. The right mixture of monitoring tools makes everything much clearer.
Run minor upgrades gradually
The biggest blocker for updating is, when updates become too big. A good maintenance plan includes frequent updates.
Everytime we perform a small update of a library, there is also a chance to discover something that can be improved or - better - deleted.
Refactor: Clean up one thing per every 2 things you build
If you are still working on an application: You are not going to make it better with quick fixes and dirty hacks.
When we take care of a ruby on rails application, we make sure there is time to perform the necessary clean ups.
Rebuild only where it makes sense
Almost never you have to rebuild a whole application. Through monitoring we know now better, which parts are really used and how the database behaves under load. So we can extract problem zones into own, lean microservices and save you rebuilding an expensive new architecture.