Concurrency is one of the most discussed topics is programming. A lot of concurrency patterns have been introduced over time in different programming languages. Golang is considered as a language with very rich support for concurrency. This article takes a deep dive into how these classical concurrency patterns can be adapted into Golang.
Golang’s rich support for concurrency is mainly based on two primitives
Two important principles about Go concurrency primitives,
Let’s dive into the concurrency patterns.
It has been a couple of years since Serverless technology became a hot topic. Since then, there has been many debates and discussions over this topic. If you are a developer coming from a microservices background (like me), naturally you will get multiple questions on your mind at the beginning, such as,
And a lot more. In my case, I have been struggling with solving most of these issues since the day…
Errors are one of the most important aspects of a programming language. The way you handle errors impacts the performance of the application in many ways such as,
How errors are defined in Golang is a bit different from languages like Java. In Go, errors are values. For example, you can assign an error to a variable in the same way you assign an integer to a variable. Consider the following example,
config, err := ioutil.ReadFile("config.json")
We can handle Go errors mainly in two ways,
Dependency management is a problem that is there with the programming languages. Most of the programming languages have their own solution to this problem. In Golang, currently, there are two dependency management solutions. Go Dep was introduced by the Go development team as
the “official experiment” dependency management tool for the Go language
So, most of the Go software projects started using Go Dep. But in later go versions, it was officially decided to go with Go Modules as the official dependency management tool for Golang. …
First of all, we need to install the dependencies required for kong. Please execute following commands to install dependencies
sudo apt-get update
sudo apt-get install -y openssl libpcre3 procps perl unzip
Now its time to download kong binary file. For downloading binary and installing the package please execute the following command
wget https://bintray.com/kong/kong-deb/download_file?file_path=kong-1.4.0.bionic.amd64.deb -O kong-1.4.0.bionic.amd64.deb
sudo dpkg -i kong-1.4.0.*.deb
Now we can test whether the Kong installation was successful by running following command
If the installation was successful, it should print the following output
➜ ~ kong roar
Kong, Monolith destroyer./\ ____…
There are a lot of chat applications are in the use. But only few of them standout because of the qualities they bear which attracts the users. Two of those best chat apps are considered to be Facebook Messenger and Whatsapp. Although these companies are discrete about the architecture of their applications, I managed to find bits and pieces of information from blog articles and forums. This is a composition of them and these facts can be outdated since all these applications are tend to be updated frequently.
Facebook’s messenger is one of the most popular chat applications. Several years…
I had one of the most awesome summer experiences with GSoC 2017 as an intern with Eclipse Organization. So I wanted to apply for GSoC 2018 too. While going through the list of selected organizations, I found this amazing organization which suddenly caught my eye.
Docker has become one of the most popular technologies used all around the world today. Docker engine is the portion of a docker installation which takes care of the all the docker features. But when we are trying to automate the processes which uses the docker features such as “deploying an app via Jenkins” we need a way to access the docker engine via a scripts and run docker commands. Docker API helps the developers to access the docker engine through their scripts.
When the Docker Host is in a remote machine, we need a way to access the docker…
I contributed to Eclipse Che as my project in Google Summer of Code 2017 program. My target was to port a legacy data source plugin which was used in the earlier versions of Che to Che 5. This plugin was developed as several parts.
I found the earlier used plugin in a deprecated repository with the guidance of my mentor Sun Tan . My first task was to clone Che repository in my local environment , build it and run Che . After bit of a struggle i could make it…
Gopher 💻 Cloud ☁️ Distributed Computing 🖥