The infrastructure architecture
Our application is a traditional Java application that runs on Tomcat. It uses MySQL to store the relational data and Redis to store the user sessions. As this is an enterprise application, security, availability, and scalability are all important factors. For this reason, we have placed the data tier into a separate subnet protected by a firewall; likewise, the presentation and application tiers are placed in another subnet, also protected by a firewall. The firewalls are configured so that only the Tomcat servers can connect to the data servers, and only HTTP(S) traffic from the internet is allowed into the Tomcat servers. Finally, a load balancer has been placed in front of the Tomcat servers to support our scalability and availability needs.
The following diagram captures the overall architecture of the infrastructure that houses the legacy application being introduced: