This Week I Learned - Week #9 2019

This Week I Learned -

* With Azure Lab Services, you can easily set up and provide on-demand access to preconfigured virtual machines (VMs) to teach a class, train professionals, run hackathons or hands-on labs, and more

Blue-green deployments have been practiced at places like Amazon for 10+ years.

* A/B testing is for measuring functionality in the app. Blue-green deployments are about releasing new software safely and rolling it back predictably. You can obviously combine them: use blue-green deployments to deploy new features in an app that can be used for A/B testing. Canary releases are a way of sending out a new version of your app into production that plays the role of a “canary” to get an idea of how it will perform (integrate with other apps, CPU, memory, disk usage, etc).

* Blue/Green strategy (also referred to as Red/Black) deployment strategy temporarily requires up to twice the number of servers as you need for production, but it avoids service interruption.

* Rolling deployment strategy require two versions of the app to coexist, this strategy often also requires a load balancer configuration that avoids bouncing users between versions.

* gcloud command-line tool deployment to App Engine flexible environment uses the Blue/Green strategy by default.

* Even for apps that don't follow the microservices pattern, GKE,  fully managed Kubernetes environment, lets you run many containers on shared infrastructure in a way that's both resource efficient and simple to maintain.  GKE requires all parts of the app to be packaged as Docker containers. Because GKE currently doesn't support Windows containers, these containers must be Linux based. This in turn requires the use of .NET Core and a Linux-based environment for building containers. Building containers in Linux can prove challenging if your CI system is Windows-based.

* GKE offers the most flexibility for apps that are stateless. By using stateful sets and persistent volumes, you can also run certain kinds of stateful apps on GKE.

Through traffic splitting feature, Google App Engine flexible environment also lets you run multiple versions of the app in parallel and to direct a certain share of the traffic to either version. This allows you to conduct canary deployments or A/B tests with minimal effort.

Commonly used tools for Push-based .NET app deployment model include:
- Microsoft Web Deploy, a free tool designed to remotely deploy web apps to IIS servers.
- Octopus Deploy, commercial software that allows deployments to be orchestrated in a flexible manner across fleets of machines.
- Microsoft Team Foundation Server/Azure Pipelines Agents, which directly integrate with the release management functionality of TFS/Azure Pipelines.
- PowerShell Desired State Configuration (DSC), a built-in feature of Windows Server 2012 R2 and later versions.
- Popular open source tools include Ansible, Chef, and Puppet. Although these tools primarily target Linux, they are also capable of deploying Windows targets.

* Stateful apps often don't lend themselves well to Pull-based deployment approach and might be better suited to a push-based approach

* Kestrel, the .NET Core web server, exhibits very good performance, but it does not offer the same feature set as IIS. You might therefore have to use Kestrel in conjunction with a web server like Nginx running .NET apps on Linux.

* Containers lend themselves particularly well to apps that run in a single process.  Containers lend themselves particularly well to apps that run in a single process.

* Windows Server Containers are more lightweight than Hyper-V containers, but Windows Server containers offer slightly weaker isolation.

* An app following a monolithic architectural pattern will have all app logic implemented in a single code base and runs in a single process or IIS app pool.

* Burnout stories -
- At 15, Jennifer Capriati won an Olympic gold beating Steffi Graf, one of the greatest women players of all time. She then burnt out at 17 & could not really recover
- Indian leg spinner Laxman Sivaramakrishnan. Siva routed the visiting English team in 1984-85, when he wasn’t even 19. He was adjudged Man of the Series and followed it up helping the team win the World Series in Australia in 1985. Two years later, he played his last international match.
What causes an achiever to disintegrate? There isn’t a definitive answer but factors like the diminishing interplay of opportunities and abilities, lack of balance, monotony, all contribute towards it in some degrees. Many often fall prey to an insatiable hunger to achieve even more at breakneck speed, ignoring the virtues of a measured growth...Build a support network...and “leave that damn crown in the garage” - Forbes

* Some might contend that a candidate for being termed the most corrupt (or corrupting) country in the world is Switzerland. For decades it has prospered by welcoming and hosting stolen or tax-dodged money on the strength of guaranteed banking secrecy. Swiss banks have also pocketed pre-War German Jewish wealth, and treat whistle-blowers as thieves who have stolen bank secrets — secrets that may be about stolen money. It took the Americans to read the riot act to the Swiss, and they are now cleaning up their act, at least partly - TN Ninan

Comments