Archivi categoria: architettura software

Microservices

Introduzione ai Microservices di Martin Fowler. Questi gli spunti più interessanti:

  1. Rapporto tra microservices e SOA (Service Oriented Architecture). I microservices sono solo uno dei modi in cui la SOA può essere organizzata: senza bus centrale (Enterprise Service Bus), autonomi ed indipendenti.
  2. Organizzare lo sviluppo per microservices significa, prima di tutto, definire e attuale un modello organizzativo in cui ogni team lavora in modo indipendente. A occhio, maggiori sono le dimensioni del team di sviluppo, più questo modello organizzativo è sensato.
  3. I microservices hanno senso per fornire servizi di business completi. Avrebbe meno senso definire microservices puramente infrastrutturali.
  4. Per lavorare a microservices bisogna avere già una forte competenza sulla materia, sul dominio applicativo. Se questa manca, meglio sviluppare prima un monolite e poi, se opportuno, ristrutturarlo estrapolandone i microservizi.

Arc42, per documentare le architetture software

Arc42 è un framework semplice e concreto per documentare le architetture software. L’impostazione è essenziale, ma completa.

Basato su una serie di template, è stato realizzato da Gernot Starke e Peter Hruschka, ed è usabile  gratuitamente e senza vincoli. Prevede come opzione, anche se non obbligatoria, l’uso di UML.

Le caratteristiche di Arc42 vengono spiegate in questa intervista su Software Engineering Radio.

Architetture a layer, rivisitate

Focalizzare la propria attenzione su aspetti specifici, per affrontare meglio problemi complessi.

L’interazione tra utente e sistema. La logica applicativa. L’accesso ai dati. Ma affrontando un aspetto (un layer, uno strato) alla volta.

È questo uno dei vantaggi principali delle architetture a layer, come argomenta Martin Fowler in PresentationDomainDataLayering , articolo in cui discute anche le ragioni che possono indurci a creare un layer intermedio, oppure a eliminarlo.

Architetture a microservizi

Un paio di articoli recenti sullo sviluppo di applicazioni basato su servizi distribuiti.

Microservices“, di James Lewis e Martin Fowler, descrive le caratteristiche più rilevanti delle applicazioni a microservizi, le relazioni con la Service Oriented Architecture (SOA), gli aspetti organizzativi (come la necessità di non avere responsabilità distinte per sviluppo e manutenzione), gli aspetti relativi ai metodi di progettazione (ad esempio il fatto di definire i servizi basandosi su “oggetti di business” disaccoppiati, e la maggiore difficoltà di effettuare interventi di refactoring).

Fowler è poi tornato sull’argomento in “Microservices and the First Law of Distributed Objects” (dove la prima legge è “non distribuite i vostri oggetti”…), evidenziando in modo più preciso le differenze tra lo stile di sviluppo centralizzato e quello distribuito nella progettazione delle interazioni tra componenti.