Under The Hood at XDA Developers
Running a website as large as XDA isn’t an easy process – we depend on a web development team here in Philadelphia, plus the fantastic products and serviced offered by our host, LeaseWeb, to ensure the availability and speed of the site that every Android enthusiast knows and loves. Knowing that our visitors are more technical in nature than most, we thought that they might appreciate a look ‘under the hood’ at XDA to see what makes us run.
The Core Stack
- Persistant Data: Percona MySQL
- Object Caching: Memcache / Redis
- Language/Application: PHP, with an ever-growing Python presence. We are also experimenting with Go
- Load Balancing/Web Caching: Nginx
- Search: Sphinx
- Automated Deployment: Capistrano
- Code Management: Github
XDA Forums have for a long while been running on vBulletin. This software has been modified using many plugins both stock and custom, plus we’ve made some core tweaks in order to power our atypical forum with nearly 60 million posts.
We moved our hosting infrastructure to LeaseWeb in 2013. In their datacenter in Virginia, we have a rack of network equipment and servers which host our servers. We use IBM enterprise-class hardware, and most servers have SSD drives in RAID arrays to ensure data reliability. They are connected via a private backend network at 1G and have a 10G uplink to the internet.
The name of the game for us is redundancy. We have multiple network connections in case an ethernet cable goes bad, along with multiple hard drives, and multiple switches to ensure further redundancy. This makes certain that if any single piece of equipment goes bad, we’ll remain operational so that our users can continue to use the site without any hiccups. And in fact, hardware does go bad. We had an instance recently where we rebooted a server after a software update and it just didn’t come back online. After opening a ticket with LeaseWeb, their techs determined that the hardware had gone bad and they had a replacement in place in a few hours. Knowing that there are capable hands in the data center to help you with issues like this is very important to us and is one of the reasons that we continue to use LeaseWeb. The picture to the right is a real image of our network switch.
Pulling It All Together
We monitor everything we can. That goes from monitoring the activity of the hard drives on each server to the performance of real-world page loads on XDA. When there is a problem we notice quickly and can have fixes ready in a short amount of time.
For development, we use either Ubuntu machines or virtual machines running Ubuntu and a relatively close clone of our production environment. This allows us to test changes to software versions and code changes across branches. That being said, there is nothing like pushing our your code to millions of visitors and having it react differently than you expected. That has happened to all of us here, and while it’s never fun, it does provide an interesting learning experience.
There’s a lot to look forward to in the web development world, like the new HTTP/2 changes, web sockets, and Golang. We are also beginning to use Docker which is really an excellent way to make it easier for developers to get up and running on a technology stack that is very close to production.
If you have any questions regarding our infrastructure, please let us know in comments below and we’ll attempt to answer them. And of course, big thanks to our host, LeaseWeb, that has helped us craft a custom-tailored solution for XDA. If you have server needs, big or small, check them out. We thank them for sponsoring this article.
Read More About How XDA Works
You might recall that last year we ran a series of articles that described how various systems of XDA work. Here’s a quick recap.
In part 1, we described how the moderation system functions to keep XDA as organized, spam-free, and civil as possible. This is achieved through multiple tiers of moderators, including Senior Moderators that help guide site policy and direction, Forum-Specific Moderators that work as the “boots on the ground” to ensure we have full forum coverage, and an overseeing body, the Moderator Committee, tasked with the adding and removal of moderators. Part 1 also mentions how we rely on users to report posts for moderator review.
Then, in part 2, we took a look at the path of a web request to our servers. Once it hits our load balancer, the client machine gets served either a page from cache, or, if it’s a custom request, our application servers handle the request. For persistent data, we run a cluster of database servers because we try to cache as much as the site as possible. Our infrastructure wasn’t always so robust; it wasn’t long ago that XDA was hosted on a single server and the site would experience frequent outages. Today, the site’s uptime and performance is better than it’s ever been, but we regularly tweak our configuration to make as many optimizations and improvements as possible.
And lastly, in part 3, we talk about how XDA has fundamentally changed over the years as there has been a transition from Windows Mobile to Android in the world of smart devices. Despite this change, our focus on community, sharing, and development remains unwavered. To that end we created the XDA Development Database, now used by thousands of developers to better share and organize their development works. Additionally, we have several designations given to the best developers on our site through the Recognized Developer and Senior Recognized Developer programs. Not only that, but XDA has hosted a developer conference both in 2013 and 2014 as a place for developers and aspiring developers to learn from and connect with fellow developers.