A few months ago, shortly after joining the Web Performance Lab, I lead a project on site optimization. The site in question was, as mentioned in a couple of earlier blog posts, the Magento-based web store at Delivergood. There were some issues because the Delivergood web store could handle at most 100 concurrent users.
Since the Web Performance Lab is all about web performance testing and optimization, we looked into making their web store site more scalable. We had a few ideas about what we could implement with their site to improve page speed and increase scalability. We had done this before with our own WordPress blog! Robb Price, the founder of Delivergood, let the team and I take the wheel on this project. Our requirements were not formally defined. Robb simply expected for us to make his site scale, and we expected the same but in hopes of learning from it.
The following are some personal learning experiences I gained from the project. Consider them lessons learned:
Keep Tabs
Perhaps the most important thing you can do is keep tabs of your work. Document, record your screen, handwrite; whatever it takes to be able to come back to it later. Projects like this tend to grow in size and complexity. You find out you need to do more and more things. Time can be your enemy too. You forget small steps or entire processes if you don’t keep track.
Documenting what you do also helps you look back and determine other steps you could have taken. What if you move the CDN link to a different configuration scope in Magento? You’ll know what worked and what completely broke the admin panel backend (this has scared us a few times). Logging helps because it shows your peers what you’re doing! It proves that work is being done, the results, and what the project entails even if a team member is not around to explain it. It’s also good a team member needs to start where you left off, and Dig Resources
Whenever you’re not writing documents, you should be reading documents. It can come in the form of blog posts, step-by-step guides, or official technical documentation. More than likely, the problem you are running into has been seen and fixed before. Referencing other people’s work allows you to save time and get more real work done. Some of the documents we were able to make use of included: linking the CDN to Magento, changing admin settings via phpMyAdmin, and creating CNAMEs.
Checklists
Checklists are a nifty tool when you deal with routine, procedural tasks. For example, I made a checklist that went through setting up an EC2 with Magento, then installing Varnish-cache on that EC2. Making checklists is like documenting, but the process is often more rigid since a checklist should definitely be reproducible. After all the documenting, reading documents and making lists, you might still find yourself at a roadblock. Once this happens, it is a good time to just take a moment to stop and think. Look back at what you’ve documented. See if it makes sense, if your workflow is staying on track, and whether you are ultimately making progress. This can even be considered a break.
Think Ahead of the Curve
Maybe it’s ironic that I mention this last, but be sure to plan ahead. One of the glaring problems we had while doing site optimization was figuring out that we needed more access than Robb had initially given us. We started out just needing access to the Magento admin panel, but then we needed the web hosting console, phpMyAdmin, and eventually SSH access. It might have helped to have all access rights in the beginning, as some time was wasted just waiting for an email. {next point about communication}Having good communication would have helped expedite the project. We also didn’t know about the kind of beast Magento would be; a bit of preliminary research could have better prepared us for the road ahead.
Working with Robb Price and Delivergood was a purely experimental procedure. We wanted to learn about how optimization could be used with Magento, a popular e commerce platform that many people use. Using some of my background in Linux and web apps, I took away knowledge about SQL, Cloudfront on AWS, and especially Magento, from this project. Like with everything in life, we all look back on events and say to ourselves “Huh… You know… I could have done that better.” Special thanks to Robb Price, and the Delivergood team for being patient and trusting the Web Performance Lab with their server.