Useful Stuff I Read This Week


Here are 7 posts I thought were worth sharing this week.

Google: A Collection Of Best Practices For Production Services – Link

This is an amazing read. Building resilient systems is hard. The first step to building resilient systems is to become aware of the practices that are used in the trenches. All the practices are worth reading/knowing and you should look for opportunities to apply them in your environment . Every few weeks I see teams struggling with making configuration changes safely. Article gives some practice advice on the same. Writing fail-safe and resilient HTTP clients is not easy. HTTP clients are used heavily in Microservices architecture. Most developers consider the happy path when service either succeeds or fails with expected response codes. But, we need to consider retries with jitter, timeouts, queueing, load shedding, etc while building HTTP clients. This article covers a few more practices that can help us build resilient systems. 

Understanding AWK – Link

This is a good and long introduction to Awk. Awk is a record processing tool written in 1970’s. It is installed in all POSIX systems. It is one of those tools which you can use to write quick one-liners to automate your job. I also covered a couple of examples of awk in my earlier post on htmlq.

Designing Low Upkeep Software – Link

This is an interesting post on things to keep in mind while designing hobby projects where you want to keep maintenance cost low. Most people lose interest in hobby projects once the first version is finished. Author made a few suggestions on how to keep maintenance costs low. The main suggestions being keeping dependencies to a minimum and implementing as minimal as possible. The problem with this suggestion is that it makes the initial development cost higher. Also, there is no fun doing undifferentiated heavy lifting. When I build hobby projects I want to come to the meat of the project. This usually means picking up off the shelf components/frameworks/libraries and getting to speed quickly. I am not totally against the suggestion made by the author as well. I have a project that I developed last year using Kotlin, Spring Boot, and Vue.js.All the three have moved ahead in the last year. Getting the project to its current state would at least require a weekend worth of effort. I think we have to look for the middle path here.

Architecturally Significant Decisions – Link

I wrote this post where I expand on Michael Nygard’s blog on Documenting Architecture Decisions. Michael defines architecturally significant decisions as those decisions that affect the structure, non-functional characteristics, dependencies, interfaces, or construction techniques. I add examples to each of the five decision categories.

Eating the Cloud from Outside In – Link

Cloudflare founders declared in a post that they want to become the fourth major cloud provider. With the recent release of R2, an S3 API compatible cheap object storage service they are now looking to disrupt AWS S3 business model. This post takes an outside in look into the Cloudflare strategy and how it will disrupt the cloud. 

Best practices for staging environments – Link

This post covers best practices for creating and maintaining staging environments. Staging environments can help you uncover known-unknown issues with your application. They give confidence to the team to deploy changes to production. Staging environment should be as much as possible to the production environment. It will be proportionally smaller compared to the production environment but it should have all the components. 

3 ways to auto-increment with Postgres – Link

Postgres is my favorite database. In this post, the author covers three ways in which we can do auto-increment with Postgres. I was aware of the sequence way of doing things but serial and identity were new to me.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s