The constant technological growth over the last few years leads to a strong need for software development making applications increasingly more complex. In this sense, a very important question arises: Can we guarantee a reduced cost and low maintenance effort with larger applications? The answer is: Yes, with a correct definition of the application architecture!
It sounds simple, but for many years this was not settled on most companies. It was privileged the speed of delivery not being considered the evolution potential of the product. When it became imperative to add new features there was realized that speed did not bring advantages in terms of performance, development potential, and scalability of applications.
Can you imagine a whole book written on the same page? No? That is exactly what happens in many applications where multiple concepts are mixed on the same “page” making it difficult to read and impossible to grow. When an application is structured this way, we cannot even have a clear perception of the number of features that can stop working if only one line is changed.
Most of the applications developed in OutSystems, have an application with several modules and the separation of the logical layers existing in the proposed model (4 Layer Canvas) is carried out within the same application. With this approach we quickly notice the application becoming slower to publish and slower to make passages between different environments, causing a decrease in productivity.
It is therefore crucial to start by reflecting and analyzing how we intend to build our application, what are the functional concepts and how we can group our modules into different applications. This prior reflection will allow the development to be carried out progressively, without impacts on the work of the rest of the team and making it possible to be expanded in the future.
At first, we see an application structure that does seem to have problems at the architectural level, but can we clearly answer what each module of this application consists of? Can we estimate the number of screens needed for each module? What about how many tables are we going to have in a single Core layer module?
A correct abstraction of functional concepts, the separation of monolithic applications in different applications and modules and a constant analysis of implementation are the keys so that, in the long run, an application can be maintained and evolved without an increased cost for each new requirement that is needed to be implemented. In this way, we will have several applications, with different life cycles and independent management, and can even have specific teams for each of the solutions, minimizing the number of dependencies, the time required for each implementation and thus increasing productivity.
In short, a reflected and committed work of application architecture is fundamental to ensure the flexibility and quality of the application, ensuring its scalability, high performance, and possible adaptation in an agile way.
What's Your Reaction?
Romil is Outsystems consultant at Affinity. With a degree in computer engineering, Romil is completely passionate about what he does. In addition to being a dedicated professional, he likes to share knowledge and never says no to a challenge!