We have certain applications on-prem on physical servers. We had some on Windows and some on Linux. There we had requirements where every time we had to manage extra load, we had to spawn a new Tomcat node. Scaling was one of the issues we were facing, and every time we had to scale up, it was a challenge. Plus, we had to procure infrastructure and do a lot of configuration and setup for the new instance being launched.
Once we set that up, scaling down was a challenge as we did not always bring that down when not needed. When we did not have too much traffic, we still had a lot of infrastructure lying idle. At the same time, when we had high load, we were not able to scale up quickly.
There was too much patching that happened, and every time we had to patch something it became a challenge. There were versioning issues with operating systems versus Java and other technologies we were using. That is why we moved to containerization, where we defined what operating system we need, what Java version we need, and what steps we want to do. Containerization helped us create that one unit we wanted to deploy. Red Hat OpenShift helped us with managing scaling up and scaling down.
Because it was centrally managed in our company, many metrics that we had to write code for were available out of the box, including utilization, CPU utilization, memory, and similar metrics. We performed multiple transformations from physical servers to Red Hat OpenShift, and some from virtual servers to Red Hat OpenShift.
The OC utility tool is something we use very often for replication, replica sets, and config maps for managing all environments and secrets. This is very useful for us. Routing is another beneficial feature we get, so we do not need to manage or do too many things for load balancing.