Hey, hey! Ivan's here!
As usual, last weekend of the month means it's time to share what I've been working on with my most loyal followers ❤️
Kind reminder, you subscribed to the iximiuz.com newsletter somewhere over the past six months. If you don't want to receive emails from me (very sad), just hit unsubscribe at the bottom of this email. Otherwise, welcome!
I started October from the comprehensive analysis of the existing learn-by-doing platforms offering training in the cloud-native realm - all things Linux, Containers, and Kubernetes. I'm a true believer in hands-on learning and always strive to augment my articles with working code/YAML examples. However, sometimes bootstrapping an environment to test these snippets could be a harder task than grasping the actual subject matter. So, having a platform where you could try out things right in your browser would be amazing.
I crowd-sources a list of around 15 sites offering such playgrounds and then spent two weeks trying out materials on almost all of them. Here is a lengthy blog post with the results. But to cut a long story short, I was quite disappointed with the findings. The amount of available materials is overwhelming, but the content I saw was rarely engaging - most of the tutorials were possible to complete by just blindly copying/pasting the commands from the instructions into the in-browser terminal. But if the course doesn't challenge you, it's unlikely you'll learn efficiently!
In addition to course-like offerings, there were a few very high-quality free-play sandboxes, including a totally free full-blown OpenShift Kubernetes cluster with a fancy UI dashboard. I really enjoyed these gems. However, while they should be pretty helpful for more seasoned folks, beginners will likely find it infeasible to learn such a complex matter as container orchestration without a guided approach.
On the other hand, at pretty much the same time, I accidentally stumbled upon Josh Comeau's blog. Josh teaches CSS, and it's rather off-topic for me. But I was amazed by the quality of his content! Just check out this example - it's not just plain writing augmented with code snippets and drawings. The site works as a blog and as an interactive platform simultaneously. However, Josh doesn't stop with this blog. Recently he published an online-course css-for-js, that builds upon the idea of his blog and extends it into a full-fledged multi-hour course on CSS. And what I liked the most - you get some assignments there before the material is actually explained, so it constantly challenges you to think about the solution instead of copying/pasting the instructions. And on the other hand, when/if you start feeling lost, you can easily get some guidance.
So, an ideal online course does exist! The pity is it teaches your CSS, not Docker...
Disappointed by the findings from my learn-by-doing platforms research and motivated by this CSS stuff, I decided to be Josh :) I've been thinking of turning my blog into something more interactive for quite some time already. There are a few articles that could definitely benefit from being accompanied by an interactive playground, and Service proxy, pod, sidecar, oh my could be a good candidate to start from. I wrote it almost a year ago with an idea to extend it into a full series on Traffic Management Patterns for microservices (even prepared some scripts to build envoy playgrounds). However, never followed up since then...
So, I decided to try. And here is what I managed to build after spending a couple of weekends with Vue.js and Tailwind CSS (remember, I'm no frontend developer).
The idea is super-simple - to explain how a service could improve the observed success rate of its upstream dependency by adding a client-side sidecar proxy doing transparent retries (and how everything could blow up then because of a retry storm):
The end result should be some sort of page where plain text explanation will be intermixed with drawings and with inline interactive playgrounds. A reader could click a button, and that would launch a bunch of containers with guinea-pig services on the playground server. After analyzing the observed behavior, a student could tweak some parameters of the sidecar proxy applying their former experience or the material they just learned and re-play the scenario. And on the way, it could teach the student how to configure Envoy proxy (which I find quite intimidating even though I've been doing it for a living for almost a year now):
The playground is still a work in progress, and it'll take me a while to finalize and polish. But I'm super happy with what can be achieved with the modern frontend tools! I remember when I tried to build something similar in 2011 - it was a nightmare for a server-side guy like me. I tried again in 2017, and it almost worked out, thanks to react. But still, I was hitting quite some obscure problems with the setup. And finally, in 2021, I found a frontend stack I can use - Vue.js and Tailwind CSS is one love.
I'm looking forward to sharing the link on the working playground with you, folks!
Since this issue is already taking longer than usual, I'll put the rest as a list. Here are other things I published this month:
- [blog post] Reverse Proxy, HTTP Keep-Alive Timeout, and sporadic HTTP 502s
- [blog post] Containers vs. Pods - Taking a Deeper Look
- [twitter thread] Visual Studio Code Remote Development with Vagrant
- [twitter thread] Computer Networking in Layman's Terms
If you find the work I do interesting, I'd be more than happy to hear from you! All forms of feedback are always appreciated!
Until next month!
P.S. Sharing is caring! If you liked the issue, forward it to a friend, spread the word!