This is the third part of the web development overview series. In the previous parts, we looked at content, design/UX, backend (part 1), building apps from scratch, and frontend development (part 2). In this installment, we are looking at those things that are not always considered yet essential for every website, like testing and hosting.
Does it even work? Hard to tell without thorough testing.
Testing is a part of the project that simply can’t be forgotten or omitted. The world has made a huge jump in recent years, particularly from a technology standpoint, bringing with it some cool features to the web. Unfortunately, it has also brought complexity and a lot of fine edge cases that are almost impossible to predict during planning. That’s why a magnitude of testing technologies and methodologies have appeared throughout the tech world.
So, how can one test the project? Ideally, one should have as much automated testing as possible. Why is it such a big deal? Without automation, every change made to the project code would need going over with a regression test. This is a manual process involving “clicking” through all features of the project to make sure nothing has been inadvertently broken. On top of that, it needs to be done for every user type. This could mean weeks for some of our projects at Nopio!
Fortunately, tech communities have come up with tools to remedy this. Let’s focus on planning to build a new project from scratch. This is a perfect moment to think about automated testing, as it’s way easier to create new code while writing tests for it (eg. using Test Driven Development methodology), than to retro-fit tests to the existing project.
Manual tests are still required
Ideally, it’s best to automate all tests done on the project. However, despite developers’ best intentions, there are still cases for which automated test can’t be created. For example, testing users’ clicks and click results on certain pages is viable, but it is not possible to test if the page renders 100% correctly on a given device. This is why manual tests are still an important part of every project; we need to ensure the product works and looks superb not only on big desktop screen, but also on smaller tablets and phones.
Manual tests can be more important than you may think – some of our projects get more than 50% of their traffic from mobile devices. In our case, the last phase of the project is responsiveness testing and ironing out any found issues. By this time, most of the big problems should have already been handled during the development process. There is usually a list of all these small things that still need to be fixed, as well as issues caused by external factors, like a new browser version or mobile OS that can cause new problems.
Hosting is an investment, not an expense.
Everything is coming together nicely. Next on the list of things to handle is hosting: deciding who you will entrust with the responsibility of keeping your site available to the general public.
When thinking about hosting we generally consider certain areas to decide what makes most sense for the project at hand. These are:
- Technology needs. Not all our usual hosting providers are an option if the project requires Windows-based infrastructure.
- Redundancy needs. Redundancy means that every part of the project infrastructure has an identical copy running alongside it. This allows you to achieve two goals: handling more traffic, and ensuring service accessibility in case of failure of a single server. The latter is crucial for some sites where any outage can cause a big financial hit or PR crisis. It’s worth noting that redundant set-up means higher costs, since there are two or more times the servers needed.
- Customized set-up needs. Some sites are easy and don’t need anything other than a web server software, database, and code placed in a correct folder. All of these can even run on a single server. On the other side of the spectrum we have sites that require a lot of additional services to work properly. Here’s a few examples of common add-ons:
- Memcache/Redis: handles low-level caching, like database queries.
- Varnish: caches web page code, allows the infrastructure to handle many times the load it could handle otherwise.
- Solr/Elasticsearch: third-party services to index and search in website data. These usually replace regular database searches made when users run search features on the site (but not only).
- Background jobs worker: some operations take a very long time to finish. In such cases, it’s better not to lot lock website UI, but put such job into background processing and offer the user a progress indicator. Sometimes, such jobs are being processed directly on the web server, but it’s better practice to handle them on a dedicated server.
- Expected traffic. In short, the more traffic that is expected, the more crucial it is to go into redundant set-up. Basically, if it’s set up to be redundant it’s usually also set up to be scalable. That means you can add additional web servers when the need is there and then remove them when they are not needed anymore.
- Maintenance needs. Some hosting options require more maintenance than others. This is OK for some clients since they have a team to handle it or simply require a greater flexibility. Others would rather go with a hands-off solution that doesn’t offer a lot in terms of flexibility, but it’s fully managed and does not require much else than paying a monthly fee.
After considering the above we can present the client with our recommendation. Sometimes it’s a fully managed solution. A great example of such is WPEngine that we recommend for clients who decide to go with WordPress as a platform for their website. For other customers we build the infrastructure from scratch using providers such as DigitalOcean or Amazon AWS.
Price should not be at the top of your concerns when it comes to hosting. Hosting is one of the key factors responsible for how fast the website loads for your customers and that is directly connected to your success. Price should not be at the top of your concerns
We would love to hear about your experiences with testing and hosting. Leave a comment below or tweet us @nopio_studio