I thought my first post, having been the inspiration for me to start this blog, should be a wrap up of NDC London. This is the second time I have now attended NDC and having moved to Westminster, the setting itself was a lot more majestic than last years industrial backdrop of East London. If you’ve not been before, picture 3 days of talks by some of the coding worlds rock stars interspersed with coffee, beer and the occasional Brainfuck. For me, the broad themes this year were Serverless, Microservices, Extreme Testing and Startup Bootstrapping. I won’t insult your intelligence by explaining what each of these mean, but instead dive into my key takeaways and recommended talks.
Still a relatively new area, this was the one that excited me the most. Although everyone will have heard of technologies such as AWS Lambda and Azure Functions, I was captivated by Mike Roberts talk on Serverless architectures and how we need to re-imagine our current thinking. So why as a business owner or as a developer would I want to do this? Well the headline is cost – both of the hosting itself (utilising a true pay-per-use model) and also the development time to get to market. Rather than investing in full stack solutions and all of the scaffolding these require, you can spin up domain logic apps in a matter of hours which cost pennies to run and deliver value instantly. A secondary and cost-linked benefit is the ease of scaling, on-demand, due to the distributed nature of the architecture. That’s not to say there are no drawbacks, with the biggest one currently being tooling around the DevOps pipeline and monitoring of these systems. I’m planning to dive further into this topic so watch this space.
This is currently one of the most used buzzwords in town, but speaking to people at NDC, also one of the most misunderstood. It appears the term is being used to cover all manner of scenarios from simple web sites built upon a couple of projects, to sprawling social networks built entirely on FaaS. However, a highlight for me was Matt Heaths talk about how they are utilised at Monzo. He went into the guts of their system, built using GO and Kubernetes, and why they chose Microservices. They key here is that as a startup bank, they needed a loosely coupled system which could iterate fast whilst delivering lightning quick performance and scalability. And that’s the crux of this architecture and a key reason to adopt it.
Of course in a manner similar to Serverless, all of these benefits come with complexity of running and coordinating such systems, let alone the investment in learning the technologies involved. An interesting take on how these are put together from a user’s perspective came from Jimmy Bogards talk about Composite UI’s. He delved into various ways to bring services together in a seamless experience, first starting with browser-side composition and then moving onto server-side. The main takeaway here is that this is a difficult problem which has yet to be solved in a satisfactory manner.
A new trend I noticed this year was around what I am dubbing “Extreme Testing”. Two talks in particular stood out – Gel Goldsby on Testing in Production and Russ Miles on Chaos Engineering. The main premise behind testing in production was that in order to speed up delivery of new features and close the feedback loop, rather than waiting for test suites to complete you simply ship code directly into production. The acceptance here is that some bugs will make it through to production but the frequency of deployment means they should be fixed quicker. Personally, I am not sold on this idea as the reputational harm of shipping buggy software outweighs the marginal gains in delivery time.
Chaos Engineering on the other hand was something I believe can deliver great value. The concept of this isn’t new, and companies like Netflix have famously been letting their chaos monkeys out for years now. As a quick primer, you will randomly take down parts of your live system in order to test resilience. If it falls over, you need to focus on making that component more resilient. The engineering part takes this a step further by looking at the platform and people/processes along with the infrastructure. The important point to remember here is that if you know something will fail, fix it rather than testing a known outcome. Over time, these chaos tests will form part of your test automation pyramid.
The final area of talks I noticed focus on was around startup bootstrapping, personal brand and going solo. Troy Hunt did an excellent talk about how he transitioned from full time employment to security rock star, and this echoed talks by Todd Gardener and Rob Conery. The common message for starting out on your own was to build a personal brand and network. This can be through blogging (ahem), attending meetups, presenting on topics you are passionate about and just chatting to more people. They all talk about how failure is scary, but you must embrace this to realise change. There are countless books about how to build a startup and run a business, and I personally believe that you should be voracious in reading these and learning from those who have been through this before. There has never been a better time to go solo or build a startup, you simply need to take the first step.