Stiamo iniziando il nostro primo progetto con Spring
e java
stack web. Questo progetto riguarderà principalmente la riscrittura di un ERP / CRM piuttosto ampio da Zend Framework
a Java
. Un fattore importante nella mia domanda è che provengo da php
territorio, dove le cose (in termini di qualità) tendono ad apparire diverse rispetto a java
world.
Fatcs :
- ci saranno 2-3 sviluppatori,
- almeno uno degli sviluppatori usa Windows, resto usa Linux,
- c'è una macchina remota basata su Linux, che dovrebbe gestire le istanze di test e produzione,
- dopo aver lottato con il codice legacy buggy, vogliamo introdurre buone pratiche di programmazione e sviluppo (CI, test, codice pulito e così via)
- client: modifiche logiche interne e frequenti,
- mischia, schieramenti giornalieri
Quello che voglio ottenere è un buon flusso di lavoro sul maggior numero possibile di fasi di sviluppo (coding - > commiting - > testing - > deploying). Il problema è che non l'ho mai fatto prima, quindi non so quali sono le migliori pratiche per farlo.
Quello che ho finora è:
- codice degli sviluppatori localmente,
- c'è un'istanza di
vagrant
su ogni macchina di sviluppo, gestita dapuppet
. Contiene le stesselinux
,jenkins
etomcat
versioni come macchina di produzione, - durante la codifica, lo sviluppatore si distribuisce alla macchina vagabonda,
- dopo l'unione locale al ramo
test
,jenkins
ai test degli handle vagabondi, - quando tutto va bene, lo sviluppatore spinge il commit e si unisce
-
jenkins
sulla macchina remota richiama il commit datest
branch, esegue test e così via, - se tutto sembra verde,
jenkins
distribuisce atest
tomcat
istanza - La distribuzione in produzione è manuale (anche se può essere eseguita utilizzando gli script di aiuto) quando la logica di business viene testata da altre divisioni e tutto sembra a posto per il cliente.
Ora, la vera domanda: sopra ha senso? Cose di cui non sono sicuro:
- Macchina remota: non ci saranno problemi con due (o anche tre, come potrebbe essere necessario a Jenkins) istanze della stessa app su
tomcat
? - Usare
vagrant
per svilupparsi suphp
environment è solo una morsa. Non è questo eccessivo utilizzo durante l'utilizzo di Tomcat? Voglio dire, c'è una maggiore probabilità chetomcat
agisca allo stesso modo su ogni macchina? - C'è la sensazione di avere
jenkins
locale su vagabondo?