Quali strumenti utilizzare per migliorare il workflow di uno sviluppatore? Oggi strumenti come git, docker, gitlab e kubernetes ci aiutano a gestire meglio il nostro tempo permettendoci di focalizzarci di piu' sul codice che sulla customizzazione dell'ambiente.
2. COSACOSA
Codice
Utilizzo di git come unico strumento di
versionamento
Ambiente di sviluppo
Utilizzo di un ambiente comune, uguale per tutti i
componenti del team e quanto più simile possibile
all'ambiente di produzione.
Automazione della build e del rilascio (CI/CD)
Utilizzo di Gitlab per l'automazione dei task
ripetitivi per il build e deploy dell'applicazione
7. Git-Flow
branch utilizzo
master codice attualmente in produzione
hotfix utilizzato per i bug- x del codice in
produzione
develop contiene lo sviluppo corrente
feature nuove funzionalità non ancora pronte
per essere integrate in develop
release utilizzato per preparare il rilascio di una
nuova versione
8. TOOLSTOOLS
Git e Git ow sono integrati in tutti gli IDE. Quindi la
curva di apprendimento è veramente bassa e agevolata
dai tool.
12. (1/3) IL PROBLEMA(1/3) IL PROBLEMA HostHost
Ambienti di sviluppo diversi:
windows
linux
mac
13. (2/3) IL PROBLEMA(2/3) IL PROBLEMA SetupSetup
Setup molto oneroso:
da qualche ora
a qualche giorno
14. (3/3) IL PROBLEMA(3/3) IL PROBLEMA AggiornamentoAggiornamento
Allineamento con i server di staging/produzione:
oneroso
Librerie diverse per progetti diversi (dipendenze):
oneroso
16. DOCKERDOCKER
Build: Tutte le dipendenze dell'applicazione sono
contenute nel Dockerfile che crea l'immagine
dell'applicazione
Ship: Le immagini create sono disponibili sul
registry che può essere privato:
registry.myargo.it
Run: L'immagine in esecuzione è chiamata
container.
17. DOCKERDOCKER FOR DEVELOPERFOR DEVELOPER
Nessuna competenza sistemistica per creare
l'ambiente, ambiente già con gurato .
La modi ca dell'ambiente è un'operazione semplice,
posso fare tutte le prove e customizzazioni che
voglio in maniera semplice in modo da poter
sperimentare in libertà.
18. DOCKERFILEDOCKERFILE FOR DEVELOPERFOR DEVELOPER
Sencha Cmd
FROM openjdk:7-jre-alpine
LABEL Author="Stefano Corallo <scorallo@argosoft.it>"
Company="Argo Software"
RUN apk update && apk upgrade && apk --update add
ruby build-base libstdc++ tzdata bash ttf-dejavu freetype fon
ENV SENCHA_VERSION 6.5.1.240
RUN wget http://cdn.sencha.com/cmd/${SENCHA_VERSION}/no-jre/Sench
-O senchacmd.zip
&& unzip senchacmd.zip
&& rm senchacmd.zip
&& chmod +x SenchaCmd-${SENCHA_VERSION}-linux-amd64.sh
RUN ./SenchaCmd-${SENCHA_VERSION}-linux-amd64.sh -q -dir /opt/Sen
RUN rm SenchaCmd-${SENCHA VERSION}-linux-amd64 sh && chmod +x /op
docker run -v $PWD:/code registry.myargo.it/argo/dockerfiles/senc
23. AUTOMAZIONEAUTOMAZIONE FOR DEVELOPERFOR DEVELOPER
Si abbatte la possibilità di errori nel rilascio
Non è necessario sapere dove sia/siano i server (no
Putty, SSH, SFTP...)
Bisogna solo pushare il codice nel repository.
Il sistema di CI/CD si occuperà di tutto il resto
27. KUBERNETESKUBERNETES FOR SYSADMINFOR SYSADMIN
Kubernetes: deployment automatico, scalabilità e
gestione di applicazioni containerizzate.
Gitlab: utilizzato per il CI
Build, test, creazione e deploy dell'immagine
Kubernetes:
Rolling Update dell'immagine
28. KUBERNETESKUBERNETES FOR DEVELOPERFOR DEVELOPER
Lo sviluppatore effettua il push sul repository
Gitlab: compile, test?!?, package war
Gitlab: build nuova immagine docker contenente il
war dell'applicazione
Gitlab: deploy su cluster Kubernetes
Kubernetes: effettua il rolling-update
dell'immagine nel cluster