• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • Backend
    • Dev community
    • Carriere tech
    • Intelligenza artificiale
    • Interviste
    • Frontend
    • DevOps/Cloud
    • Linguaggi di programmazione
    • Soft Skill
  • Talent
    • Discover Talent
    • Jobs
    • Manifesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in

gabroglioLuglio 9, 2024

Cell based architecture, un salto nel buio

Backend
design pattern strutturali con java. Una guida. cell based architecture
facebooktwitterlinkedinreddit

Alcune settimane fa avevo pubblicato un articolo che menzionava l’architettura basata su cellule, vorrei scendere nel dettaglio di quello che questa architettura prevede e come possa essere implementata con alcune informazioni ulteriori.

La cellula

Sin dalla scuola primaria ai bambini viene insegnato che la cellula è il più piccolo organismo vivente, una cellula è composta di vari elementi che le permettono di eseguire le funzioni di base come ad esempio nutrirsi, respirare, immagazzinare risorse….

Recommended article
Maggio 13, 2025

Top 10 piattaforme online per fare pratica con Python

Lucilla Tomassi

Lucilla Tomassi

Backend

Una cellula è costruita per poter essere completamente indipendente, può cooperare con altre cellule per creare organismi più grandi, ed è strutturata per mantenere intatte le proprie caratteristiche ed applica una difesa di base verso gli agenti esterni.

Una cellula espleta funzioni basilari, solo l’insieme di diverse cellule (e la conseguente creazione di organismi complessi) permette di implementare funzioni più complesse: una cellula non ha le capacità di afferrare un oggetto, ma l’insieme delle cellule che formano la nostra mano rendono questa funzione disponibile al corpo umano.

Il monolite

Avendo avuto a che fare con diverse realtà di business, mi sono trovato negli anni ad affrontare il problema degli applicativi monolitici: programmi che erano sviluppati per poter dare all’utente finale un’interfaccia che lo connettesse in maniera diretta con il dato che deve trattare.

Per iniziare a smembrare i monoliti nel corso degli anni sono stati definiti diversi pattern come ad esempio MVC (Model View Controller) che iniziava a definire 3 componenti differenti che possono essere sviluppate in maniera indipendente e che interagiscono tra di loro attraverso protocolli standard di comunicazione.

Questo ha permesso di analizzare e suddividere in maniera sempre più capillare le diverse componenti di ogni applicativo, proprio come gli scienziati hanno studiato gli esseri viventi e, tramite l’uso di appositi strumenti scientifici, ne hanno individuato le componenti di base.

Iniziare dall’elemento centrale

La definizione di un’architettura capillare per implementare una soluzione di business permette di applicare ad ogni singolo componente le pratiche standard in termini di:

Scalabilità per poter estendere le risorse necessarie ad ogni singolo elemento

Governance in modo da avere costantemente sotto controllo il corretto funzionamento del singolo elemento

Manutenzione per ogni singolo elemento viene definita una versione ed il relativo processo di sviluppo e rilascio negli ambienti di dev, test e produzione

Ogni cellula non definisce al proprio interno queste componenti, ma interagisce con gli organismi che le implementano.

Componenti della cella

Ogni cella è un insieme di diverse componenti che sono necessarie a renderla un elemento unico e indipendente gli elementi all’interno della cellula possono comunicare tra direttamente tra di loro in maniera proprietaria.

La cellula espone i propri sevizi attraverso protocolli standard che vengono dichiarati da una documentazione che supporti nozioni comune per la definizione delle interfacce.

Gli organismi esterni alla cellula non conoscono gli elementi interni e non sanno con quale singolo componente interagiscano, ma si interfacciano con le risorse della cella per mezzo di un gateway che agisce sul perimetro della cellula stessa.

Antibiotici

Proprio come ogni cellula del corpo umano può essere attaccata da un virus, anche questo componente architetturale ha la necessità di difendersi da agenti patogeni. Occorre quindi definire gli opportuni criteri di autorizzazione e di sicurezza per difendere gli elementi (applicativi e dati) interni.

L’accesso tramite le API pubblicate sul gateway viene quindi autorizzato per mezzo di un Identity Provider (che può essere anch’esso definito all’esterno della cellula stessa) e la dichiarazione di appositi scopes per la distinzione dei ruoli.

Il dominio delle identità che accedono dall’esterno può differire da quello necessario all’interno della cellula stessa, dove quindi si può provvedere a sostituire il token di accesso alle singole risorse interne.

Prodotti

Di seguito alcuni elementi che possono essere utilizzati per comporre le singole cellule ed il loro scopo.

API gateway

Il layer di API che la cellula richiede anch’esso una governance per la manutenzione legata alle evoluzioni applicative e la redazione della relativa documentazione da pubblicare per i fruitori esterni.

WSO2 API Manager è il prodotto per la definizione delle API, la gestione del ciclo di vita e la dichiarazione dei criteri di sicurezza sulle singole risorse. Il profilo Micro Integrator permette di implementare le logiche di integrazione e trasformazione basate sui microservizi disponibili.

Sicurezza

In ottica security by design occorre approcciare questo argomento da diversi punti di vista. L’accesso alle API può essere validato per mezzo di un Identity Provider, l’integrazione di WSO2 Identity Server è di aiuto per la definizione delle logiche di autenticazione ed autorizzazione ed integra connettori per svariati IdP esterni.

Per non fermarsi alla sicurezza perimetrale una soluzione è quella di integrare 42Crunch, un prodotto che effettua una scansione sulla definizione delle API per individuare eventuali falle di sicurezza e fornisce un servizio di Firewall che può essere deployato in modalità sydecar per validare le API a runtime.

La piattaforma 42Crunch protegge automaticamente le API dalle 10 principali vulnerabilità di sicurezza OWASP, si può integrare nativamente con gli IDE di sviluppo, i tools di CI/CD ed il runtime delle API in modo da avere una verifica costante sulle eventuali falle di sicurezza.

Codemotion Collection Background
Dalla community
Selezionati per te

Vuoi scoprire più articoli come questo? Dai un’occhiata alla collection Dalla community dove troverai sempre nuovi contenuti selezionati dal nostro team.

Share on:facebooktwitterlinkedinreddit

Tagged as:architettura cloud Software Architecture

gabroglio
Ricopro il ruolo di Platform Engineer presso Profesia, collaboro con le organizzazioni per definire le opportune scelte architetturali. Partendo dai requisiti di business lavoro per creare soluzioni efficienti ed estensibili nel tempo applicando gli opportuni pattern basati su standard e protocolli noti.
GitHub Uncharted: Alla scoperta dei tesori nascosti di Docker con Serena Sensini
Previous Post
Angular Forms: il nuovo evento unico per i cambiamenti di stato
Next Post

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions