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.
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.
Do you have a particular component in your application that needs to be scaled and served through a load balancer?
Is there a need to re-write a particular module of your application in a different language/tech stack?
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.
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.
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.
SaaS is not a buzzword in 2019! It’s a proven, efficient and most widely used model to deliver software to customers. SaaS stands for software as a service, which means the software is delivered as a continuous service over the web/internet where the customer doesn’t have to download and install the product on his system. Examples of popular SaaS products include Zoho, Salesforce, Mailchimp, Twilio, etc.
Having built and scaled a SaaS product to several hundred millions of users from scratch, I’ve gathered valuable knowledge and experienced in various aspects related to building and maintaining a SaaS software. I’ll share some of the key elements to consider while building a software product that you plan to offer in the SaaS delivery model. If you’re thinking to build your first SaaS product, this article will help you get some ideas.
Test The Waters
Developing a SaaS product can be very costly unless you’re an expert programmer and willing to spend all your time inside a room coding. SaaS development projects will have cost anywhere from $50,000 to $1M depending on the complexity and the stage you’re in. So, before you invest your time and money in developing a full-fledged SaaS product, you should test if it’s worth the effort by building a quick, low-cost MVP.
As in every business, find your target customer segment. To whom are you going to sell this product? -This is not as easy as it seems. You might have several intuitions about your target customer which is likely to be wrong. You might be entering a market that is ruled by enterprise companies, or the market size of your product is too narrow that you can’t make a sizeable income.
And when it comes to finding your ideal customer persona, it should be laser-focused. You should be able to define a clear and crisp profile of your ideal customer!
During the initial stage of Engagespot, I assumed that our target customers are digital marketing agency owners and tried to sell the product to them. After spending a lot of time and effort, I realized that Engagespot is just a small module inside their already existing digital-marketing suit.
It will take you several iterations, and customer interactions to refine your customer profile! Once you find the right product-market fit, you’ll feel like you are being chased by customers!
Don’t Re-invent the Wheel
When you’re building a SaaS product, several components are common for any SaaS apps that you need to build. But don’t build them! Instead, look for companies that offer such modules as SaaS offerings. This will not only help you save months but also takes away the overhead in maintaining such modules. Hence your team can spend more time building and refining your core features, instead of coding some fancy invoicing templates!
There are several third-party services that you can use to speed up your SaaS product development time.
ChargeBee – Their platform takes away the pain in building the subscription module for your SaaS product, which includes monthly billing, invoicing, account management, pro-rata billing, multi-payment-gateway integrations etc.
Engagespot – This is my product, that helps you save time by quickly adding user notification support on your SaaS product. Every web-based product will have a notification center where users can see important notifications and alerts. Even though it looks simple, it needs a lot of effort to build that component. With Engagespot, you can add a complete notification system in less than 15 minutes.
Algolia – If your product has complex realtime search features that search millions of records, stop trying to optimize and make it as smooth as Google search. You’re likely to fail! Instead, try Algolia.
Build for scale
You may not need to consider the word “scale” if you’re building an MVP just to test the market. But after you’ve found the product-market fit and ready to onboard hundreds of real paying customers, it becomes critical.
Sudden growth is something that I never expected while building my product and that’s a mistake every new SaaS founders often make. For me, it happened when a website with comparatively huge traffic began to use my product and that sudden surge froze the product!
I didn’t foresee the potential bottlenecks while I was architecting my product as I never expected such a spike event. Later, I had to optimize the codebase and database to withstand such load spikes.
If you are building your product v2.0, then you must architect it for scalability. You need to identify the areas where there is a chance for your SQL Queries to slow down or your in-memory array processing will crash the server. It’s not as easy as it sounds.
You need an experienced software architect who had worked on similar projects who can predict such scalability issues and design the architecture accordingly.
You need an assembly line
You’ve finished coding your product, tested it properly and made it available to your customers and they started using it. And you become a millionaire! – No, it’s a dream and far away from reality.
Your SaaS product will never be finished and it shouldn’t be. Once your customers start using your product, you’ll see bugs and issues that might have escaped your QA process. It’s fine and it happens! But the real question is, how will you fix it and release it to your customers quickly without affecting the current system?
This is where the importance of defining a delivery pipeline becomes critical. During the early stage of my SaaS product, I give little or no importance to software delivery at all and that was a recipe for failure. When bugs are encountered I fixed them and pushed directly to production and Boom!
The entire system went down due to an unknown issue. Then I had to change revert the bug fix and identify what happened. This can seriously affect your business if you have several paying customers.
Consider new feature releases just like a car in its production assembly line. It needs to go through several stages, automated and manual.
And you need an efficient DevOps platform like Jenkins, Travis, Gitlab, etc combined with a test automation tool like LambdaTest to handle the continuous release of new features to your product without affecting the existing system.
Change your mindset that software will run by it’s own once deployed. Software development is a continuous process and it needs regular updates, maintenance and support to keep your customers happy.
Measure from day 1
This is a very important thing but often neglected by founders while building their product. What I’ve learned from building several SaaS products is that our intuitions are most likely to be wrong! We cannot trust our intuitions to build a new feature thinking that it might be loved by users.
From day 1, you should use analytics software to measure and track your users and the way they use your product. If your customer base is low, you can even consider using a session recording tool like Smartlook and watch how your users are behaving.
I used session recording to understand why most of my customers are not going beyond a particular step in the onboarding process and found a serious design issue that was making them confused and thus leading to abandoning the product.
You’ll never know how your customers use your product unless you track and measure using good analytics software. It can even give you ideas about which feature to build next.
Building and scaling a SaaS product is an exciting journey with countless things you can learn from. But if you think you don’t want to reinvent the wheel, it’s better to learn from other SaaS founders and developers who have already walked the same path before you.
What I’ve shared here is some of the basic things that you need to consider while building your first SaaS product which can help you a lot in your journey forward. All the best!
If you’ve ever tried to get an app built for your business, you might already know this. You send your RFQ to several app development companies (small, medium or giants) or freelancers and the quote that you get from them will be so diverse that you can’t even do a comparison. That is because the real cost of building an app is complex than you think.
It is not easy to calculate how much it will cost to develop your app. When I say app, it can be anything, a mobile app, a web app, a complete SaaS product, anything. It can range from $5000 to millions depending on the complexity and nature of your app development engagement. In this article, I will try to guide you on how to estimate the budget to build and maintain your application.
What are you going to build? It’s more than your one-line idea.
This is the first thing you need to figure out before you allocate your budget for your app development project.
Do you just have a brief idea about what you want to build? Or are you able to sketch down a simple wireframe of what you’re trying to build? Or are knowledged enough to make a full-fledged plan of the entire app project?
Well, depending on which stage you are in, you may or may not require a consultant before you can start building your app. A good consultant can help you strategize your idea, and plan a well-defined product development roadmap which will make the app development process efficient and guarantee that you will build something that you’ve imagined.
“I want to build an app like Uber, but for trucks!” – Unfortunately, that is not enough for a developer to start working on your app. You need to write down what you’re trying to achieve with this app, how each of its features is going to work, what is the value delivered to your app users? How will you manage and control your app as an administrator?
There are many questions that need a detailed answer before you can even think of building your app. An experienced consultant who has expertise in working with similar app projects is necessary at this stage.
Converting your idea into a detailed app development plan.
Depends on the nature of the idea. Anywhere from 5 days to several months
From $1000 to $100K+
Cost of avoiding this step
Your app development project will be a bumpy ride with many uncertainties and in the end, you may not get what you needed.
Your app needs a design! But it’s not just about colors.
Now you know what are you going to build, and what to expect from your app development project. It’s not just a one-line idea anymore!
But wait, you are not yet ready to tell your development team to start writing code for your application. You need to finalize how your app is going to look and feel for your users. Yes, the Design!
Design is not just about the look and colors, it’s more about the experience of your app. Depending on your target users, you need to spend some time to figure out how to arrange components in your app, design the information flow so that your users won’t feel irritated.
I’ve seen several people avoiding design stage in building their app, and the end result is horrible. Most of the time, such apps will cause headaches to users because of the odd design and user experience. It might be hard to spot for you because the app is your baby, but for others, they can easily get bored if the design is not proper.
You need a good interface and user experience designer to translate your project plan into a user-friendly application mockup. They will design your app screens in such a way that it follows the basic human-computer interaction rules and standards of software applications.
Designing the interface and experience of your app.
Experienced UI/UX designers with knowledge in working on similar apps.
Depends on the nature of the idea. Anywhere from 15 days to 3 months
From $2000 to $50K+
Cost of avoiding this step
Your app will be difficult to use and the chances of your app getting abandoned will be high.
Conversion of your idea to a usable app – Development
Finally, you have a plan, you have the design, and now you can dive into the phase where your idea gets converted into an application. This is the phase where you need developers to write code to turn your idea into reality.
Depending on the complexity and nature of your app, you might need one, or a team of developers to work on your project.
Tips to find the best developer for your app
A typical app often requires a front-end and back-end programmer. When you look for programmers, you should never look for the one who charges the minimum, instead –
Ask if they have built similar apps and if the apps are available on PlayStore or AppStore, have a look. Also, check the reviews section to know if the app is buggy or if users love it. Those signs will let you know whether you should choose the developer or not.
What if your app becomes successful and you get several hundred thousands of downloads? Is the developer capable of building it in such a way that it can handle huge userbase? Most cheap freelancers might not have experience in handling such rare cases.
Are they available to support you after the app development has finished? You will need them to support and maintain your app. So never choose someone who will disappear when development is complete.
Development is the stage where you need to spend most of the money. A typical developer (one that matches the above criteria) will charge anywhere from $15 to $50 dollars per hour in India, and it can be in the range of $100 – $200 in the US or Europe.
Writing code for your app.
Experienced software architects and programmers.
Depends on the nature of the idea. Anywhere from 1 month to several months
From $5000 to Millions
Cost of avoiding this step
You cannot avoid this step 😉
Testing and QA
Now you have the app built! Congrats. But is it ready to use? How will you know? Do you know how your users will use your app?
Testing and Quality Assurance is an important step that you cannot avoid in an app development project. Of course, the development team will do basic testing, but that is not enough to make your app perfect. Your app will be used by thousands of users and each of them will be using it in their own ways.
When it comes to testing, it is not just about a single person manually testing the app and certifying it as done. It is way more difficult and time taking than it looks. Let me explain.
Your users might use Windows, Linux, Android or iOS, and each of their device screen sizes is totally different from your tester’s device. How will you make sure that your app will work perfectly in all devices, all screen sizes, and all specifications?
Testing is not a one-time process. Imagine your tester finished testing your app. Then your developer implemented a new feature. Now, there is a huge chance that it might have introduced a bug. So your tester has to test the app again, and remember, on all devices! Not practical, right? There is only one solution – You need to invest in test automation!
Testing is not just about finding bugs. You need to find security flaws too. Depending on the sensitivity of data stored in your app, you need to do a security audit to ensure that your customers’ data is safe. Government regulations are becoming so strict about handling user’s data that you could land you in court and end up paying millions as fine.
Testing and Quality Analysis of your app.
Experienced software testers and automation testing strategy.
Depends on the nature of the app. Anywhere from a few days to months.
Around 30 – 40% of your total app development cost.
Cost of avoiding this step
You will be bombarded with complaints from users about your buggy software and end up spoiling your reputation
Guides and Documentations
Finally, you have built and tested your app and it’s ready to use. But wait, you or your users may not know how to use it.
Well, it happens when you are building complex apps. You are the one who described the idea. But your software has become so huge that even you don’t know how to use some features properly.
Having experience working in multiple software development projects, the most common thing I’ve to do is to repeatedly teach the customer how to use their app.
Proper documentation and user guides are necessary for any app. We are humans and our memory time span is limited for certain things that we don’t continuously deal with.
After the development team has delivered your software, they will forget how it was developed and becomes extremely harder for them to figure out technical details later. So it is important to document your app properly.
Documenting your app and preparation of user guides.
Good Technical writers
Technical writers charge around $20/Hr in the US.
Cost of avoiding this step
You will have a hard time debugging your app after some months, and extremely difficult to modify or add new features later.
Backend and Delivery Infrastructure
Your app needs to be hosted on a server in order for everyone to access it. This is an important part of software delivery.
These days, all apps are cloud-based and not on-premise. That means anyone who has access to the internet can use these apps, unlike apps that can be accessed only on a single device where it is installed.
You need a good cloud-based infrastructure to host your application. Amazon Web Services, Microsoft Azure, Google Cloud, etc are some of the reputed cloud hosting providers and they have a variety of services that you can choose depending on the nature and the number of users.
It is important to choose a reputed cloud hosting provider or else you will have to face issues in your app availability and thus the user experience.
Hosting your app’s backend on a cloud server.
Cloud infrastructure and experienced server administrators.
Recurring monthly costs ranging from $30 to $10K or more.
Cost of avoiding this step
You cannot avoid this step if your app has a backend.
You need someone to look after your app – Support, Maintenance, and Monitoring
Finally, you’ve released your app and your userbase is increasing day by day and you’re making millions every year. End of the story?
No, unless you’re lucky, it never happens. A software will never work continuously for years just like most people would imagine. This is where the role of support and maintenance comes becomes necessary.
Especially in the rapidly changing world of technology, your software can quickly get outdated. Not sure how? let me explain. Your app was built and tested to run on Android 10.0 device. And after one year, Android 11.0 was released and they made some new changes in 11.0 that are not compatible with your app. Soon, your users will upgrade their phones to 11.0 and your app will not work anymore! You’re not realizing this because you think your software will work continuously without issues until the end of the world. And soon, you’ll go out of business!
Your app is like a car or your house. It needs regular monitoring and maintenance to ensure it’s working smoothly, fix parts that are wearing out, do some enhancement to cope with the change in environment (Operating Systems), or to find out if an attacker is exploiting your app.
Most people never see the value in investing in software maintenance or monitoring unless they land in some trouble. But, at that time it will be costly and time-consuming to find support to fix your app, or it will be too late that you’ve started losing the trust of your users.
Invest in a team to keep your app healthy and to monitor it’s performance as long as you have customers. They will use manual and automated tools to keep track of your app usage and do regular bug fixing and updates to ensure your app always usable.
Keeping your app up and live for your customers.
Developers, Monitoring Tools and Support Staff.
As long as you have users.
You need to spend around 20 – 30% of your total development cost.
Cost of avoiding this step
Your app will get outdated, become buggy, become vulnerable to security threats, and become slow due to an increase in the number of users.
Now that you’ve understood the basic components that add to the real cost of building an app. However, most people don’t have any idea about these steps other than development. Just to summarise, the real costs associated with an app development project are – Ideation and Consultation, Design, Development, Testing & QA, User Guides and Documentation, Infrastructure cost, Maintenance, and Support.
Typically, a medium complexity app (say, for example, a simple version of Uber) for both Android and iOS, along with web administrator backend will cost around $50,000 and will cost you $10K annually for its maintenance and infrastructure.
You might be able to find companies and people who can develop apps much cheaper than what I’ve explained here. But there is a lesser chance of getting it delivered and the journey might not be something you’ll love to experience 😉
Privacy & Cookies Policy
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.