Go

Learn gRPC, GraphQL and Kubernetes by building Microservices: Part 3 - Kubernetes

Intro This is the third and last post in a series about learning gRPC, GraphQL and Kubernetes by building Microservices in Go. Here is a list of posts in the series: Part 1 - gRPC Microservices Part 2 - GraphQL BFF Part 3 - Deploy services by Kubernetes Full code is in here We have implemented gRPC servers and BFF in parts 1 and 2. In part 3, we will deploy those services using Kubernetes and Minikube.

Learn gRPC, GraphQL and Kubernetes by building Microservices in Go: Part 2 - GraphQL BFF

Intro This is the second post in a series about learning gRPC, GraphQL and Kubernetes by building Microservices in Go. Here is a list of posts in the series: Part 1 - gRPC Microservices Part 2 - GraphQL BFF Part 3 - Deploy services by Kubernetes Full code is in here We have implemented gRPC servers in part 1. In part 2, we will develop a BFF server that reads from and writes to these gRPC servers and communicates with clients using GraphQL.

Learn gRPC, GraphQL and Kubernetes by building Microservices: Part 1 - Building gRPC Microservices

Intro This is the first post in a series about learning gRPC, GraphQL and Kubernetes by building Microservices in Go. In this series of posts, we will embark on a journey to implement a Backend For Frontend (BFF) and microservices architecture, leveraging gRPC and GraphQL. Additionally, we’ll demonstrate how to deploy these services locally using Kubernetes. This project serves as an educational endeavor to understand microservices communication and the benefits of using gRPC, GraphQL, and Kubernetes.

Implementation of Job Queue model using goroutine and channel

Introduction In concurrent programming, managing tasks efficiently is crucial. One common pattern is the job queue model, where multiple tasks (jobs) are submitted to a queue and processed asynchronously by worker routines. In this blog post, we’ll explore how to implement a job queue model in Go using goroutines and channels. Understanding the Job Queue Model At its core, the job queue model consists of two main components: Job Queue: The job queue is a data structure that holds tasks awaiting execution.

Go Concurrency Model

Intro This article aims to summarize the key concepts and principles of Go’s concurrency model that I’ve learned. To test your understanding and reinforce your knowledge, a quiz is available at the end of the article. Goroutines A goroutine is a lightweight independently executing function with its own call stack. While not equivalent to a thread, conceptually, it can be thought of as a very cheap thread. Here’s how you can use goroutines:

Write a Large Amount of Data to CSV File with Go (Golang)

Introduction Have you ever found yourself in a situation where you needed to prepare a substantial amount of data for testing your code? If so, you’re not alone. Working with large datasets is a common requirement in software development, and Go provides some powerful tools to help you accomplish this efficiently. In this blog post, I’ll share my approach to writing a large amount of data into a CSV file using Go, and I’ll demonstrate how to leverage Goroutines to make the process more efficient and faster.

Stack and Queue

Queue FIFO package queue import "sync" type node struct { data interface{} next *node } type Queue struct { head *node tail *node count int lock *sync.Mutex } func NewQueue() *Queue { return &Queue{lock: &sync.Mutex{}} } func (q *Queue) Len() int { q.lock.Lock() defer q.lock.Unlock() return q.count } func (q *Queue) Push(data interface{}) { q.lock.Lock() defer q.lock.Unlock() ele := &node{data: data} if q.head == nil { q.head = ele q.tail = ele } else { q.