Sviluppo in linguaggio Ruby on Rails
Software

Il linguaggio Ruby

Ruby è un linguaggio di programmazione ad oggetti, nato nel 1993 come progetto personale di Yukihiro Matsumoto alias Matz(fonte Wikipedia).
Oltre a prendere spunto da linguaggi di programmazione orientati agli oggetti già esistenti (Smaltalk,Lisp,Perl), il linguaggio è stato creato da Matz con lo scopo di aiutare i programmatori ad essere più produttivi facendo in modo che il processo di sviluppo sia anche piacevole; utilizzare un linguaggio con una sintassi semplice ed intuitiva, con una core lib completa, aiuta lo sviluppatore a concentrarsi sugli aspetti di processo di un’applicazione e limitare la necessità di risolvere problemi legati al linguaggio. Ad oggi (Settembre 2024) Ruby è giunto alla versione 3.3.5 con implementazioni del linguaggio che spaziano dalla VM Java con Jruby ad Web Assembly

Le librerie dell’ecosistema Ruby sono generalmente disponibili attraverso l’uso di RubyGems, il catalogo ufficiale.
Con Rubygems si possono trovare tutte le librerie sviluppate pronte per essere integrate nella nostra applicazione.
Tra le librerie (o meglio gemme, trattandosi di pietre preziose…) c’è Ruby on Rails, framework MVC creato da David Heinemeier Hansson, che ha contribuito alla diffusione del linguaggio Ruby oltre ad aver aiutato milioni di aziende con lo sviluppo delle proprie applicazioni, aiutandole a crescere, progressivamente, man mano la complessità aumentava.

Ruby on Rails

Come detto Ruby on Rails è un framework (soprattutto, ma non solo) MVC (Model View Controller) che si fonda su regole precise, o meglio chiamata dottrina.

  • Ottimizzato per la felicità degli sviluppatori: quale se non questo può essere il primo articolo della dottrina? Ruby on Rails è l’emanazione del pensiero del linguaggio Ruby
  • Convenzione prima della configurazione: perché dover discutere in ogni progetto su come chiamare i campi di un database? E’ veramente importante decidere su post_id o postId ? Queste (sono solo un esempio) ed altre sono le convenzioni che vengono definite dal framework; ciononostante si può naturalmente adeguare secondo i propri standard.
  • Lo chef ti aiuta a scegliere: lasciare che qualcun’altro assembli il tuo stack. E’ simile al punto 3 ma ad un livello più alto, non quello della configurazione ma quello delle librerie e come queste interagiscano tra di loro.
  • Nessun paradigma: Non solo MVC ma un insieme di modi e metodi diversi, a seconda delle esigenze e dei problemi da risolvere.
  • Mettere in risalto il codice scritto bene: Scrivere codice non serve solo per essere compresi da una macchina o da altri programmatori, ma, nell’essenza, anche per crescere personalmente, cercando di trovare un modo più bello per risolvere un problema. Tale pratica non è dedita ai soli sviluppatori, ma comune all’ingegno umano; qualcuno mette in dubbio l’eleganza della formula E=mc2 ?
  • Fornire coltelli affilati: fornire coltelli affilati, strumenti funzionanti, per permetterne un uso proficuo e produttivo del framework.
  • Valore di un sistema integrato: un unica applicazione monolitica che risolve un unico problema rimandando successivamente l’aumento di complessità di un (per esempio) sistema a micro-servizi.
  • Progresso rispetto alla stabilità: no, la frase: “se funziona, non toccare”, non si adatta per niente a questa filosofia. Piuttosto, non abbiate paura a cambiare, facciamo in modo che il sistema aiuti a cambiare e sia più semplice cambiare che non farlo.
  • Un coperta per tutti: la discussione, il confronto sono fonte di ispirazione e di nuove soluzioni, nuovi cambiamenti, per questo Ruby on Rails è di tutti e per tutti.

Ruby e Ruby on Rails, contribuiscono con successo allo sviluppo di progetti riconosciuti a livello mondiale. Questi sono solo alcuni: Basecamp, Github, Shopify, Instacart, Zendesk, Airbnb, Stripe,

Un'applicazione… per la vita

Condivido tutti i punti della dottrina ma vorrei soffermarmi sul punto 8, che potrebbe essere ovvio in modo disarmante ma che nasconde in realtà una complessità non indifferente.
Preferire infatti il cambiamento, o meglio, mettere la necessità di cambiamento tra i primi posti dello sviluppo di un'applicazione, è una pratica che delinea le caratteristiche dell'applicazione stessa:

  • Sicurezza: un prodotto continuamente aggiornato è un prodotto più sicuro
  • Manutenibilità: un prodotto continuamente aggiornato è un prodotto che continua a essere mantenibile
  • Longevità: un'applicazione di facile aggiornamento avrà una vita più lunga
  • Resilienza: un'applicazione propensa al cambiamento sarà più pronta ad accogliere nuove funzionalità o modifiche a quelle già presenti

Avere tra i prerequisiti la necessità e la propensione al cambiamento significa:

  • Sviluppo dei test: lo sviluppo dei test permette di velocizzare il processo di aggiornamento applicativo rendendolo più facile e gestibile
  • Containerizzazione: gestire il deploy dell'applicazione in modo containerizzato, evita di dover gestire dipendenze con lo stack che ospita l'applicazione, sia nel caso di deploy in singola V.M. si in caso di deploy con un orchestratore (K8s), facilitando l'aggiornamento di VM o dell'orchestratore sottostante

La nostra esperienza

Abbiamo scelto di adottare Ruby e Ruby on Rails per lo sviluppo di applicazioni custom in ambiente web dal 2008, partendo da Ruby on Rails version 2.8 fino alla versione 7.0, sviluppando con successo nel corso del tempo, applicazioni nei più diversi ambiti:

  • Applicazioni gestionali a workflow custom Documentali
  • Gestionali collegati a database IBM iSeries Sviluppo di servizi Api (Rest, GraphQL) Applicazioni e-commerce
  • Configuratori di prodotto
  • CMS
  • CRM
  • Raccolta dati dispositivi remoti Sviluppo di server TCP Integrazioni con servizi esterni Portali

L'esperienza maturata in più di 15 anni di utilizzo di questi strumenti, ci permette di realizzare progetti di applicazioni custom, a misura del cliente, garantendo caratteristiche che riteniamo fondamentali per considerare il prodotto un buon prodotto: affidabilità, scalabilità, sicurezza, longevità.

Jury Ghidinelli 15 Settembre 2024