Backend for Frontend design pattern – BFF for short while it’s definitely not “Best Friends Forever” 🙂 – seems to get some hype lately. It’s nowhere a new thing: one of the first mentions were by SoundCloud guys back in 2015. Basically it’s a specialized case of a more generic API Gateway pattern. Let’s figure…
503 Backend Fetch Failed – WTF?
At high level “503 backend fetch failed” boils down to an HTTP protocol status code from the 5xx group. 5xx group consists of so called “server errors” which means that client’s request overall seem to be valid but server failed to fulfill it. Some common reasons for such behavior include: Some bug in the application…
Why is there a big pay discrepancy between different software engineers?
From a client’s perspective it may be confusing to pick up an independent developer. That’s because prices for what seems to be similar work may be drastically different. For instance, it’s not uncommon for web development work to be priced in $20-200/hr range. How so? Why is there a big pay discrepancy between different software…
When to use microservices?
This is a follow up to an earlier article on microservice architecture implementation principles. It was promised back then to get back to the question of “when to use microservices”. A bit of history The overall architecture pattern of microservices was successfully implemented in 2010-ish. That was an endeavor on the part of a few…
Crossover Hiring Process – How it was
In October last year I landed a job at Trilogy Enterprises which hires solely via Crossover. I was thinking about writing an article on my experiences regarding Crossover hiring process ever since, so finally here we go. A bit of history Actually it was my third try to land a job via Crossover – XO…
Memory Layers Latency Difference
There’s such term as memory hierarchy in computer architecture. In simplistic terms it’s about structuring different memory/storage types based on response time. In software design & architecture memory hierarchy directly affects performance and may make or break design of a particular software system. Memory layers latency difference is very important to software design. Basics of…
Scalable Backend Secret Sauce
There’s an implementation principle of a scalable backend system which I find among the most important ones. It’s about minimization of compute resources footprint of a request handler for every possible request. This principle isn’t only applicable to handlers in request/response scenarios, e.g. REST or GraphQL APIs. For a session-based handler like a websocket handler…
AWS Solutions Architect Professional – How it was
Earlier this summer (in June actually) I achieved my AWS Solutions Architect Professional certification (SAP-C01), yay! My overall AWS experience is more than 8 eight years at the moment of writing this, so my take on this initially was “pff, what is all the buzz about? That should be no problem for me!” Preparations Obviously…
Microservice Architecture Implementation Principles
Today on microservice architecture implementation principles. I intentionally don’t touch the topic of whether or not one should use microservice architecture for a particular project/company context in this article. That’s a big separate topic of its own and a story for another day. The following list consists of fundamental items which should be kept in…
Why Total Annihilation is an iconic masterpiece?
Another gaming-related post this time. In case you’re not an oldfag like me you may miss some pillars of the real-time strategy (RTS) genre. I mean these: WarCraft II (1995 release year) Command & Conquer (1995 release year) The staple of the current show – Total Annihilation (TA for short, 1997 release year) Each of…