Photo by Markus Spiske on Unsplash

Build infrastructure is core for enabling software teams to move fast at the phase of growing business. In order to have a scalable build infrastructure there are core things to consider when setting up the build infrastructure.The below design helps to solve few key problems which might be faced by any organization over the time.

  • Artifact Management
  • No Parallelization of builds
  • Resource utilization of Jenkins
  • Single huge jobs that does all things together and was completely managed via shell scripting

Below were the goals we kept that should ensure the new design for build infrastructure should solve

  • Proper Artifact Management

Photo by Tri Eptaroka Mardiana on Unsplash

Spring boot becoming a common defacto for writing micro-services in the Java ecosystem. We have a lot of frameworks and options to write unit and integration tests are available.

We are not going to discuss in detail writing unit-testing. But setting up the necessary things that enable us to independently write end-to-end tests for our spring boot applications.


Our application is going to be a simple back-end service connected with a database. In our case, let’s assume it is PostgreSQL. Based on your application architecture the same template can be changed. Below the types of tests we have

  • Controller Level…

Photo by Ferenc Almasi on Unsplash

Spring Boot lets you externalize configurations for our application. Let’s take a simple application that connects to the database and perform some operations on it. The standard configuration for this kind of app would be the database related details. Below is one sample `properties` file

Like this, we might have more properties specific to our application also which we want to have as dynamic configurations that can be passed when application startup. In order to have these have different across different environments like dev, staging, production. …

Photo by Carlos Alberto Gómez Iñiguez on Unsplash

What is a State Machine ?

Wikipedia defines a finite-state machine (FSM)() as:

an abstract machine that can be in exactly one of a finite number of states at any given time. The FSM can change from one state to another in response to some external inputs; the change from one state to another is called a transition. An FSM is defined by a list of its states, its initial state, and the conditions for each transition.

It is a way to program a model so that it is at one particular state at any moment.

The world is filled with state machines which we can…

How to work with multiple git accounts

Photo by Yancy Min on Unsplash

Cross Posted from Personal Blog

Lot of companies requests developers to create dedicated git accounts to access work related git projects. It is good from security and access control perspective but it is a pain from developers who wish to work on personal projects in their private accounts. Lot of times commits goes in the name of work accounts or the other-way. I have also gone through this that is why have setup my work laptop as below such that there is clear segregation of usage of git accounts


  • You should be using…

Balaji Srinivasan

Love Building Things.

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