In the first blog post of the series, we talked about the cloud in general and the shift in mentality needed to move away from self-managed on-prem VMware environments. The next phase of this revolution in IT is integrating customer applications into the AWS ecosystem and enhancing your current application with new features and functions that are native to the cloud. With this, comes the logical need (usually) to provide improved availability and fault tolerance to an application, which leads to another Cloudy concept of removing persistence/statefulness from client’s applications.
Before removing persistence/statefulness, let’s visit what persistence/stateful is and means in this construct. Most apps built in that last 8-10 years had to figure out a way to keep track of its users, sessions, and sometimes data on a per-user basis to function. Ultimately resulted in requiring apps to store information necessary to preserve the state of in real time locally. Most apps were developed to track these locally on one server, with no concept of what if I need a second web server or what if I need to terminate this box and build a new one in real time.
Now that you understand persistence, you’ll also now start to realize that to remove it requires removing/replacing existing functionality within a given app to add additional AWS capabilities.
If your legacy app is Apache Tomcat-based, it is possible to trick the app by telling Tomcat to intercept stateful calls and sending them to a shared Memcache server, allowing you to scale your web servers and providing fault tolerance – without modifying existing application code. In fact, it may help your teams to evaluate options to share session data that are available on the web servers your application is running on – may save you a lot of time.
Ultimately you can consider the AWS as a fancy TV with a super awesome remote that lets you automate tasks and resources in fantastic ways. Thinking Cloudy is thinking about how to solve problems by leveraging the write AWS services and automating the hell out of everything you do.