What is monolithic architecture?

Monolithic architecture is known as a traditional approach to software development that is based on a single-unit design. This means that a program is basically a self-contained and independent unit. It consists of a database, client-side user interface, and server-side application. As it is possible to clearly see, a monolithic app is a single logical executable that usually does not interact with other services.

monolithic architecture

 

Pros & cons of monolithic approach

Let us take a closer look at the advantages and disadvantages that come with an app built as a monolithic unit.

Pros

  • Testing — monolithic apps are built as a single indivisible unit. This means that running end-to-end tests on them is easy.
  • Debugging — with a monolithic app, all the code is located in one place. Therefore, the debugging process is rather straightforward.
  • Deployment — simplicity plays an important role in a monolithic architecture. As there is only one file or directory, there is no need to handle lots of deployments thus simplifying the whole process.
  • Development — monolith architecture is an industry standard when it comes to app development. That is why it is possible to easily find a team of professional engineers to develop a monolithic app.
  • Business analysis — since almost all developers are proficient in developing monolithic apps, it is possible to allocate the saved time to business analysis and bring additional value to the client.
  • An excellent solution for a limited budget — monolithic apps cost less to develop in comparison to microservices, making them a great choice for clients who want to save money.

Cons

  • Single development stack — a monolithic app is developed through the use of one development stack, meaning that the development team is limited in its choice of the tools to complete some tasks.
  • Complications caused by scaling — monolithic apps can quickly become difficult to handle as they become larger.
  • Reliability — a single bug can cause a crash of the whole application.

How we work with monolithic applications

Here at ABCloudz, we have developed our own approach to working with monolithic applications. Our teams use a prepared .Net Core back-end architecture template for the projects that are based on AWS services.
Such a blueprint can be customized and implemented to solve particular challenges within individual projects. Instead of reinventing the wheel, our developers can use template to implement solutions that were tried and tested in successful projects, thus considerably reducing delivery time.
This template is quite useful and includes a plethora of various services such as:

  • AWS S3 service — this service is offered by Amazon and it allows us to store objects and access them through a web interface;
  • Authorization manager — allows us to access functions such as registering users, logging in, logging out, changing passwords, and so on;
  • External account processor — provides an ability to perform a login through a social network such as Facebook, Google, and Microsoft;
  • Image processor — serves as a manipulation tool for modifying different types of images;
  • Notification manager — this service provides access to features such as sending emails, push notifications, SMS messages, and so on;
  • Permission manager — this tool allows granting or revoking permissions to access particular parts of the application;
  • JWT token service — it allows us to generate Bearer access and refresh tokens;
  • User service — an interface for managing app users;
  • Request handler — this service allows us to acquire all the details of the incoming requests such as authorization data, PATH, and so on;
  • Custom policy handler — it applies policies to the requests that can provide more control over the process such as circuit breaker, wait and retry, timeout, and bulkhead isolation.

As it is possible to clearly see, our template is packed with features and this allows our teams to significantly reduce the time and cost of back-end development for web and mobile apps. To be more specific, we are able to save around 40 to 80 hours on development! This time can be allocated to other important matters such as business analysis.

Practical case of a monolithic app development and technologies that we used

The client has contacted the ABCloudz team with a request to develop a video conferencing app to enhance the quality of personnel communication between medics from different teams.
That is why we have created an Android app for video calls that is suited for special environments that are typical for the healthcare industry. Basically, this app allows you to run one-on-one calls as well as conferences while providing a vision of who is working in a particular room at the moment.

We decided to proceed with a monolithic approach to developing the app.

monolithic architecture practice case
As a result, our team used .NET Core 3.1, PostgreSQL database and AWS S3 as the main media data storage. ABCloudz team also utilized several third-party services:

  • Twilio SDK;
  • AWS SDK.

You can find the scheme for the back-end part of an app below:


Monolith app structure

Challenges Connected to Monolithic Architecture in an App

While there were no real challenges regarding the back-end template because of our team’s extensive experience, we had a notable challenge — to integrate the architecture with custom-made Android devices of Chinese production. Not every device was supporting SignalR and working well with video, audio and mic.
We overcame the challenge and configured SignalR real-time notification logic for managing devices and company statuses. This way, it was possible to create a stable connection to group calls.
In order to avoid loading API servers with unnecessary tasks and increase throughput, our team decided to use AWS S3 via Cognito to upload files. As a result, files were uploaded directly to AWS S3 Bucket from the Angular via AWS Cognito to reduce API server load and increase uploading speed. Therefore, we created a secure pathway for uploading files that is characterized by satisfying speed and performance.

How We Benefit From Using Monolithic Architecture in Our Projects

Here are some of the most obvious benefits that we enjoy from using monolithic architecture:

  • Simplicity in development — we can effectively use current development tools and IDEs is to support the development of monolithic applications;
  • Simplicity in deployment — we only need to deploy the file or directory hierarchy on the proper runtime;
  • Simplicity in scaling — we are able to scale the application just by running multiple copies of the application and supporting them with a load balancer.

As a result, both back-end developers and those involved in integration are familiar with a monolithic architecture. This, in turn, transforms into a quicker project launch as we save at least 15-20% of the time in comparison to launching a product from scratch. It should also be stated that the use of template architecture allows us to reduce the number of required back-end developers and DevOps engineers engaged in the project.

When Do We Recommend Using Monolithic Architecture?

ABCloudz team recommends using a monolithic approach to architecture creation if a requested product is comparably simple in design and functions. So, monolith architecture is great for projects that do not require more than 1,000 hours of development time.
Monolithic architecture is a perfect choice for clients who are on a limited budget and are not looking to include a large number of services in their app. Proceeding with a monolithic approach can free up funds that can be allocated elsewhere:

  • In-depth business analysis;
  • Detailed architectural solution;
  • MVP app launch strategy.

Final Thoughts

Monolithic architecture is widely used in the majority of corporate business applications. This approach to app development is quite effective for simpler and smaller-scale apps thus making it a viable option 70% of the time. A video conferencing app is an excellent example of a straightforward solution that can benefit from a monolithic architecture.
If you are considering developing a monolithic application, contact us. ABCloudz will get your app up and running faster with our pre-made templates. Take advantage of our accumulated knowledge and experience to the fullest.

Ready to start the conversation?