Backend Blogs
Android Push Notification Flow using FCM
In the FCM flow, the app gets a token from FCM and sends it to our backend. The backend then asks FCM to deliver the notification to that token.
Write-Ahead Logging (WAL)
Write-Ahead Logging (WAL) is a database technique where every change is first written to an append-only log before the database files, to keep data safe in a crash.
Composite Index in Database
A Composite Index is an index created using multiple columns of a table. It speeds up queries on those columns, and the order of the columns matters a lot.
Database Normalization vs Denormalization
Database normalization focuses on reducing data duplication and keeping data correct, whereas denormalization focuses on making the queries faster.
Evolution of HTTP
HTTP evolved from HTTP 1.0 to 1.1, 2.0, and 3.0, where each version solved the problem of the previous one, like new TCP connections and HOL blocking.
Internals of RESP - Redis Serialization Protocol
RESP (Redis Serialization Protocol) is the text-based language that Redis clients and servers use to talk. The first byte of each message tells the data type.
Configuration with Viper in Go
Viper is a Go package that finds, loads, and unmarshals configuration files. We will use it to load the configuration from an envfile in a Go project.
Test with Testify and Mockery in Go
In Go, we write unit tests with Testify, a toolkit for assertions and mocks, and Mockery, which auto-generates mocks for our interfaces.
Go JWT Authentication Middleware
A JWT Authentication Middleware in Go checks the JSON Web Token of every request before it reaches the handler, without any database query to verify it.
Go Backend Clean Architecture
Clean architecture in a Go backend splits the project into five layers, which are Router, Controller, Usecase, Repository, and Domain. Let's learn it with a project.
What is System Design?
System Design is the process of defining the components, APIs, and database tables of a system to satisfy the given functional and non-functional requirements.