Monday morning thoughts: containers and silence
In this post I think about the silence of workstations and what that represents to me, and the new ability to look at maintaining software and services in a completely different way – via containers.
Another Monday morning is upon us, and it’s a public holiday here in England. But I wanted to publish a new set of thoughts, related to what I’ve written about previously. Not least because I know that there’s at least one person going to read them (thanks Julie).
In a previous post (Monday morning thoughts: upload/download in a cloud native world) I described the sort of devices upon which I started my mainframe-based career in computing. A common factor was that those devices I used to interact with were dumb. But there’s another common factor, that extends further back in time – to my first personal computer, an Acorn Atom.
Silence is golden
This common factor was the lack of any discernible noise from the devices themselves. OK, the paper printer terminal made noise when it printed, but that’s understandable. Silence resounded loudly at my desk in my bedroom at home, and in the office at work. There weren’t enough electronics under duress in the dumb terminals to warrant any active cooling with fans, and while the 8-bit 6502 processor inside the Atom might have got a little warm sometimes, again, it was silent as there were no fans.
And so I was reminded again of these times as I spun up a new virtual machine (VM) running a Container-Optimised OS on the Google Cloud Platform (GCP). My work-based workstation runs macOS, but really all I run is Chrome and a number of terminal emulation windows. So there’s really no real stress on the MacBook at all, and no reason for a fan to kick in.
Yes I do run Outlook and its brethren, but only under duress and shut them down again as soon as I can. The real work (i.e. not email) happens elsewhere – in this case while connected, via Secure Shell (SSH) to that new VM. Just characters on an emulated terminal screen, and the only idea I could have of how much stress that machine is under is by actively looking at the output of a command such as top.
For the most part, then, the only sound I can hear while working is the clicking of the keyboard. Almost like the idea that the only sound you can hear while driving a Rolls-Royce is the electric clock.
Container shaped spectacles
When I’m connected to my remote virtual machines, what am I doing? Well, let me answer that by talking about a project upon which I’ve embarked, to kill two birds with one stone – move my core presence on the web (my homepage, my main personal blog, and various processes that run in the background) to a container-based setup, and learn more about containers.
My presence on the web is where it has been, at least virtually, for as long as I can remember – at pipetree.com. My old friend and colleague Former Member and I pooled our resources way back when and built & brought a server of our own round nearly 20 years ago to a colocation facility in Fulham, London.
It ran GNU Linux (hence the sticker on the machine, to help identify it amongst the hundreds of others in the facility). I guess the concept of colocation is now outmoded, but I like to think of it in the “as-a-service” stack like this:
Software-as-a-Service | Platform-as-a-Service | Backend-as-a-Service | Infrastructure-as-a-Service | Colocation-as-a-Service <--
Since then we’ve moved out of the facility, I took over pipetree.com as a domain (Piers now has his own presence) and the server is now virtual, running at Linode. But the software has remained largely the same. A proper OS (i.e. Linux), various distributions, and various re-installs to try to maintain a clean environment.
And there’s the thing. It’s been a given that the install processes for software over the years, and my amateur hand in maintaining that installed software, makes for an untidy setup. Especially when it comes to experimenting with new services, with their myriad requirements and dependencies, not to mention their install tools (which have their own requirements and dependencies – it is indeed turtles all the way down).
So the heap of software installed on the pipetree.com VM is not clean and tidy; rather, it’s a bit of a mess. It’s effectively a production server, but I don’t really run it as if it were, certainly not in terms of knowing what’s going on. I’ve installed stuff, and then decided that what I’d installed was not what I’d wanted. I’d set something up but then realised I could have set it up differently, and have used various tools (sometimes through simple ignorance, sometimes through necessity) that have left a sticky, glistening snail trail of bits that make me slightly uncomfortable.
With the advent of the concept of containers, and particularly with Docker, that can all change. Instead of interleaving various software services on my VM (MySQL databases, a NodeJS-based blogging system, the Apache HTTP daemon, a Planet system, and so on), I can now look at these installations and services through a new, modern pair of spectacles that are not rose-tinted, but container-shaped.
I can run each service in its own container, and have an immediate and effective isolation, not only of runtime, but also of dependency. What’s more, I can run multiple instances of these services, and, from a web presence perspective, expose them through yet another service that’s nginx-based, in a reverse-proxy formation. It makes total sense, and allows me to feel calmer about what I’m installing on my host, because the install itself is not like a real install – it’s merely the instantiation of an image where the install process has already been completed, with the complexities of dependencies already resolved and everything set up as it should be. All I’m doing is bringing to life a container – an image – where the inner structure and workings are isolated and not leaking across to other parts of the host.
What I’m doing with Docker and these containers is installing small, single-purpose VMs on my general purpose VM.
But the best thing? It’s the cheap and fast nature of everything that’s going on here. While setting up, I can instantiate a Docker container from an image that has to be fetched* from the hub in a matter of seconds. On realising that I have set the container up incorrectly, or messed up the contents that would normally take a significant effort to fix, I can simply stop and destroy that container and do it again, in the safe and happy knowledge that I’m not leaving a snail trail behind me.
*I think I might use the term “fetch” instead of “download”, as suggesting a sort of horizontal action, rather than a vertical one, it makes much more sense in the cloud native world.
The ephemeral aspect of cloud native artifacts, such as containers, means that it is natural to create and destroy resources with almost reckless abandon. Well, perhaps not quite reckless. But it lets us see software and services, that we’re increasingly maintaining and running in the cloud, through our silent character terminals (or web-based UIs, if you’re that way inclined) as a different unit of measure, a different way to slice and manage what we’re building and deploying. We can stop caring as much about the load on our workstation, as there should be very little. Likewise, we can stop worrying as much about the installation process and the ramifications of getting the services on our VM where we want them to be. All we do is type characters on a modern green screen, and let the invisible, distant machines do the heavy lifting.
And that, to me, is a good thing. What do you think?
Read more posts in this series here: Monday morning thoughts.
Super, this is what i was waiting for to start my Monday:) My two cents
Sounds from the Past
I actually remember my Pentium computer in old days when i used to install Visual Studio etc to practice Visual Basic and all, it was too much of a pain. Once installed after struggling & resolving all the errors etc., when it use to run, my computer used to hang like anything. Those days were gone with coming of more processing power, RAM etc.
Present Situation
Coming to Present i have a 8 GB RAM laptop and i thought it is good enough for everything. I was proven wrong again when i wanted to install SAP HANA Express edition it needs at least 16-32 gigs of RAM. I can imagine even if i have that kind of hardware still my Laptop will hang, get heated up and might hear sound of fan also sometimes. That is where practically the power of the cloud i realized. All I need was to create free account on Google Cloud Platform and deploy SAP HANA Express edition. All it took was minutes and i was ready to go.
With the coming of Cloud era i believe all we need is a browser. I actually liked it a lot, because i can now use my Ipad, laptop even my mobile to do crazy things without worrying about the infra. Earlier if it was a local install i have to carry that device also with me, now its no more.
Secondly it has become so easy to make these cloud services communicate with them or with other clouds. The overall experience is awesome i will say.
It is good and super cool:)
Please keep your Monday thoughts coming they set the context for the whole week
Thanks
Nabheet
Thanks Nabheet, great thoughts. There's a growing adoption of cloud resources, particularly for this type of purpose (running big services remotely rather than on an expensive workstation), partly because of the increasing awareness of this type of computing facility, but also because of the low-friction and low-cost (or free) nature.
As you mention, next step is to think about cloud-to-cloud communication and cooperation. Cheers!
So much changes. I remember when I had a REAL floppy disk. Now disks aren't used. Yes, of course my first language was basic. Shopping on-line - no never did that.
I think while reading this blog and the comment above, I start to think of my books. Almost all my books live on Amazon. I have probably around 30 downloaded. Most of my pictures are loaded both on my laptop and "in the cloud". And really, "in the cloud" makes me laugh. For a long, long time we have been able to find companies to host our data. I could call that "in the cloud". Loosely of course.
It is amazing hour much we can do with less. It's nice to be able to go on vacation and take your laptop, cell phone.... Nope, not doing that. Sometimes we are too connected.
Cloud-to-cloud. Oh boy. My mind is now blown.
Michelle
Hey Michelle, thanks for your thoughts. Real floppy disks, yes, I remember those too. And I was looking at the picture of the pipetree.com host (above) and noticed the 3.5″ floppy drive in there, which we actually used a few times. And that was “modern”. I can’t remember the last time I saw a floppy disk now, let alone used one!
I’d love to know more about what you mean with “amazing how much we can do with less”. I think I know what you mean – but can you expand? Thanks!
Less - HA! Less everything.
I used to have a desk top with very little memory. Now I've scaled down to a laptop with more memory, more well everything. So while I need a better machine - it is still less of a big one that I can't take with me.
With a lot of tools, basic games and more. I don't have to download a lot to my physical laptop. I can use less memory, less disk space, just less.
With HANA - I can do more with less programming. (This is open for debate.) Now I can focus on the user interface.
Speaking of code - better tools to allow for better programs. Less focus on the database. I don't need to know everything behind the scenes to code. Less lines of code to do what I need to. And to your point above, less programming to pull in in data from other sites.
Less of an investment - memory is fairly cheap.
Less customizing due to different browsers. Yes there still is some customizing, but it is less.
Less going into the office. Skype, e-mail, and general virtual meetings allow for remote work.
OK - I've written too much for a comment. But you get the picture.
Gosh that certainly is a comprehensive answer, thanks Michelle!
I think you've hit on a really important and interesting topic which crosses many layers. In the "workstation" sense, I too can do more with less (for example I spent over 2 months using Chrome OS and nothing else, and even now the only apps I have open regularly are Chrome, Terminal and the Slack app (sometimes not even that, Slack's Web UI is pretty great too). This also means that I don't have to have a unusually beefed up machine any more.
But also on the software layer side - yes, better tooling, better abstractions, and just wait until Backend-as-a-Service becomes a more widely understood and utilised concept (well, BaaS has existed for quite a while in forms such as Parse).
And my favourite might be "less going into the office". I'm so much more productive from my home office, with fewer distractions and less noise.
Gosh, you're right - this really is a huge topic! Thanks!
Very enjoyable as per, DJ. I think Michelle Crapo raised an important caveat: being “too connected.” My old manager , Wolfgang Weiss (can’t link to him, hmmm) had a “no email on holiday / sick leave” rule : appoint and trust competent substitutes, then LEAVE IT ALONE! The company won’t collapse. (Obviously, it’s different for the self-employed). I hope, long-term, more managers realise the importance of stuff like this.
But I love the trail of slime analogy - will be using that!
And thanks for the mention- made my day J.
Cheers Julie! Yes, definitely a good point about being able to disconnect. The brain is a complex machine, the workings of which I have little idea about, but I do know it needs space and time to process stuff in the background, which is hindered if you're constantly (even if loosely) connected to foreground things.
BTW, you may find this post interesting - it's sort of related, especially in this context of emails: Things I do to make my work life better
Hi DJ,
Yes, I remember that blog at the time.
This time, I followed the links - very true about "makers vs managers".
I always love it when I I get a day without meetings, and can plan my own time without disruption. Maybe I'm just not cut out to be a manager ;-).