“Give me six hours to chop down a tree and I will spend the first four sharpening the axe.” ― Abraham Lincoln

Accident is always unexpected and sometimes unavoidable.
Some of the infrastructure might just be having a bad day and gone failure.
Or there might be a datacenter outage causing a chaos in your micro-services environment.
Or maybe, there might be a bad deployment that makes your services unable to serve the request.

Whatever the reason or the problem is,
In the utopia of the Software System,
And in all the hopes and dreams of all the engineer around the world,

Message queues provide a new asynchronous way for services to communicate with each other. Compared to an API, a message queue has many advantages, such as :

  • Optimize performance
    The Producer doesn’t need to wait for the Consumer to finish their jobs thus optimizing the performance
  • Reliability
    The level of persistence in messaging queue helps to minimalize the data loss when part of the system goes down
  • Scalability
    Scaling the producer and consumer separately to meets your needs

1. Introduction to NSQ

Every downtime your system had,
Every mistakes that user experienced,
Every risk of data loss that goes unresolved,
Is a fatal blow for the trust of the customers.

Every day in any software development lifecycle, there is always a chance of incident happen. Whether it is your system suddenly having a memory leak causing a downtime, or connection to the database suddenly got lost making all the process got error, or maybe is it just a bad code deployment.

Whatever the reason is, An engineer while focusing on his task still needs to shift when things goes awry. …

As the system grows bigger and bigger, for avoiding any single point of failure, often we switch from the old monolithic to micro-service architecture. By dividing the application into smaller independent units, the interaction count between each unit will grow significantly.

Messaging queue offers another way to communicate and coordinate asynchronously especially in this decoupled unit while improving performance, reliability, and scalability. The component which adds the message to the queue is called producer while the component which retrieves the message and process it called a consumer. …

To Review or to be Reviewed,
That is not the Question,
That’s Our Daily Job

For a newly programmer, Code review seems like a scary process.
Being corrected and checked for all the things that you push.
Who knows what critics might come in the form of request changes comment ?
Some might think that this is only a formality process.
Some might think that this is just a standard procedure.
But is that all ?

But the code review process is not that simple,
it is quite a beneficial yet could build the culture of the team ,one pull…

Choosing which database for your system might be one of the crucial decisions to make. Whether relational databases such as PostgreSQL and MySQL that provide ACID transactions and standardized SQL syntax, or NoSQL such as MongoDB that provides horizontally scaling storage and high availability.

Both have their own advantages against each other and have been a solid choices for all developers. But what If we want a solid distributed database that still provides ACID Transactions yet still horizontally scalable?

Yeah, you can still use Master-Slave Replication in Relational Databases, but does it really scales? …

Don’t create another problems that don’t event exist in the first place.

So, your mind try to wandering about all the bad stuff that ever happen in your life.
All the awkwardness that ever occurred ?
The rejection from your crush ?
The breakups from your soulmate ?
The car that got stolen ?
The passing of the beloved one ?

Or maybe your brain tries to imagining the future with all the useless worrying ?
About the project’s deadline that due tomorrow ?
The meeting with the manager about your team ?
The fate of your single life after…

Timothy Agustian

Software Engineer who fonds of Self-Development

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