An Overview of Observability

TL;DR Observability is the ability to understand what is going on in the inner workings of a system just by observing it from the outside. Your software should explain itself and what is doing! Pillars of observability are logs, metrics, traces, and events. Logs are structured logging or non-structured textual data. Used for auditing and debugging purposes. Very expensive at scale. Cannot be used for real-time computational purposes. Hard to track across different and distributed processes....

Sep 8, 2019 · 2 min · Milad Irannejad

Compilers 101 in Go

Theory What is a Language? Every Language is defined by specifying four sets: Alphabet The most primitive building block of a language is its alphabet. An alphabet is a finite set of symbols. The alphabet for English consists of letters A to Z (both capital and small) as well as punctuation marks. The alphabet for a programming language includes characters A to Z, a to z, and other characters such as -, +, *, /, ‘, “, etc....

Sep 2, 2019 · 17 min · Milad Irannejad

A Comparison of GitHub Marketplace Apps

I have been using and evaluating dozens of GitHub Marketplace Apps for a few months now for a real-world microservices application built in Go. So, I decided to share what I liked and what I didn’t like about these integrations. The nice thing about using GitHub Marketplace is that your integrations and billing are all consolidated in one place. As an organization or a billing manager, it is much easier to manage all these different services from a single hub....

Jun 2, 2019 · 7 min · Milad Irannejad

gRPC in Microservices

I have been working with a microservices application using gRPC as the main service-to-service communication mechanism for almost a year. So, I decided to write a blog post and share my experience on how to do gRPC right in a microservices world! So, let’s get started! TL;DR DRY! Have a package for your common messages. Choose unique names for your gRPC packages. Choose singular names for your gRPC packages. Distinguish your gRPC package names with a prefix or suffix....

Jun 1, 2019 · 11 min · Milad Irannejad

An Overview of Graphql

TL;DR GraphQL is an API integration layer in distributed software (microservices) world. GraphQL is both a query language and a runtime for executing the queries. GraphQL solves underfetching and overfetching problems. GraphQL is strongly typed. Caching, profiling, and rate limiting are challenging with GraphQL! Schema stitching is a technique for decentralizing a GraphQL schema in microservices world. Schema stitching can be done by convention or configuration. GraphQL schemas can be completely decentralized by choreography....

Apr 30, 2019 · 1 min · Milad Irannejad