You are hereBlogs / alif's blog / Scaling Application - Ultimate Fishing Town
Scaling Application - Ultimate Fishing Town
Its been a while since I last wrote a blog, so I decided to write something random.
Recently I was involved in an interesting Application for World Fishing Network. The Application started off as a regular Contest called Ultimate Fishing Town, asking users to upload their photos or videos or written entries.
Among several other features, the Application allowed Visitors to:
- Vote for a town, and the highest voted town would get picked
- Generate very customized banners (JPG or PDF) of towns, all generated on the fly.
- Google Maps was implemented displaying all the towns, and each node/pin would display more info.
Issues on the Application due to Traffic
As time progressed, the Traffic grew significantly (more than anything we could have anticipated). At one point, the site became very very slow (we received millions of hits) and were having numerous issues. Eventually, the site was taken down for certain hours and to have it optimized.
Optimizing the Back-end and Front-end using the best practices
My challenge was to scale this Application to ensure it can receive millions of hits in the coming days of the contest. So, I had to optimize the Back-end and Front-end of the Application
Front-end Optimization: At first, I sat down optimizing the Front-end. I followed the Yahoo's Exceptional Performance Team's guidelines to improve the Front-end significantly. In the end, my YSlow Rating was improved from E(50) to ~B(80). And, if it wasn't for the bloated sponsor Ads in JS, the YSlow Rating could easily have been improved much more.
Back-end Optimization: I sat down optimizing the Back-end Queries. I did the following steps:
- Optimized Queries across the Application.
- Implemented SQL Caching Technique. Things like Un-modified Content Pages were cached to Flat Page.
Final Deployment
Finally, with all those implemented on the site and after re-developing the voting mechanism for a better User Experience, we launched the Application again.
Thankfully, we haven't had any issues with the site after that, and the contest overall ended up being a success. Overall, it was a different experience for me. As a project, this was a small project, but the challenge for me was to make the application Scalable.
Post new comment