Technologies
Symfony VS CMS
Symfony offers several advantages compared to a Wordpress, Magento or Drupal type CMS:
Light and high performance
When creating a project with Symfony, the basic minimum is included. All the other components required for the project must be added as the need occurs. The aim is to have the lightest possible application possible and therefore speed-up execution. Classic CMS have many modules that will never be used by the project and will slow down use.
Business above All
Symfony removers as many technical issues as possible to concentrate on what really matters in the application: the operational code. Symfony enables the creation of tailored code, that is really adapted to the issues of the job in hand. It is best to simply code the precise function you need rather than find a CMS plugin that will provide a more-or-less equivalent solution.
Agility
It is easy to further develop an application created with Symfony. As seen in the previous point, the business-centred approach enables new business-specific functions to be created more easily than on a classic CMS.
Security
Symfony integrates efficient security to prevent XSS, CSRF, etc attacks. Classic CMS have a major downside: basic administrative functions can be accessed (/wp-admin for example for a Wordpress, or /admin for others). Because of this and because of the URL nomenclature that is known by all, hackers can use tools to force administrative functions in a known CMS.
Clear structure
The structure and arborescence of Symfony files is governed by convention and similar from one Symfony project to another. Because of this, a new contributor can easily find their way around, making application maintenance more fluid and efficient. A Symfony developer can intervene quickly on any project without being lost, even if they didn't work on it before.
Testable
The creation and execution of unit tests (see chapter on tests) in Symfony is very simple. This will enable of maximum coverage of functions to avoid regression during updates.
API First
The API first approach has many advantages:
Total separation and decoupling of the business logic (server side) and the UI (Customer side).
All the functions on the site are also available - from the start - via a Web API (and therefore useable by partners and clients). Thanks to the API REST, all types of client (native mobile app, heavy Windows client, specific connected objects...) can be considered and the business logic doesn't need to be re-coded.
The creation of SPA and mobile applications is extremely simplified. The business code has not been duplicated or re-implemented.
Integration with internal third-party tools (software packages, CRM, etc). and the later implementation - if necessary - of a structure based on micro-services will be even easier.
React Native
React Native enables the creation of multi-platform applications (iOS, Android) using the javaSccript language and based on the React framework.
The advantages compared to application design in native code:
- The applications produced with React Native are compatible with both iOS and Android.
- Development is based on the JavaScript language: a very popular language in the Web sector. Because of this, the development costs will be low and they are easier to maintain.
the advantage compared to the use of a Ionic or Cordova type framework: performance. Ionic and Cordova are based on the use of "Webview", meaning that the application is run in an Internet browser. React Native enables the code to be "converted" into code native to the system, enabling performance (and user experience) at the same level as native applications.
Elasticsearch
We use specific software for searches: Elasticsearch. It is a search and indexing engine. Searches are not limited to finding a word in a text, there is autocomplete, suggestions, relevance, etc. Elasticsearch is specialised software: It takes into account the roots of words, manages singular/plurals, typos, weights according to certain criteria, etc. These functions are available in each language.
It has a very good extension and customisation capacity, such as the synonym management, personalised functions, etc. The Elastic Suite including Elasticsearch, Logstash and Kibana, will be used to meet all search, statistics and log issues.
Elasticsearch is a reliable and very fast search engine that can easily index terabytes of data and complete searches in them in milliseconds.
All the project information that could be found with a search will be stored in it: products, formulas, statistics pages, etc.
Hexagonal Architecture
Hexagonal architecture is a software architecture that separates the business code from the application, its management (Web page, script, etc) and its infrastructure (database, services, etc).
This enables the core of the application to be isolated, develop it and test it independently. Another advantage is to also to be able to change the infrastructure if necessary without impacting the application's function. In practice, this means a system of intermediate layers between the application core code and other software layers. It groups all the models and business logic and enables a powerful modular structure when implementing as there is no link between the business code and the technical choices made.
RabbitMQ
Some tasks, such as sending an e-mail or the saving a business event in a database use up performance, in execution time and slow down the loading of pages for the final user.
To solve this problem, the tasks that do not require instant action will therefore be executed asynchronously.
To do this, the tool RabbitMQ will be used. RabbitMQ is a message broker, a service that enables several applications to communicate together via a system of message queues, no matter which programming language is used by these applications.
Have this article been useful?