Upgrade to Pro — share decks privately, control downloads, hide ads and more …

È facile gestire un progetto Django se sai come farlo!

20tab
March 22, 2019

È facile gestire un progetto Django se sai come farlo!

Per fortuna Django di per sé rende la vita molto facile nello sviluppo di applicazioni web: un admin pronto, un framework completo e tante funzionalità e librerie che ti permettono di sviluppare progetti in modo corretto e veloce.

Ma anni di errori su molti progetti sviluppati in ambito web mi hanno permesso di coniugare molte best practices per lo sviluppo e la gestione di un progetto Django, automatizzando i miei processi.

Ansible, uWSGI, Jenkins e ovviamente Django sono gli strumenti che ci permetteranno di avviare un nuovo progetto in meno di un minuto.

In questo talk vedremo come fare un setup di un progetto da zero che includa automatismi per il deploy, passando per un sistema di continuous integration, usando tool tra i più diffusi nel mondo open source. Tutto questo in pochissimi passaggi.

20tab

March 22, 2019
Tweet

More Decks by 20tab

Other Decks in Programming

Transcript

  1. www.20tab.com/startup-growth [email protected] Corpo livello uno Corpo livello due Corpo livello

    tre Corpo livello quattro Corpo livello cinque Titolo Testo www.20tab.com 20tab.com @raffaelecox | @20tab rafleze | 20tab /raffaele-colace [email protected] È facile gestire un progetto Django se sai come farlo! @raffaelecox | @twentytab
  2. www.20tab.com Co-founder @ 20tab srl Python Senior developer (PHP, Java,

    Swift, C#, …) Agile Passionate (Lean startup, growth hacking, …) Colace Raffaele
  3. www.20tab.com • a DBA • a DevOps • a front-end

    developer • a doctor Nobody understands me! What do you mean? https://psico.it I’m not:
  4. www.20tab.com • Fast project setup • Simple and standard structure

    • Multi-platform • Best practices • Simple deploy Goals
  5. www.20tab.com • Fast project setup • Simple and standard structure

    • Multi-platform • Best practices • Simple deploy • Respecting our methodologies Goals
  6. www.20tab.com Start project with: • different approaches • different configurations

    • different structures and without a method for: • automatic deploy • quality assurance Problem
  7. www.20tab.com Continuous integration https://it.wikipedia.org/wiki/Integrazione_continua Nell'ingegneria del software, l'integrazione continua (continuous

    integration in inglese, spesso abbreviato in CI) è una pratica che si applica in contesti in cui lo sviluppo del software avviene attraverso un sistema di versioning. Consiste nell'allineamento frequente (ovvero "molte volte al giorno") dagli ambienti di lavoro degli sviluppatori verso l'ambiente condiviso (mainline).
  8. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  9. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  10. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  11. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  12. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  13. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  14. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  15. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  16. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  17. www.20tab.com •Mantieni un repository del codice sorgente •Automatizza il build

    •Rendi il build auto-testante •Tutti eseguono commit alla baseline tutti i giorni •Ogni commit fa partire una build •Fai in modo che il build sia veloce •Eseguire i test in un clone dell'ambiente di produzione •Fai in modo che sia facile prendere le ultime versioni dei pacchetti •Ognuno può vedere i risultati dell'ultimo build •Automatizza i rilasci https://it.wikipedia.org/wiki/Integrazione_continua CI - Common practices
  18. www.20tab.com •django-admin startproject --template • default requirements.txt • quick setup

    on local environment • quick start on local uwsgi server The second approach
  19. www.20tab.com The second approach • standard process • local server

    configuration • remote servers configuration • CI configuration • deploy process
  20. www.20tab.com • Development • User Acceptance Testing • Staging •

    Production (same as Staging) Required environments • develop • develop • master • master
  21. www.20tab.com • Quick installation on local environment • Quick and

    standard configuration • Simple requirements management • Some automatism for front-end development • Simple testing process • CI configuration • Deploy process Needs
  22. www.20tab.com “Ho trovato il talk estremamente chiaro e ben strutturato.

    E' stato molto interessante vedere il vostro workflow. Sarebbe interessante vedere come gestite la fase di testing.” Past feedback bit.ly/us-to-test
  23. www.20tab.com/startup-growth [email protected] Corpo livello uno Corpo livello due Corpo livello

    tre Corpo livello quattro Corpo livello cinque Titolo Testo www.20tab.com 20tab.com @raffaelecox | @20tab rafleze | 20tab /raffaele-colace [email protected] Thank you! @raffaelecox | @twentytab