Come lavoriamo

Sviluppo

Crediamo che i progetti, oltre ad essere belli esteticamente, devono essere basati su sistemi e tecnologie efficaci e performanti.

Ogni giorno investiamo tempo per migliorare le metodologie con le quali scriviamo il codice per renderlo il più possibile chiaro, semplice e leggibile per fare in modo che sia mantenibile ed aggiornabile con il passare del tempo. Per poter mettere in pratica tutto questo, facciamo nostre metodologie quali:

 

La twelve-factor app, una metodologia di sviluppo orientata alla costruzione di applicazioni software-as-a-service
DRY, Don’t repeat yourself
Principi OOP, Astrazione, Polimorfismo, Ereditarietà, Incapsulamento
TDD, Test Driven Development, sviluppo guidato dai test
MVC, Model View Controller
Conventions over configurations, sviluppare codice per fare in modo che ci siano più regole convenzionali piuttosto che configurazioni applicative
Controllo di versione, del codice, strumento indispensabile per uno sviluppo condiviso
Specializzazione, sviluppare frontend richiede strumenti (di programmazione) diversi rispetto allo sviluppo del backend, per questo crediamo in una specializzazione in questi ambiti.
Scegliere il linguaggio più adeguato, al problema da risolvere; evitiamo di utilizzare lo stesso linguaggio a prescindere dal tipo di problema da risolvere ma al tempo stesso adottare un linguaggio comune al team di sviluppo

Rilascio

Tutti i progetti che creiamo vengono rilasciati in due ambienti distinti: staging e production.
L’ambiente di staging generalmente viene utilizzato come ambiente parallelo rispetto all’ambiente di produzione, con lo scopo di verificarne le funzionalità, preparare i dati e le informazioni.
L’ambiente di produzione è invece l’ambiente che contiene funzionalità e dati “ufficiali” che sono in tutto e per tutto definitivi e pronti all’utilizzo.
La separazione degli ambienti anche a livello di revisione del codice, ci permette di gestire i rilasci del progetto in modo automatico (Continuous Integration).
Il rilascio dei progetti avviene in modalità container con l’utilizzo di Docker; per ogni applicazione/sito progetto in generale, creiamo le immagini che vengono pubblicate nel cluster Docker presente nella nostra infrastruttura.

Monitoraggio

Ogni progetto viene rilasciato in produzione e configurato per il monitoraggio. Le tipologie di monitoraggio sono essenzialmente di due tipi:

Di esecuzione
Di stato del sistema
Il monitoraggio di esecuzione serve per catturare qualsiasi tipo di errore (sia di frontend che di backend) che viene lanciato dall’applicazione, raccoglierlo nel sistema ed avvisare gli sviluppatori dell’eccezione catturata; in questo modo il team di sviluppo è immediatamente allertato qualora il software sollevi eccezioni non gestite.
Il monitoraggio di stato serve per monitorare i parametri di stato dell’applicazione quali traffico di rete, spazio disco, carico CPU, raggiungibilità, velocità di download; attraverso questa tipologia di monitoraggio, siamo in grado di essere allertati praticamente istantaneamente allo scaturire di eventi che possono rendere irraggiungibile l’applicazione.

Open Source

Utilizziamo strumenti e linguaggi open source, perché crediamo nella condivisione del codice e nella crescita che ne deriva da tale condivisione, contribuendo attraverso test e pull request ai progetti, oppure rilasciando codice scritto da noi.

Strumenti

Per ogni processo descritto, utilizziamo strumenti specifici adeguati allo scopo, selezionati grazie all’esperienza maturata nel corso degli anni:

- Ruby on Rails;
- Gitlab;
- Sentry;
- Zabbix;
- Github;
- Docker;