In my team, we are maintaining a monolithic application that was started in 2003. It is written in Java and has seen several successive layers of technical changes, growing to a hefty 400k-line application.
Recent business strategies decided by the brass now require that we move to containers. The goal is mainly, if not solely, deployment across multiple platforms and cloud providers.
Since we have never done any similar migration, we went to a tech firm that is a partner of our chosen cloud provider.
They surveyed the application portfolio with our input, and they strongly suggested that we convert the application to a stateless mode. I can even say that they presented the statelessness of the application as a prerequisite for containerization.
As the manager of the development team, I fail to see why statelessness is such a hard requirement, when we know that there won't be any scaling up or down, but I must confess that my software architecture skills are no longer as sharp as they were, say two years ago.
Given that we can't suddenly stop from storing data in the application server sessions, I fear that we embark into a lot of changes to our legacy applications, including loss of functionality for our business users.
My question is why is "stateless" a requirement?