I have ten years experience as a Software Architect working on Cloud products at Autodesk.
-
Cloud Architecture
Front End
InfiniSheet
InfiniSheet Architecture
I’ve been working on my spreadsheet project for many months now. I started with very high level thinking and paper explorations of possible data structures and algorithms. Then I went to the other end of the scale and built a React virtual scrolling package that you could use to build the frontend for a large spreadsheet.
-
Front End
Cloud Architecture
Supply Chain Provenance
Many of us first became aware of the risks of a supply-chain attack with the SolarWinds hack of 2020. Attackers compromised the build system belonging to SolarWinds, the creator of popular network monitoring tool Orion.
-
Cloud Architecture
The Seven Rules of Multi-Tenant Systems
I spent ten years of my career working on the architecture of multi-tenant systems. That’s enough time to make and witness a lot of mistakes. I’ve learnt a lot. Now it’s time to distill the benefits of that learning into what I like to call the Seven1 Rules of Multi-Tenant Systems.
-
It’s actually sixteen rules divided into seven categories but that doesn’t sound as snappy ↩
-
-
Cloud Architecture
Spreadsheets
Consistency for Event Sourced Systems
I’m a big fan of Event Sourced systems. I have a whole series of posts on implementing a cloud spreadsheet using event sourcing. However, so far, I’ve mostly waved my hands and told you that everything is wonderful.
-
Cloud Architecture
Autodesk
Unique Ids
They say that there are only two hard problems in Computer Science: cache invalidation and naming things. Cache invalidation is far too difficult, so let’s have a go at naming things. Specifically, how do you ensure that the name you use to identify some resource is unique?
-
Cloud Architecture
Databases
ACID! - Atomicity, Consistency, Isolation, Durability
There are lots of things you need to worry about when building a cloud application. Often the hardest problems only appear as you scale up, when multiple clients interact with the same data at the same time.
-
Cloud Architecture
Ensuring Eventual Consistency
Remember how we used to build web apps? A database, some app servers and a load balancer. What we’d disparagingly call a Monolith today.
-
Databases
Cloud Architecture
The Ubiquitous Database Grid View
You’re building a full stack application that enables teams of people to do … something. In order to manage the process of doing something, the teams collaborate by creating, filling in, finding, sorting and archiving forms. There will be some industry specific bits of workflow that let you convince yourself that you’re not building the same thing over and over again.
-
Spreadsheets
Cloud Architecture
Making Spreadsheet Snapshots work with Insert and Delete
When you’re implementing a cloud spreadsheet, it’s tempting to think of it as just another kind of database. Each row of the spreadsheet is equivalent to a row in a database. Each column in the spreadsheet is equivalent to a column in a database. Yes, spreadsheets don’t have schemas. Yes, spreadsheets can have lots of columns. However, there are plenty of examples of NoSQL databases that are schemaless and have wide column stores.
-
Cloud Architecture
Cambridge University
Navisworks
Autodesk
Choosing a Language Stack
First off, let’s get our terms straight. What do I mean by Language Stack? Is that the same as a Tech Stack, or is it more like a Software Stack? Then again, what’s the difference between a Tech Stack and a Software Stack?
-
Spreadsheets
Cloud Architecture
AWS
Data Structures for Spreadsheet Snapshots
I have a plan. After a round of brainstorming and benchmarking, I’ve decided to use Event Sourcing to store the sequence of operations applied to a spreadsheet. Every so often I’ll create snapshots of the current spreadsheet state. I can then load the spreadsheet at any point in time by loading a snapshot and applying changes from that point on in the event log.
-
Cloud Architecture
AWS
Amortized Cost and the Cloud
I first came across the concept of amortized cost when I learnt about the vector class in C++. At that point I was largely a self-taught programmer without much in the way of theoretical foundation. I was used to using linked lists and understood that the cost of adding a new element was constant, regardless of the size of the list. Vectors seemed like witchcraft to me.
-
Spreadsheets
Cloud Architecture
AWS
Brainstorming and Benchmarking
Last time I took you on a tour of the world’s most boring spreadsheet. I used a basic, if large, spreadsheet to identify some benchmarks that I can use to assess the viability of the crazy implementation ideas we’re going to brainstorm. The benchmarks are by no means exhaustive - think of them as the very low bar that any idea needs to get over to be worth considering further.
-
Spreadsheets
Cloud Architecture
Spreadsheets are the Future of Data Systems
The final chapter of Martin Kleppmann’s wonderful book Designing Data-Intensive Applications is called “The Future of Data Systems”. In this chapter he talks about data integration between different specialized systems using flows of derivative data, unbundling today’s complex databases into simpler specialized data storage components and composing them with dataflow processing systems. At one point, almost as a throw away remark, he mentions that spreadsheets already have most of the dataflow programming capabilities that such a system would need. Of course, a spreadsheet is just a spreadsheet. A real data system needs to be durable, scalable and fault tolerant. It needs to integrate with a wide variety of disparate technologies.
-
AWS
Cloud Architecture
Serverless or Not?
I want to build a Serverless SaaS product that can be deployed into a customer’s own AWS account. But what exactly does it mean to be Serverless? AWS (other cloud providers are available) has over 200 different services. How many of those are serverless?
-
Cloud Architecture
AWS
Modern SaaS Architecture
Last time we looked at the evolution of multi-tenant architectures. So, what does the architecture of a modern multi-tenant SaaS product look like? Well, for a start, its a microservice architecture deployed on one of the big three cloud providers (most commonly AWS).
-
Cloud Architecture
The Evolution of Multi-Tenant Architecture
I previously described the general areas for my initial projects. Today I want to dive a little deeper into the multi-tenant SaaS project. This is the project I’m most excited about and the one that will need the most explanation.