SlideShare a Scribd company logo
STANDARD DEV WORKFLOWSTANDARD DEV WORKFLOW
by /Stefano Corallo @argosoftware
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
CODICECODICE
Gestione del versionamento secondo un branching
model speci co: "Git flow"
Nessuna "paura" dei conflitti e dei merge
BRANCHING MODELBRANCHING MODEL
COS'ÈCOS'È GIT-FLOWGIT-FLOW ?!??!?
Git-Flow
Standard Dev Workflow
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
TOOLSTOOLS
Git e Git ow sono integrati in tutti gli IDE. Quindi la
curva di apprendimento è veramente bassa e agevolata
dai tool.
TOOLSTOOLS
Altamente Consigliati
IntelliJ IDEA Community Edition (Free)
Ant Maven
Visual Studio Code
Esempio: Risoluzione gra ca e assistita dei con itti
AMBIENTE DI SVILUPPOAMBIENTE DI SVILUPPO
(1/3) IL PROBLEMA(1/3) IL PROBLEMA HostHost
Ambienti di sviluppo diversi:
windows
linux
mac
(2/3) IL PROBLEMA(2/3) IL PROBLEMA SetupSetup
Setup molto oneroso:
da qualche ora
a qualche giorno
(3/3) IL PROBLEMA(3/3) IL PROBLEMA AggiornamentoAggiornamento
Allineamento con i server di staging/produzione:
oneroso
Librerie diverse per progetti diversi (dipendenze):
oneroso
LA SOLUZIONELA SOLUZIONE
DockerDocker
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.
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à.
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
DOCKERFILEDOCKERFILE FOR DEVELOPERFOR DEVELOPER
Cartesio
Jboss Admin: http://<DOCKER_HOST>:9990
Jboss Fronted: http://<DOCKER_HOST>:8080
docker pull registry.myargo.it/argo/dockerfiles/cartesio:latest`
docker run -p 8080:8080 
-p 9990:9990 
registry.myargo.it/argo/dockerfiles/cartesio:latest
DOCKERFILEDOCKERFILE FOR DEVELOPERFOR DEVELOPER
Wild y
Jboss Admin: http://<DOCKER_HOST>:9990
Jboss Fronted: http://<DOCKER_HOST>:8080
docker pull registry.myargo.it/argo/dockerfiles/wildfly:latest`
docker run -p 8080:8080 
-p 9990:9990 
registry.myargo.it/argo/dockerfiles/wildlfy:latest
AUTOMAZIONE BUILD E RILASCIAUTOMAZIONE BUILD E RILASCI
Standard Dev Workflow
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
AUTOMAZIONEAUTOMAZIONE FOR DEVELOPERFOR DEVELOPER
Showtime: Gecodoc
WHAT'S NEXT?!?WHAT'S NEXT?!?
DevOps Cicle Argo 2.0
KUBERNETESKUBERNETES FOR SYSADMINFOR SYSADMIN
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
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
THAT'S ALL FOLKSTHAT'S ALL FOLKS

More Related Content

PPTX
La mia prima lezione di pozioni
PDF
Con Aruba, a lezione di Cloud #lezione 30 - parte 2: 'GitLab e Cloud Server ...
PPTX
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
PDF
Tech Webinar: Firefox Developer Tool
PPTX
Introduzione ros
ODP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
PDF
TuxIsAlive
PDF
Prototipazione Low-Code con AWS Step Functions
La mia prima lezione di pozioni
Con Aruba, a lezione di Cloud #lezione 30 - parte 2: 'GitLab e Cloud Server ...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
Tech Webinar: Firefox Developer Tool
Introduzione ros
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
TuxIsAlive
Prototipazione Low-Code con AWS Step Functions

Similar to Standard Dev Workflow (20)

PDF
Continuous Integration e High Quality Code
PDF
Linux Embedded per l'automazione
PDF
Development process
ODP
Conferenza Pymaemo
PDF
Creazione componenti con Vue js
PDF
GNU Linux Programming introduction
ODP
Beryl
PDF
Total Testing in DevOps
PDF
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
PPT
node.js e Postgresql
PDF
GITT (part 1 of 2)
PDF
Installazione Qt/Qt Quick per target Android
PDF
GIT commands version control system and collaboration
PPTX
Modernizziamo IBM i con PHP
PDF
Infrastructure as Data
PPTX
Real world Visual Studio Code
PPTX
Il buon programmatore - consigli pratici per una vita felice
PPTX
Progettato per specialisti del web
PDF
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
PDF
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Continuous Integration e High Quality Code
Linux Embedded per l'automazione
Development process
Conferenza Pymaemo
Creazione componenti con Vue js
GNU Linux Programming introduction
Beryl
Total Testing in DevOps
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
node.js e Postgresql
GITT (part 1 of 2)
Installazione Qt/Qt Quick per target Android
GIT commands version control system and collaboration
Modernizziamo IBM i con PHP
Infrastructure as Data
Real world Visual Studio Code
Il buon programmatore - consigli pratici per una vita felice
Progettato per specialisti del web
Codemotion 2013: Succo di lampone: come ottimizzare JAVA e PHP su un’architet...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Ad

Standard Dev Workflow

  • 1. STANDARD DEV WORKFLOWSTANDARD DEV WORKFLOW by /Stefano Corallo @argosoftware
  • 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
  • 3. CODICECODICE Gestione del versionamento secondo un branching model speci co: "Git flow" Nessuna "paura" dei conflitti e dei merge
  • 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.
  • 9. TOOLSTOOLS Altamente Consigliati IntelliJ IDEA Community Edition (Free) Ant Maven Visual Studio Code
  • 10. Esempio: Risoluzione gra ca e assistita dei con itti
  • 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
  • 19. DOCKERFILEDOCKERFILE FOR DEVELOPERFOR DEVELOPER Cartesio Jboss Admin: http://<DOCKER_HOST>:9990 Jboss Fronted: http://<DOCKER_HOST>:8080 docker pull registry.myargo.it/argo/dockerfiles/cartesio:latest` docker run -p 8080:8080 -p 9990:9990 registry.myargo.it/argo/dockerfiles/cartesio:latest
  • 20. DOCKERFILEDOCKERFILE FOR DEVELOPERFOR DEVELOPER Wild y Jboss Admin: http://<DOCKER_HOST>:9990 Jboss Fronted: http://<DOCKER_HOST>:8080 docker pull registry.myargo.it/argo/dockerfiles/wildfly:latest` docker run -p 8080:8080 -p 9990:9990 registry.myargo.it/argo/dockerfiles/wildlfy:latest
  • 21. AUTOMAZIONE BUILD E RILASCIAUTOMAZIONE BUILD E RILASCI
  • 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
  • 24. AUTOMAZIONEAUTOMAZIONE FOR DEVELOPERFOR DEVELOPER Showtime: Gecodoc
  • 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