Ever had noisy roommates? So noisy you can't focus or do anything? Imagine having that in your application infrastructure.
There have been various licensing models in the past (and present). Ranging from having a single life-time license to a license not only on the OS for the virtual machine but also per core that the hypervisor required or could potentially give access to and then the hardware itself, maintenance, patches on virtual layer as well as hardware etc. etc.
And then you add to that the various application layers that also have varied licensing models depending on virtualization applied to them (Oracle. Yes you. I'm looking at you.)
Once you have all of that settled and nailed down, you want to maximize your investments and cram as much as possible into each slot you have defined. What do you get? Noisy roommates. Or noisy neighbours. An entirely unrelated service, application or even part of the infrastructure due to wear and tear can break down. And like a domino brick it brings down a whole slew of applications. Then let's make that datacenter redundant, a colo! You apply this on every part of your infrastructure, two (atleast) of everything... then you get back to the application layer again.
So then you start to go "a-ha" and start separating into different environments.. but that only helps if you have bad code in dev/test that brings down qa/prod. So sure. Let's split it all up in 4, but you still have noisy roommates. All equally important and any one of them could stab you in the back and steal all your cookies (memory) and leave all the dishes for you to handle.
So then you start to look at self-healing infrastructure or infrastructure as a service. People have been working with HAproxy, loadbalancers, etc. all kinds of solutions to solve these resiliency issues on-premise for ages. And depending on what kind of level of isolation you have achieved you may be very successful at it with those. However, something that abstracts all of that away for you is IaaS solutions like azure, amazon or google cloud services.
Now I work with azure mostly at work, so I am bias towards that, but I am also looking at implementing docker and kubernetes for our application platform which can be deployed anywhere. Now Azure has a lot of services. Ranging from serverless to Software-, Infrastructure-, and Platform -as-a-service(s).
So why this post? Today we had a highly unstable test-environment. This doesn't happen on our dev environment, and it doesn't happen in our qa environment for one exception which I presume is due to this ↓
This is a part of the software architecture/infrastructure that hasn't been planned or deployed in as many environments as we have, due to, I presume, licensing. Things have been consolidated and deployed only into two or at most three environments where it then becomes apparent when these bottlenecks create noise or eats all your cookies.
So.... I am looking at wrapping our old .NET 4.5.2 Framework MVC/WebApi application in a docker container and then just deploying it wherever I feel like. Or just go the route that we used to have and run it in an app service in azure. That one atleast works. I want to make our entire infrastructure with docker compose and docker images so it can be isolated. And with isolation, automated system integrations tests can be run by the CI/CD pipeline in the future.
Now if only docker desktop and mcafee could play nice so that it wouldn't take an hour just to copy files from local harddrive into the image.
I'll see if I can make a write up regarding docker when I am done with that. Based on my google-fu (which is over 9000), there isn't too many examples regarding 4.5.2 in a docker image that is upto date and actually works out of the box. None in fact. Each I tried, required a tweak in some way or another.