by user user No Comments

Is it a good idea to convert a Monolithic Application to Microservices

Microservice is a popular term in today’s cloud software development and the agile programming community. Before you make the decision to convert a monolithic application to microservices, read our insights.

What is a Microservice?

Services that are small in size, messaging-enabled, bounded by contexts, autonomously developed, independently deployable, decentralized, and built and released with automated processes.

Source Wikipedia

Why convert a Monolithic Application to Microservices?

Before we start learning about converting an already working application to microservices, it is important to know why it is needed in the first place.

It might be difficult to extend and improve your existing legacy applications that might be running on older platforms. Scalability becomes an issue and working on top of such huge monoliths might even increase the complexity and makes it even harder to maintain.

Another reason is the need to use modern frameworks for modern problems, that might not be possible in the monolith. For example, if a 10 year old application is running on a legacy Java platform, and you want to integrate Machine Learning capability to the system, it will become difficult. You might want to use a different tech stack Python, for example.

There are several reasons to use microservices. But is it a good idea to migrate an entire monolithic application? Well, maybe not. Sometimes, it’s tempting for technology decision-makers to adopt microservices because that makes you look “cool” in the modern tech community.

Let’s see how you can get out of this dilemma and see if migrating to microservices is a good idea for your organization.

Think about the value that you’ll get from adopting a microservice design.

  1. Do you have a particular component in your application that needs to be scaled and served through a load balancer?
  2. Is there a need to re-write a particular module of your application in a different language/tech stack?
  3. Do you have a distributed team structure where collaboration between teams is difficult due to timezone issues?

These are some of the factors you can consider before adopting a microservice architecture.

But, don’t under estimate the trouble.

decision to convert a monolithic application to microservices should be taken carefully

Migrating from monoliths to microservices should be done incrementally. Trying to do it all at once will result in a big bang. Especially if your monolith is not documented properly, or if you don’t have a clear picture of the implementation.

I’d suggest an approach where you should build new features as microservices instead of building it in the monolith app. And incrementally, migrate the related functions from monolith to your new microservice. And after migrating each function, keep monitoring the logs for increased failures and errors. You should be able to switch it back easily if there is a serious / error.

I did this recently for a huge monolith application (that has high usage). It was written in PHP and we migrated it into Node.js microservices.

But, Microservices make simple things complex.

microservices can be a headache
I just refactored my simple web app into several microservices.

I’d recommend migrating into microservice only if there is a real need. Otherwise, it can cause several other headaches. Distributed applications are very hard to monitor and maintain.

For example, in a monolith application, you know where to look when something fails. You’d probably have a single log file for your entire application. But in you have several microservices, and if one fails, you’d never know the problem, unless you have a sophisticated log aggregation system.


When you write an application, even if it’s monolithic, try to design it as components so that you could simply break a piece from it, and deploy it as a separate microservice.

Simply, ask the question yourself “Do I really need it?”.

If your decision is just because you read about microservices and it looks cool, don’t do it. Because microservices are really hard to maintain and monitor. It would be an overkill for small applications.

If you’re just starting up, I’d recommend adopting component-based design. So when your application grows you can simply separate a component and deploy it as a microservice.

by user user No Comments

How to find great developers to build your product

Well, We all are going through difficult times and most of us are working from home for more than a month. For most of us, this mode of work is not something that we’re familiar with. And it’s even harder to recruit new software developers and start working with them remotely. Here are some tips that will be helpful to find great developers or freelancers to develop your product.

Don’t look at the resume. Many great developers don’t have one!

Or, maybe you should, but in a different way. We’ve all seen those common sentences and emphasized jargon in resumes that don’t have anything to do with the developer. Somebody who has built a “Hello World” program in Rust will become a highly experienced Rust architect, and another person who has learned linear regression will become a Machine Learning consultant, only in their resumes!

Never ever hire a developer based on what they’ve written on their profile. Look for proof. If you’re really an expert in reading resumes, you might get some clues by looking at it. Sometimes, I do get a feel like – I think this might be saying the truth about his experience in a particular language/tech stack because he sounds different from 90% of other people.

Have they mentioned references to the projects they’ve done? Do they have a StackOverflow or GitHub profile? Well, having an account doesn’t mean they’re an expert. But, are they active on it? You’ll definitely be able to figure out if the person is a true expert by looking at their Github or StackOverflow account.

But not all of the great developers are active on Github or Stackoverflow!

Find great developers from the list with a quick tech challenge

So, If the developer doesn’t have an active Github or StackOverflow, you’re still in Step 0. You have a long list of applications that you don’t know how to shortlist.

Well, give them a treasure-hunt, but programmatically. I’ve done this before and this helped me find great developers from a list of hundreds of applicants. At least, this will make your shortlisting job easier.

You need to give them a challenge that helps you assess his knowledge in the area that you’re looking for. But don’t send a task that will take a full day to complete. Many of them will just ignore it. This is just to shortlist some good developers from a list of applications. But yet challenging.

Most often, you’d be able to filter more than 60% of the list from this challenge. Look at the way they implement it, look at their coding pattern, look the way they write Git commit messages, Have they wrote unit tests? Each detail counts!

Well, we haven’t found a great developer yet, but still, we were able to clear the noise by filtering a huge list! That’s a relief.

How to find that one great developer from the list?

Congrats, you’ve made your job much easier. Now you have only a few developers in your shortlist from where you may or maynot find the one perfect developer to develop your software product. How to find that one person?

Have a call with each one of them, and tell what you’re trying to build and ask if they have built anything similar. Listen to the way they speak. Each project is different, but most of them share some of the common components like JWT based authentication, Payment Gateways, Chat integration, etc.

If the person is an expert developer, they will confidently suggest the way you should choose a tech stack, or how to implement it. Because they’ve already done it and know what all possible challenges that could happen. I’d definitely choose the person who’s already implemented something that I’m going to build. Experience beats theory.

The product that you’re going to build consists of common components like login, authentication, etc. All of the shortlisted developers on your list can do those things. There is no doubt about that. So you shouldn’t make a move based on that. Instead, go deeper and discuss the challenging areas of your project like – “What can we do if we need to handle millions of push notifications?” If he has no clear picture of that or if they say like – “Well, I haven’t done that, but we’ll see”, I’d mark them as a secondary choice.

Always listen to the opinion of a technical person when you look to find a great developer

Admit it, Hiring a great developer (Be it full time, or a freelancer) for your software development project is not easy. This one decision can make or break your products, and your dreams too!

You can’t trust your intuitions in this space. You really need the help of an experienced technical person to find a great developer. Since there are hundreds or even thousands of technologies and frameworks out there, it is really difficult to find that one person who is the right match for your project. But you can reduce the chances of the wrong hire by following steps like – Evaluating their opensource contribution, Ability to solve related challenges, communication skill (This is again very very important) and overall, he should have a passion for what you’re trying to build.

Product development > App development. You need the right person to do it. To build a great product, you need great engineers!