“A fundamental problem in distributed computing and multi-agent systems is to achieve overall system reliability in the presence of a number of faulty processes. This often requires coordinating processes to reach consensus, or agree on some data value that is needed during computation. Example applications of consensus include agreeing on what transactions to commit to a database in which order, state machine replication, and atomic broadcasts”. [1]

As you see in the definition, the consensus is the most important part of the distributed applications. In this article, I will describe how to implement a Raft Consensus algorithm implementation with Go…


What is Distributed Computing?

“Distributed computing is a field of computer science that studies distributed systems. A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. The components interact with one another in order to achieve a common goal.”[1]

In the 1970s-1980s, Distributed systems were just a research topic at universities. After very large web systems become popular, lots of practitioners inside the software industry, started work on this topic.

There are some advantages and disadvantages of distributed computing.

Advantages

  • Reliability…


While researching about Java and JVM architecture, I found a meetup talk[1] and other resources. Then I recognized that other developers might be curious about Java’s behind the scene. So I decided to write an article about how Java Application runs? How Java VM run by explaining step by step? In order to discuss this, I collected some background information. Then finally illustrate VM running steps. The sample application is based on that meetup talk Terence Parr[1].

Background Information

“Java is a general-purpose programming language that is class-based, object-oriented, and designed to have as few implementation dependencies as possible. It…


Inside this post, I will try to explain how to use go modules with a real-world example.

First of all, managing dependencies becomes confusing while using Go, especially for the developers who come from languages such as Java, C#, etc like me. Whole dependencies will be installed to the src directory inside GOPATH. And other kinds of stuff is very unique for Go.

“Go 1.11 and 1.12 include preliminary support for modules, Go’s new dependency management system that makes dependency version information explicit and easier to manage. …


“gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.”[1]

Cloud Native Computing Foundation is the new home for gRPC and its existing ecosystem projects (https://github.com/grpc and https://github.com/grpc-ecosystem)

There are some comparisons with Rest, SOAP etc. In this tutorial I will not make a comparison. But you can find some of them 1,2,3.


The software development industry changes very rapidly. After DevOps term becomes very popular, only writing code is not enough anymore. You should automate the software development process as can as possible. In this post, I will describe how to define our infrastructure by just writing code.

“Infrastructure as code is the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools”.[1]

Why do we need infrastructure as code?

  • After moving a containerized world, infrastructure can be changed or delete/create more often.
  • Also, keeping track of infrastructure setting becomes very…


Photo by Oskar Yildiz on Unsplash

Twelve-factor app development methodology strongly suggests that “strict separation of config from code.”[1]

Spring Cloud offers a solution to that problem with Spring Cloud Config Server. Spring Cloud Config Server defines itself as below.

“Spring Cloud Config provides server-side and client-side support for externalized configuration in a distributed system. With the Config Server, you have a central place to manage external properties for applications across all environments.”[2]

Managing your configuration in a central place is a super easy and also very efficient feature. Lacking centralized configuration causes making mistakes very often.

Another good feature is after changing your configuration, you…


In this tutorial, I am going to share a sample project which contains Signup, Login, Authorization, Email verification functions. These functions can be used to start a new Serverless project. I will share code on GitHub at the end of the article so people can start with the existing code. Technology stack is below:

  • Golang
  • Gorm
  • AWS Lambda
  • AWS API Gateway
  • AWS RDS Postgresql
  • AWS SES
  • AWS SQS

You can develop this project with the AWS Free Tier. You do not need to pay anything to AWS.

Later on this tutorial, I will give some tips&tricks of each of these…


This is the third article of my AWS journey with Go language.

At the first article, I tried to discuss AWS introduction.

Then I moved to the more complicated staff Gorm, Object-Relational Model for Go and Amazon RDS PostgreSQL to handle create and get a user from the database.

But after this development, I need some extra features like running serverless functions at local. Also in my sample project, I have some common features like database connection, etc. If I work as the previous article, I need to redeploy each project with huge effort, when I changed shared code. After…


Last time, I shared my first AWS Lambda deployment. In this tutorial, I am going to demonstrate more complicated stuff. Our scenario is, creating and getting the user from the database whose architecture consists of completely AWS components.

Our toolbox is like below:

  • Golang
  • Gorm which is ORM for Golang. Our architecture is ORM based so if you want to use a different database, you can easily adapt our approach.
  • AWS Lambda to deploy our serverless function
  • AWS API Gateway to route requests
  • AWS IAM for identity and access management
  • AWS RDS for PostgreSQL, Amazon serves a free tier for Relational Database online. I prefer PostgreSQL which is opensource and fast.

— — — — — — — — — — — — — — — — — — — — — — — — — —

Advanced…

Yunus Kılıç

I have 7 years of experience in high-quality software application development, implementation, and integration.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store