As the lead developer on a project, you’ve already either created or been given the high level design by your project’s software architect and will now have to implement it. What sort of goals should you keep in mind and shoot for as you lead development of the project in order to maintain the initial momentum towards a scalable product? Thinking big is still part of the game; you must identify specific challenges and potential or actual bottlenecks which could challenge the long term viability of your web application. Whether that’s performing volume testing on specific and vital endpoints of your application or performance testing some common user flows, you have to be cognizant at all times of areas that could be pain points during the growth of your product.
Here are some actions to take during development:
- Leave a SQL logger running and see if any specific requests generate more queries than you’d expect
- Go wild: Add a million items to a shopping cart, spam likes and comments
- Be evil: Try to break things. Create loops in parent/child categories for instance.
- Add a ton of web processes on a production clone to see how your database handles it (connection pooling/raw resources)
- Perform simple requests with stupid amounts of test data. Accidentally loading all records from your DB anywhere?
- Ensure any services such as Redis or Elasticsearch can handle traffic spikes.
There are many more places to take action and monitor; the above should be a starting point to inspire other actions. What do combinations of the above yield, and how does it apply to your application? Thinking on and answering that will provide new ideas which you can combine with the originals until you’ve synthesized a large amount to take care of and think about. Whether you formalize testing of these or not, always remember that they all revolve around two points. Any endpoints, and user or automated actions could be potential weak spots for exacerbating an unidentified hot spot, so keep these following two in mind:
- Malicious actions (intentional or no)
- Large Amounts of Information (whether data or users)
Be aware and mindful of those two, let them guide you as you review features and perform final testing. A little preemptive action on these will go a long way towards saving you for the day where you get slashdotted or decide to turn your product into a SaaS offering. Covering and catching even the few most likely candidates for slowdowns will save you massive amounts of time later.
If you enjoy having free time and the peace of mind that a professional is on your side, then you’d love to have me work on your project.