We& #39;re coming to the end of the first day of @OakNational being live. So far we& #39;ve had around 300,000 visitors to the new website checking out the lessons. Going from nothing to a site serving that many people, in a matter of days was a challenge. Here are a few lessons learnt!
Pragmatism gets things shipped on time.
@oaknational is a Wordpress site, which I& #39;ve not used for years. Nowadays I use React, Node, Serverless and all those "modern tools" everyone loves. If you& #39;re pragmatic, a new, small team can move quickly using older more established tech.
@oaknational is a Wordpress site, which I& #39;ve not used for years. Nowadays I use React, Node, Serverless and all those "modern tools" everyone loves. If you& #39;re pragmatic, a new, small team can move quickly using older more established tech.
Cloudflare all the things.
I& #39;ve used @cloudflare on many projects, but for this site, we had some robust government security requirements. Firewall rules, blocking routes, load balancing, blocking requests, SSL, Workers that set security headers, it really came into its own.
https://abs.twimg.com/emoji/v2/... draggable="false" alt="đ" title="Clapping hands sign" aria-label="Emoji: Clapping hands sign">
I& #39;ve used @cloudflare on many projects, but for this site, we had some robust government security requirements. Firewall rules, blocking routes, load balancing, blocking requests, SSL, Workers that set security headers, it really came into its own.
Planning your caching pays off.
We& #39;re mainly offering static content, so we set up a caching plan mainly around page-level response caching. Cloudflare picks up the responses and caches at the edge. The result? Blisteringly fast page loads and virtually no server errors
We& #39;re mainly offering static content, so we set up a caching plan mainly around page-level response caching. Cloudflare picks up the responses and caches at the edge. The result? Blisteringly fast page loads and virtually no server errors
Plan to fall back to a static site.
What happens if someone does an update on the website, it gets hacked, or fails for some reason? You need to fall back to somehow showing pages that work. So I made a scraper that saves the website to flat files, and then serves it on Netlify
https://abs.twimg.com/emoji/v2/... draggable="false" alt="âĄïž" title="High voltage sign" aria-label="Emoji: High voltage sign">
What happens if someone does an update on the website, it gets hacked, or fails for some reason? You need to fall back to somehow showing pages that work. So I made a scraper that saves the website to flat files, and then serves it on Netlify
Use a loadbalancer to flip between live and static.
Cloudflare lets you set up a loadbalancer that shifts traffic between multiple servers. So we set one server as the live site, one as the Netlify static snapshot, so at any point we could flip between the two if necessary.
Cloudflare lets you set up a loadbalancer that shifts traffic between multiple servers. So we set one server as the live site, one as the Netlify static snapshot, so at any point we could flip between the two if necessary.
Lock everything down.
We stayed up late yesterday implementing a security checklist. We used Cloudflare to block all POST, PUT etc. requests, all access to wp-admin using Cloudflare Access, rewrite rules or firewall rules. Basically lock everything down so you can sleep well!
We stayed up late yesterday implementing a security checklist. We used Cloudflare to block all POST, PUT etc. requests, all access to wp-admin using Cloudflare Access, rewrite rules or firewall rules. Basically lock everything down so you can sleep well!
Freeze your content and don& #39;t deploy.
After a certain point we "froze" the content and asked anyone contributing lessons to pause. The team didn& #39;t deploy all day, and just let the site do its thing. Annoying that there were probably a few rough edges, but it stayed up!
After a certain point we "froze" the content and asked anyone contributing lessons to pause. The team didn& #39;t deploy all day, and just let the site do its thing. Annoying that there were probably a few rough edges, but it stayed up!
Write a launch checklist.
We spent time working out all the things that would need to be confirmed for us to "sign off" on the site. Eg. 2FA for all user accounts, security settings, removing unused plugins and so on. Go-live was confirming the list and flipping the load balancer
We spent time working out all the things that would need to be confirmed for us to "sign off" on the site. Eg. 2FA for all user accounts, security settings, removing unused plugins and so on. Go-live was confirming the list and flipping the load balancer
Set up monitoring ahead of time.
You& #39;re always going to finish late on the day that you ship something like this, so make sure ahead of time that multiple people on the team get a notification if they need to fix the site in some way.
You& #39;re always going to finish late on the day that you ship something like this, so make sure ahead of time that multiple people on the team get a notification if they need to fix the site in some way.
Document your architecture.
Let& #39;s say one of the team gets ill, or drops out, has to focus on their day job and hasn& #39;t got spare time suddenly. You need docs. So I spent the weekend writing everything up the team were doing. We now have docs for anyone who wants to help/volunteer
Let& #39;s say one of the team gets ill, or drops out, has to focus on their day job and hasn& #39;t got spare time suddenly. You need docs. So I spent the weekend writing everything up the team were doing. We now have docs for anyone who wants to help/volunteer
Look after yourself.
Shipping a website this quickly is stressful. So I was really pleased to see on Slack that all the folks I& #39;d been collaborating with over the weekend had taken some time out today to recover. There& #39;s no need to be a hero!
https://abs.twimg.com/emoji/v2/... draggable="false" alt="âșïž" title="Smiling face" aria-label="Emoji: Smiling face">
Shipping a website this quickly is stressful. So I was really pleased to see on Slack that all the folks I& #39;d been collaborating with over the weekend had taken some time out today to recover. There& #39;s no need to be a hero!
Well done everyone who& #39;s helped make this initiative a reality. Two weeks from an idea to a fully functioning website where something like half a million lesson views happened today is pretty awesome!
https://abs.twimg.com/emoji/v2/... draggable="false" alt="đȘ" title="Flexed biceps" aria-label="Emoji: Flexed biceps">