“We don’t stop playing because we grow old; we grow old because we stop playing.” — George Bernard Shaw
At the weekend, I went camping.
Was it cold? Yes
Was it wet? Yes, very
Was it windy? Yeah (and not just because of my 7 year old sleeping “buddy”)
Did it involve waking up early? Oh yes
Did it involve “wild wees”? Obvs
Did I fall off a deck in the pitch black and hurt my leg causing me to have a hobble ever since? Yep
Was it aceballs on toast with a cherry on top? It most certainly was!
Getting out was sooooo good, none of us cared about the weather or the fact that we were 20 minutes from home (a tactical play). A fire, a few beers (definitely not linked to the deck falling incident), a good group of people and some fresh air were all we needed to recharge the soul and lift everyone’s spirits.
As an added bonus, I got to see something, that surprised, amazed and awed me…It’s really not that often that that happens (at least not that I’d admit).
We were sitting round the fire and one of the Dads remarked how clear the sky was. We all looked up and everyone went quiet for a bit…
Then someone said “Is that an alien invasion?”
Normally, that would obviously be laughed off and said dad would probably be asked to remove himself to a more secured location for while…but this time, no one answered…and no one answered because no one was entirely sure it wasn’t…
In the sky were a line of “stars”…not an astrology “use your imagination a bit” kind of line, but a very definite line. It stretched from one horizon to the other…
and it was moving…
We were all a bit dumbfounded until “science dad” (there’s always one) started googling on his phone and revealed that it was actually Elon Musk’s Starlink satellites being deployed. 60 of them to be exact. They release in a bunch, slowly spread out and then move into their respective orbits.
It looked a bit like this (obviously we were all too confuddled to film it ourselves)
How cool is that?
Well, I liked it anyway 🙂
…and what’s that got to do with anything?
Glad you asked!
<insert awkward segue number 1>
It reminded me of a game. A game I’ve been playing during my 2 hours per week “me time” during lockdown (Saturday night 11pm — 1am). It’s about building (lots and lots of) factories that eventually construct a Dyson Sphere… I haven’t got that far yet…and if I’m honest with myself, probably never will.
However, I’ve found it quite relaxing to stick some ol’skool music on the headphones, grab a cold one (or maybe even two) and click the mouse 2000 billlion times building up some pointless pixels that do some pointless activity… constructive stuff!
But let’s rewind a bit…what the roddenberrys is a Dyson Sphere?
In 1964 a clever chap called Nikolai Kardashev (a Russian astrophysicist) designed a scale which he humbly called the Kardashev scale. It described a number of civilisation types (and has subsequently been extended). They are:
- Type 0 — A civilisation that harnesses the energy of its home planet, but not to its full potential just yet.
- Type I — A civilisation that is capable of harnessing the total energy of its home planet.
- Type II — An interstellar civilisation, capable of harnessing the total energy output of a star.
- Type III — A galactic civilisation, capable of inhabiting and harnessing the energy of an entire galaxy.
- Type IV — A universal civilisation, capable of harnessing the energy of the whole universe.
- Type V — A multiverse culture, capable of harnessing the energy of multiple universes.
- Type VI — A civilisation capable of creating universes and multiverses, and destroying them just as easily
To put things into perspective, humanity is currently a type 0 civilisation…we’re doing well!
A Dyson Sphere is usually associated with a Type II civilisation. A hypothetical megastructure (resulting from another humble man called Freeman Dyson) that completely envelopes a star and harnesses all of its energy output.
..and what’s that got to do with technology?
Aha — glad you asked again, it’s almost like you’re a plant!
<insert awkward segue number 2>
Well, it’s all about architecture init…
Is it? Is it really? I hear you think
Yep…bear with me…
At the start of the game, you’ve got limited resources, limited knowledge and a whole load of things to get done. You do stuff in the quickest, easiest, least resource intensive way you can — because you have to. Everything is connected to everything else, to create whatever it is that you need at that moment in time.
The result is messy…but critically…it works!
It’s often retrospectively referred to as “spaghetti” or “monolithic” but actually, at the time, it got the job done…maybe it still does. It’s solid, dependable and performant. However, it doesn’t scale well with new requirements and as we continue to make changes, it gets increasingly brittle — change a little bit over here and something major breaks over there.
In the game, resources get mined (think data), the buildings build or process resources (think applications) and the conveyor belts move resources around (think integrations). It starts to look a bit like this
I’m sure I’ve seen plenty of “as is” architecture diagrams that look a bit like that (but not as colourful)
Over time, that gets hard to maintain and if you continue with it, it becomes impossible to change without enormous cost — in terms of Saturday night “me time”.
It’s far too hard (and soul destroying) to knock it all down and start again so what do you do?
In game parlance, you start building “malls”. These provide an accessible front end to your spaghetti — you can get the more complicated resources without having to understand what the hell’s going on behind it. They hide the complexity and provided everything behind them is left unchanged will continue to provide a bunch of resources (think data and functionality) without you having to understand how. These can then feed more advanced factories creating higher order stuff
In IT, this is very similar to an API, a happy, smiley way of getting data out of legacy platforms without having to delve into the techno-weeds
In the game, it looks a bit like this (the mall, or “API”, is at the bottom):
Now we can get to work on the spaghetti. Piece by piece, little by little, we start to chip away at the sections behind the mall. We identify the necessary bits for a given resource, isolate them from the rest and then separate and tidy up. These individual factories that create a single resource (and do it really well) can then be migrated off-planet to a dedicated zone for that activity.
In IT, this is basically describing a microservice. The API remains the same, but the gubbings providing the resource (data) is now entirely decoupled and focused on doing that one thing. This method of migration is know as the Strangler Fig Pattern…I’m a fan
In the game it starts to look a bit like this (tidy huh?):
OK, so we’ve got some malls and they’re backed by lots of dedicated, decoupled factories…what’s next?
The next piece of puzzle is bringing it all together. What do we do with all those resources we’re generating? We want to build a star encompassing megastructure!
The answer is simple, we need a resource backbone. Something that retrieves all the necessary resources and brings it together in a way that we can access easily. It needs to stream those resources continuously and maybe even process them further as it does so.
In IT terms, this is a data “central nervous system”, streams of continuous information that we can query and process in realtime to understand what is happening right now. Where’s my order? Where’s my inventory? What’s Barry from accounts up to?
In the game, it looks like this — an equator spanning Resource Exchange Platform:
Finally…but certainly not “leastily” is what to build all this great stuff on. At the start of the game, there are pesky mountains, oceans and other big chunks of nature sitting around. These get in your way, you can’t do anything about them and you build around them. As you move on, you develop techniques for removing them and replacing with a flat, solid foundation.
If you put aside for a moment the awful environmental considerations of turning a planet into a monotonous car park, what you’re really doing is creating a solid foundation on which to build quickly and effectively.
In IT terms, this is the enabling platform…solid, reliable, reusable. You can happily deploy your shiznit on this without having to worry about “building on sand”
In the game, it looks like something that is flat…probably not worth an image, use your imagination!
Now we’ve got our API, our microservices, our data backbone and our foundation, we can get back to building our Dyson Sphere!
What would your metaphorical Dyson Sphere be?