When establishing the infrastructure for your company, one of the first things you should look at is how you will setup your server or servers. There are several ways of doing so, each with their own unique pros and cons that we will review in this blog. If you have any additional questions after reading this entry, feel free to reach out to me by sending me a note.
While self-explanatory, a single server configuration may be the right way to go for a company with no IT staff, since everything will be located in one location. When setting up a single server configuration, you will typically want to setup a LAMP/WAMP configuration (Linux/Windows, Apache, MySQL, PHP) so that you can run your needed application. However, this format is flawed in that if you plan on running multiple applications, they will all be fighting for the same resources, meaning that there will be growing pains as your business grows larger.
As you grow from a single server configuration, one of the applications that makes the most sense to have its own server would be your database - after all, many applications are limited by the amount of time it takes to query information out of the database, so by giving your database a full server to play with, you get that many more resources to work with. As an added bonus, you can also utilize a hybrid cloud scenario here, placing your database behind a private network and using your application server on a public cloud with the ability to scale in the future. Of course, this configuration isnât as easy to work with as a single server setup, and if you have latency issues there will be performance problems. This can be countered by having the servers relatively near to each other (utilizing Vault Networks Dedicated Servers and vnCloud located in Miami, for example).
Also known as using load balancers, this configuration splits traffic between a load balancer and multiple servers hosting applications. For additional efficiency the database configuration utilized in the Separate Database model can also be used, as well as placing everything but the load balancer in a private network. This also provides protection against DDoS attacks, since the load balancer can simply share the pain between multiple servers, and in a scenario where public cloud is being used, additional scaling can be utilized almost instantly! Of course, there are flaws - this configuration needs the load balancer to be setup properly and to have ample resources, or it will degrade the performance it is intended to improve.
HTTP Accelerators utilize caching to speed things up, meaning that web sites that are served constantly (think www.google.com) are saved into the cache, so that the next time they need to be accessed they are already there. This helps to improve performance for web servers by reducing CPU load, and can also function like a reverse proxy, including the defenses against DDoS by having more servers to handle the pain. Of course, if you donât have consistent traffic, caching will do zero to improve your performance, and may even make it worse, so be aware of how your traffic tends to work.
If your application is heavy on the database, a good way to improve performance is to obtain additional servers for the database. The main database (also known as the master) can then distribute the load between the additional hardware (also called slaves). This improves performance by leaving the master to write new data to the database while the slaves handle read functions, but if the master fails then the database is effectively sunk until it is fixed - and there is no failover built-in for it. Even with this flaw, provided that you are on top of running maintenance tasks on the master database you can easily expand your performance.In conclusion, there are many ways to allocate the load for your servers aside from just plopping everything into one machine. If you have any additional ways that you configure your servers, please let us know by commenting below! We would love to hear your feedback as to how you utilize your infrastructure!