TECNOLOGIA E ARCHITETTURA
SVILUPPIAMO SOFTWARE
SEMPRE CON TECNOLOGIE
ALL'AVANGUARDIA
.Net e C#
Per lo sviluppo cross platform, con prossimo target puntato a .Net 6
Docker e Openshift
Per creare e orchestrare container scalabili supportati dalla piattaforma offerta da Red Hat
React
e Redux
Per sviluppare Single-Page application modulari puntando sulle prestazioni
NServiceBus, Azure ServiceBus e RabbitMQ
Per implementare un'architettura Event Driven e la comunicazione asincrona tra applicazioni
RavenDB
e MS SQL Server
Costituiscono il 99% delle nostre base dati
Node.js
e npm
Il principale supporto per lo sviluppo frontend in locale
NHibernate e Entity Framework
I framework ORM utilizzati per gestire la persistenza
LE NOSTRE SCELTE
ARCHITETTURALI E TECNOLOGICHE
- EVENT-DRIVEN
ARCHITECTURE - CQRS E
DDD - SPA E
MICRO-FRONTENDS
È uno dei pilastri su cui si basa la piattaforma tecnologica CGN, attraverso il quale viene costruita la comunicazione tra applicazioni e servizi dell’ecosistema, in modo disaccoppiato. Attraverso gli eventi, le applicazioni interagiscono tra loro all'interno di flussi di lavoro automatizzati. NServiceBus, Azure Service Bus e RabbitMQ sono alcune delle tecnologie che utilizziamo, unitamente ad appositi sistemi di monitoraggio dei workflow in esecuzione.
Il pattern architetturale CQRS ci consente di massimizzare le prestazioni, mantenendo distinti ed espressivi i due modelli di dominio su cui poggiano le applicazioni. L’adozione del paradigma DDD ci porta ad identificare e modellare correttamente i bounded context, creando e condividendo con analisti ed esperti di dominio un ubiquitous language che si rivela particolarmente utile data la complessità e la specificità del dominio fiscale e contabile.
Tutte le nostre applicazioni offrono un frontend agli utenti realizzato come Single Page Application e basato su ReactJs. La progettazione della UI è coerente con il UX Design System aziendale, che offre ai team di sviluppo una suite di componenti e pattern riusabili. Sfruttiamo l’architettura a micro-frontends per scomporre un’applicazione complessa, anche dal punto di vista dell’interazione utente, in componenti più semplici riutilizzabili e distribuibili indipendentemente uno dall’altro.