*

Pycon otto

firenze

6-9 aprile 2017

Delivery isn't magic anymore: distribuisci le tue applicazioni!

Arriva il giorno in cui, dopo aver scritto un’applicazione, vuoi distribuirla. Che ci vorrà mai?

Ti accorgi ben presto che il passo è incredibilmente cervellotico e complicato. Sistemi di packaging progettati per uccidere un maintainer, tonnellate di distribuzioni di Linux simili ma con piccole, letali differenze le une dalle altre, conflitti di versioni, configurazioni che vengono sovrascritte ad ogni aggiornamento.

Ad un certo punto incominci a pensare che il compito di mettere a disposizione un software con una modalità di installazione sana, che consenta un facile aggiornamento e una facile configurazione, e funzioni su varie distribuzioni di Linux, sia un compito che soltanto una grande azienda con personale dedicato possa permettersi, e preferisci andare sul sicuro suggerendo un:

git clone https://github.com/mysomething/myGreatProject
cd myGreatProject
./build.sh

Con il risultato che i tuoi utenti non aggiornano l’applicazione, si lamentano perchè non compila, non gira, perché perdono la configurazione dopo un git pull, perché hai spaccato qualcosa dopo un aggiornamento del branch, ecc. ecc.

Un’altra delivery è possibile. Anche per i comuni esseri umani, magari semplici manutentori di progetti open source.

In questo talk illustrerò, con particolare riferimento ai progetti scritti in Python, alcuni accorgimenti per mettere a punto la propria applicazione, nonché come sfruttare alcuni strumenti quali Docker e FPM per:

  • Mantenere distinti codice, stato e configurazione, per rendere un’applicazione distribuibile ed aggiornabile senza giramenti di testa.
  • Rendere modulare l’applicazione, evitando dipendenze eccessive che potrebbero infastidire l’utente che voglia riusarla in maniera diversa.
  • Creare facilmente pacchetti per svariate distribuzioni Linux dallo stesso codice sorgente.
  • Testare automaticamente i pacchetti nel contesto della distribuzione destinazione.
  • Mettere a disposizione i pacchetti sul web con un meccanismo fruibile tramite i normali sistemi di aggiornamento previsti dalle distribuzioni.

Lo scenario specifico illustrato sarà quello delle distribuzioni Linux basate su DEB ed RPM (es. RedHat, Fedora, Debian, Ubuntu) ma il meccanismo generale è applicabile ad altri Linux ed ulteriori sistemi di packaging.

Guarda il video completo della presentazione


Comments

  1. Gravatar
    URL dei progetti di esempio presentati nel talk:

    https://github.com/alanfranz/packaging-django-cms-instance

    https://github.com/alanfranz/packaging-awscli

    — Alan Franzoni,

Nuovo commento