When we started the design of appFiles we knew we wanted to produce a robust application that could withstand great amounts of traffic and deliver the best possible user experience. We had the opportunity to draw from our previous experience with our other software products, particularly E-Tempest, which is a computation intensive software that receives considerable daily usage with a current uptime of 100% over the past 5 years.
We also know that based on everyone’s reactions, appFiles is a software that is capable of explosive growth. We wanted to make sure that we could support that growth without the need for a major re-design of the infrastructure. Yes, we have heard what the “experts” say about scaling your software, “Don’t worry about scalability until you have lots of users and it becomes a real problem.” In other words what they are all saying is that, “Scaling problems are good problems to have.”
However the trust of our customers means everything to us and we have a reputation to maintain. We are very proud that our other software products have not suffered downtime nor even significant slowdowns. So if there was anything that we could do now to help prepare appFiles for the future we felt it was our obligation to do so. Fortunately the answer came to us in the form of a very interesting infrastructure design that allows us to keep the system simple at a small level and scale easily when the need arises.
appFiles runs on a distributed network of servers that work together, each performing a specialized function within the appFiles software. This enables us to be redundant as well as scale different parts of the system independently as their loads increase.
When a user first connects to their appFiles account their request is routed to one of our application servers which in turn validates their login credentials then connects to the database and file servers which hold their specific account’s information. By using this architecture, we guarantee that any group of accounts can be sliced and made to work entirely independent from all others, thus keeping the load on any single server manageable and easy to control.
To maintain the many database, file and application servers, we developed our own IDE (Integrated Development Environment) that keeps track of all changes made with each new revision to the software. These changes are then applied to the appropriate servers and accounts when new versions of the application are made live. We spent over 40,000 hours writing this Integrated Development Environment to ensure that it could handle both the load of many users and servers as well as the demands of developing the many different apps that will be built to extend the base functionality appFiles for different industries.
We know that there may come a day when our design needs to be reviewed and new decisions need to be made, but we also know that our current infrastructure is flexible and will give us the best opportunity to scale as necessary enabling us to keep our commitment to each of our customers.