Building Async and Cloud Native organizations - Issue #3

Number three; thanks for sticking around for this new edition in which I share some links to interesting articles and subjects.

REST and APIs

Dr Werner Vogels published the Distributed Computing Manifesto, a canonical document from the early days of Amazon that transformed the architecture of Amazon's ecommerce platform. It highlights the challenges they were facing at the end of the 20th century, and hints at where they were headed.

The QUERY verb, I wrote about it some time ago, with some examples on how to use it. Still curious of this will come in use someday. Read more about it here:

Fetching and displaying a chronological timeline of items sounds like an easy task. Think of services like Twitter or Instagram, which display items along a timeline. You might argue that both of them moved away from a chronological timeline, but what matters for this discussion is a server that stores items in a particular order for the client to render. Interesting read by Daniel Büchele:

Fetching and displaying a chronological timeline of items sounds like an easy task. Think of services like Twitter or Instagram, which display items along a timeline. You might argue that both of…

Spectral is a great tool to validate OpenAPI specifications. So how to handle versioning? Read the article on Stoplight.io on how to use and validate versioning:

Get the latest ​public style guide, with a focus on versioning and how you can avoid API versioning pitfalls with Spectral.

Coding

Phil Haack shows some nice new C# features for lists:

C# 11 introduces some list patterns and I’m loving them.

An interesting set of guidance from Microsoft on how to build mission critical systems:

This repository provides a design methodology and approach to building highly-reliable applications on Microsoft Azure for mission-critical workloads. - GitHub - Azure/Mission-Critical: This repository provides a design methodology and approach to building highly-reliable applications on Microsoft Azure for mission-critical workloads.

Recently I saw a NET 7 code snipped where instead of using Result.Ok() , they used TypedResult.Ok(). Curious what this new functionality was, I found this interesting solution for helping describe your API endpoints:

.NET, .NET Core, ASP.NET, ASP.NET Core, Visual Studio, Jaliya Udagedara

Working locally with an API that requires a JWT bearer for authentication purposes can be very cumbersome. You somehow need to get a JWT from a token provider and pass it along. In NET 7, there is a new command called dotnet user-jwts which creates a JWT for you and alters your project to allow the token to be trusted. Read more in this MS article:

Learn how to set up manage JSON Web Tokens in development with dotnet user-jwts

GitHub

Looks like GitHub has a lot of magic files (and links); things that placed in a certain folder, with a certain name, will perform a specific action:

I keep coming across files in GitHub that have some mystic magic feeling to them. There’s always a small incantation to come with them: the have to have the right name, the right extension and have to be stored in the right directory. I wanted to have an overview of all these spells for myself, so here we are.

GitHub has for a long time a V3 API, but are now planning to use calendar based versioning. Meaning that you will need to add an additional header to indicate the version you would like to use. For example: X-GitHub-Api-Version: 2022-11-28

We’re introducing calendar-based versioning for our REST API, so we can keep evolving our API, whilst still giving integrators a smooth migration path and plenty of time to update their integrations.

Computing

Did you know you can use Pull Request templates inside Azure DevOps? An easy way to prefill a PR description with the needed structure for a developer to help gets his/her PR approved.

Learn how to standardize pull request descriptions using pull request templates

The endoflife.date website and API documents End-of-life dates, and support lifecycles of various products.

Check End of Life, Support Schedule, and release timelines for all kinds of products and services.

An interesting take on Conway's law by Mathias Verraes:

Conway’s Law is undervalued when it comes to the design of new systems, but overstated when it comes to the redesign of existing systems. A greenfield project has unlimited flexibility. But as the design cements in more coupling and interconnectedness, it loses flexibility. We need to think about our organisational structure early and continuously, not only as an afterthought when the design has ossified. Preventing our systems from becoming rigid requires constant attention, from the thousands of small local design decisions to large scale architecture. To support and enable decision-making, we need good models or theories about the system, the domain, the product, the ecosystem it serves.

And when we do find ourselves with a rigid system, the Inverse Conway Manoeuvre is just one of the engineering devices we can use, not a magic wand.

Helpers

You know what the cron expression 30 */5 1-12 2 * represents? I normally validate those using the crontab website:

An easy to use editor for crontab schedules.

Computer Laws

“Be conservative in what you do, be liberal in what you accept from others”

- Postel’s Law

Something to consider when you build e.g. a REST API., as you do not know what you will get.

Thank you for reaching the end of this week's newsletter. If you have any feedback, do reach out and click on the yes/no buttons at the bottom. See you next time!

Join the conversation

or to participate.