Developing SaaS applications in the enterprise environment requires high standards to provide customers with the performance and security they need to trust their data and processing to a cloud platform.
In Retain Technologies we develop a continuous R&D policy to apply the latest technologies in application development to our cloud asset management platform, Retain EAM. This policy allows us to develop faster and more secure applications, with greater efficiency and effectiveness, shortening the deployment times of new features and versions and with very high-quality levels. In addition, it is very important that our software can run on different platforms and devices, especially mobile ones, to provide greater mobility to the system users.
In this post we will review some of the technologies we currently use and recommend for the development of SaaS applications. Logically the use of one or other technologies will depend on the characteristics of the project and the technological solution to be implemented.
Docker is an open source tool that allows you to create and use lightweight, portable containers to run applications on any machine with a Docker installed. These containers can be used as very light and modular virtual machines, since each container includes only the minimum services to perform its function independently. Docker provides flexibility to create, deploy, copy and move them from one computer to another or from one environment to another.
Docker allows us to generate development environments identical to those of production, so that the whole team works on the same development environment, regardless of the OS in which each one usually works. In this way we avoid the dreaded “but if it worked on my computer” moments.
For example, in the case of developing or maintaining an application in Symfony, we can create a identical container with PHP, MySQL, Apache / Nginx and Mongo to the production server where our application will finally be hosted.
It therefore allows both test and production deployments to be carried out much more easily and efficiently.
Symfony is one of the most demanded open source PHP framework at this moment (together with Laravel) thanks to a huge community behind it that feeds it with improvements and updates regularly.
It can be adapted for most projects, although it is intended for large web applications. Its main advantage is that it generates code that is very easy to read, understand, extend and maintain.
Symfony brings us, among other advantages:
- Abstraction of the database.
- Standardization and speed in the developments.
- Scalability and security.
- Allows the generation of REST APIs.
- Avoids having to “reinvent the wheel” thanks to the reuse of functionalities or the integration of third party libraries.
As points against, it must be taken into account that, sometimes, the learning curve is high, or that between versions many code changes can be produced; although thanks to its elaborate and extensive documentation, it makes migration to new versions easier.
It is currently one of the most demanded JS frameworks, since Google’s support and experience during the 4 years it has been active, added to the great community that supports it, make it a very powerful, safe and reliable tool.
Angular facilitates the creation of modern web applications type SPA (Single Page Application). This means that the whole web page is loaded in the client’s browser, ensuring a much faster interaction.
As Angular is a technology that is only used for the development of the front (visible part of the application) it allows the back, where the interaction with the database is managed, to be developed in the language that each development team considers appropriate. For example, REST API calls can be made in Symfony or NodeJS.
Like Symfony, it brings:
- Standardization and speed in the developments.
- It allows the creation of reusable and easy to use modules.
The learning curve of Angular at the beginning is high, but later it is very easy to understand, use and maintain.
The appearance of this framework meant a before and after in the way of developing web applications, and today we already have other very powerful JS frameworks with great acceptance by the development community, such as ReactJS or VueJS.
A very important point in favor of this type of framework is that you get to develop applications that are usually faster than those made with other tools such as PHP frameworks.
According to Gartner Inc., 70% of interactions on the web will be through mobile devices by 2022.
Ionic was created using Angular as a base, but currently provides support for mobile application development based on the main JS frameworks mentioned above. This makes that if the development team knows some of them, it will be much easier to develop in Ionic.
The main advantage, as we have seen, is that it allows you to deploy the application on multiple devices (desktop, mobile, PWA, cars, etc.) from a single development and source code, which reduces by more than half the delivery time of applications on multiple platforms, also improving productivity and profitability of projects.
With Ionic, existing talent is better leveraged, avoiding the need to incorporate specialists on each platform. The maintenance of the software is simplified and its cost is reduced, being able to give better support as it does not require specialized personnel in native code. It should be noted that the community of web developers is 30 times larger than the communities of native apps.
Perhaps the only point against Ionic is the performance, which in a hybrid app can be slightly lower than in native apps.
MongoDB is a document-oriented database. Its main feature is that it stores data in documents rather than records. It is not a relational database, so there is no need to follow a schema. Data from the same collection can have different structures.
In this database there is no table merging, but one document can contain multiple sub-documents or collections of sub-documents. For example, in the development of an incident management system, an incident can contain inside it a subdocument with all the data of the user that created it, or a collection of subdocuments corresponding to all the parts generated on that incident.
MongoDB offers us greater speed when extracting large amounts of data and greater scalability as it does not depend on structures, which provides greater efficiency when analysing and studying the information extracted.
As disadvantages, it is important to consider that it is not the best solution for all cases, and it will depend on the type of project. In addition, migrating from relational systems to MongoDB can be quite costly.
A good solution is usually to develop applications based on MySQL or MariaDB synchronized with MongoDB and extract the data from one or another platform according to the appropriate needs.