Simple It, le Blog

Que gagne-t-on réellement en vendant des livres ?

Une marge Avant de devenir entrepreneur, j’étais toujours choqué de ce que l’on appelle les marges dans les produits de grande consommation. Pourquoi devrais-je payer 100 € une paire de chaussures qui a coûté quelques euros à fabriquer à l’autre bout du monde ? Maintenant, c’est un problème auquel je suis souvent confronté, à une moindre échelle, avec les livres que nous produisons.

Dans mon exemple de chaussures, la somme de quelques euros, c’est le prix d’achat. Contrairement à ce que l’on peut penser naturellement, le magasin ne va pas encaisser 97 € aussi facilement. Mais alors où va le reste de mon argent ? J’aimerais vous partager mon expérience afin de tenter d’expliquer pourquoi le prix d’achat est différent du prix de revient, ce qu’est la fameuse marge et où sont les différences dans le cas du livre.

Il y a plusieurs charges qui coûtent de l’argent à une entreprise qui édite un livre comme nous. Je vais les passer en revue dans ce billet en me basant sur le plan suivant :

  • Les coûts variables : impression, frais de port, frais bancaires…
  • Les coûts fixes : locaux de l’entreprise, salaires, ordinateurs, électricité…
  • Ce qu’il reste à l’éditeur : quelle est la différence entre la marge brute et la marge nette ? Quelle part a l’éditeur dans la vente d’un livre ?

… Lire la suite ►

Le SdZ au Congo-Brazzaville

congo_sipeec2.jpg

Nous savons, grâce aux statistiques et à plusieurs messages que nous recevons, que le Site du Zéro dépasse largement les frontières de son pays d’origine. Ainsi, nous avons de nombreux visiteurs belges, suisses, canadiens et de plus en plus de visiteurs du Maghreb : le Maroc est en passe de devenir le second pays après la France ! On constate plus globalement une évolution assez nette du continent africain depuis quelques années.

Après les pays du Maghreb, qui représentent à eux seuls 75% des visites du continent africain, on enregistre une évolution notable dans d’autres pays francophones :

  • Côte d’Ivoire
  • Sénégal
  • Cameroun
  • Congo
  • Madagascar
  • Bénin

… Lire la suite ►

Recherchons développeur web symfony et responsable éditorial

La rentrée arrivant, nous avons dû dire au revoir à Vincent Primault (CDD) et Martin Wetterwald (stage), en n’oubliant pas de les remercier pour tout le travail qu’il nous ont aidé à abattre durant la période estivale.

Les bureaux se vident certes un peu, mais se remplissent à nouveau avec l’arrivée de Vincent Paulin (alternance) que nous accueillons depuis le début de la semaine. En quelques jours déjà, il a pu prendre le relai sur des projets de Martin. D’autre part, Jiyong (CDI), présent depuis le début du mois, nous aide déjà de façon conséquente à réaliser les illustrations dont nous avons besoin, comme les couvertures du livre et les icônes du site, mais aussi à réfléchir à l’ergonomie générale du site en vue d’une grosse amélioration. Nous aurons l’occasion d’en reparler.

Pour nous épauler, nous avons besoin de nouvelles personnes. Nous ouvrons les candidatures dès aujourd’hui pour 2 postes à pourvoir pour la fin de l’année :

  • Un développeur web symfony : la migration avance mais nous avons besoin de plus de monde. Nous recherchons tout particulièrement une personne sensible aux méthodes agiles de développement : tests unitaires et fonctionnels, intégration continue, DRY, conventions de style…
  • Un responsable éditorial web et livres : comme vous avez pu le constater, nous nous préoccupons de mettre en avant les cours des membres ces derniers temps sur le site. Nous aidons et conseillons sur certains cours, ce qui nous prend un temps non négligeable. De plus, nous commençons à travailler sur de nouveaux ouvrages dans la collection Livre du Zéro par de nouveaux auteurs (LaTeX sera le premier). Nous avons besoin d’une personne ayant de très bonnes capacités rédactionnelles et humaines pour conseiller et guider les auteurs afin de respecter l’esprit Site du Zéro et Livre du Zéro.

Vous trouverez ces offres ainsi que celle qui était déjà en cours sur la page des recrutements. N’hésitez pas à transmettre l’information autour de vous et à postuler si vous pensez correspondre à l’un des profils recherchés !

Mise en ligne des nouveautés du SdZ avec Capistrano

Note de Mathieu : comme nous l’avons signalé à toutes les personnes qui travaillent chez Simple IT, nous leur proposons d’intervenir de temps en temps sur le blog pour présenter les projets sur lesquels ils travaillent. Le but est de varier les sujets et les styles d’écriture en donnant la parole aux employés. Vincent Primault (alias vincent1870), développeur sur le Site du Zéro, est le premier à rédiger un tel billet. Vous le trouverez ci-dessous.

Depuis un an et le billet annonçant la fin du bricolage, de nombreuses choses ont encore évolué sur notre façon de travailler en interne. Ce billet est là pour présenter aux curieux les rouages de notre nouvelle méthodologie de développement, qui se veut plus professionnelle et adaptée à la taille grandissante de Simple IT et du code du site.

Retour sur les faits

Pour rappel, le site est depuis le début de l’année en plein chamboulement puisque nous sommes en train de porter tout le code vers le framework web symfony (dans sa version 1.4). Cette décision n’a pas été prise à la légère et permet d’assurer à terme plus de flexibilité dans le code et d’accélérer le développement de nouveaux modules en utilisant toute la batterie d’outils que symfony met à notre disposition.

Cette démarche de rationalisation du développement ne se résume cependant pas à l’adoption de symfony. Depuis le début de l’été, nous n’avons pas chômé, et plusieurs réflexions importantes ont été commencées concernant la façon même dont nous développons et les processus entourant l’écriture. Le reste de ce billet va traiter de la nouvelle organisation mise en place concernant la mise en ligne des nouveautés sur le Site du Zéro.

Git c’est bien

Comme vous le savez sans doute si vous avez lu les billets précédents, le code source du Site du Zéro est versionné via le logiciel Git. Cet outil indispensable pour nous permet de conserver une trace de toutes les modifications apportées au code du site, quand et par qui. L’outil est actuellement bien exploité, nous utilisons notamment beaucoup le système de branches qui nous permet de cloisonner nos développements et de pouvoir changer rapidement de sujet de travail sans rien perdre.

Si je parle de Git c’est qu’on l’utilise en fait actuellement presque trop, en sortant de ses attributions d’origine. C’est en effet lui qui nous permet actuellement de réaliser nos déploiements. Pour rappel, le déploiement est l’action consistant à faire passer du code de la machine d’un développeur vers le serveur de production, Lisa, qui dessert les pages que vous voyez tous les jours. Une fois le code déployé, tous les visiteurs y ont accès, c’est donc une étape essentielle ! Utiliser Git pour cela est très simple et rapide : il suffit de créer une copie du dépôt sur le serveur de production, de lancer la mise à jour des sources et tout est en ligne quasi-instantanément. Si cet usage est courant, il atteint cependant assez vite ses limites, comme nous nous en sommes rendu compte nous-mêmes.

En effet, depuis la mise en place de symfony, la procédure de mise en production a commencé à s’alourdir . Tout d’abord, il a fallu systématiquement nettoyer le cache de symfony en lançant une commande à l’issue de la mise à jour des sources. Cela peut sembler anodin, mais cela faisait une tâche de plus à la charge du développeur. Et il suffit de l’oublier pour que nos changements soient alors non fonctionnels, et qu’on perde alors du temps à trouver d’où vient le problème (c’est du vécu !).

Les problèmes ont continué lorsque récemment nous avons lancé le projet d’exploiter enfin correctement l’ORM fourni avec symfony (Doctrine) en utilisant ses migrations. En deux mots, c’est un outil très pratique permettant d’automatiser les modifications sur la base de données telles que l’ajout de colonnes ou de tables, avec des facilités telles l’annulation des modifications simplement. Cependant cela fait encore quelques commandes de plus à lancer à chaque déploiement, et ce sur la version de développement et de production. La démarche commençait alors à s’alourdir considérablement, nous avons donc cherché du côté d’outils permettant d’industrialiser ces manœuvres.

Capistrano c’est mieux

Je m’intéressais à ce type d’outils depuis un moment, et je lorgnais déjà de fait sur un outil bien précis, répondant au doux nom de Capistrano. Ces outils ne sont pas très nombreux, et ceux matures le sont encore moins. Capistrano est un outil codé en Ruby et assez réputé dans le domaine. Pour l’anecdote il est notamment utilisé par Twitter pour ses déploiements.

Il faut savoir que Capistrano n’est pas réellement un outil de déploiement, mais que ce n’est en fait qu’un outil de réplication de commandes sur un parc de serveurs. Pour l’instant nous n’avons qu’un serveur web de production, mais cela tombe bien car le jour où nous en aurons plus (ce qui arrivera fatalement un jour ou l’autre pour parer au trafic croissant du Site du Zéro) nous serons déjà prêts ! Actuellement nous nous en servons donc “juste” pour exécuter un jeu de commandes à la chaine.

Il est conçu à l’origine pour déployer des projets Ruby on Rails (un framework de développement web codé en Ruby) mais s’adapte très facilement à d’autres projets. Nous avons pour notre part largement repris la base fournie par le projet Capifony qui était une extension de Capistrano à des projets symfony. Adapter Capistrano nécessite juste de connaitre un peu le Ruby, mais cela se fait très bien. Pour tout dire je n’avais jamais touché au Ruby avant de devoir personnaliser Capistrano, et cela s’est très bien passé, les outils de base couplés à Capifony se laissent facilement prendre en main. Je regrette juste que le site de Capistrano soit un peu anarchique et qu’on ait du mal à trouver ce que l’on cherche.

Lors de ses déploiements, Capistrano conserve un historique de toutes les releases du produit. Cela permet par exemple de pouvoir revenir à une version antérieure de façon instantanée. Il gère également des ressources partagées entre toutes les versions, telles que des fichiers de configuration ou des uploads. Le déploiement en lui-même se fait de façon très simple en lançant une simple commande en console. Pour les curieux, cela donne en pratique une arborescence similaire à ce qui suit sur le serveur de production :

  • current
  • releases
    • 20100820090035
    • 20100822090214
  • shared
    • config/databases.yml
    • web/uploads
    • log

Chaque sous-dossier dans le répertoire releases contient une extraction du code source de Git à une date donnée (indiquée par le nom du répertoire). current est en fait un simple lien pointant vers la dernière version (c’est pour ça que revenir en arrière est très simple, il suffit de changer le lien !). Enfin shared contient toutes les données partagées, avec par exemple les fichiers de configuration symfony, les uploads ou les logs.

Le serveur web va chercher le site dans current. Comme il s’agit d’un lien symbolique, il utilise en fait le code source de la release sur laquelle il pointe.

Et avec Webistrano…

Accueil de Webistrano

Pour nous combler pleinement, nous voulions un outil capable d’enregistrer un détail de l’activité de déploiement et capable d’agir différemment en fonction de l’environnement ciblé. Capistrano à la base est flexible à volonté, mais ne permet pas forcément d’organiser son code de façon très propre, et réaliser une personnalisation en fonction de l’environnement ciblé aurait été assez compliqué à gérer pour quelqu’un qui ne connaissait que très peu le Ruby comme moi.

Une solution s’est alors naturellement imposée : Webistrano. C’est en fait une simple interface web (codée en Ruby on Rails) pour Capistrano. Les avantages sont alors multiples :

  • La configuration de l’outil se fait de façon très agréable. Cela ne dispense absolument pas de connaitre le fonctionnement de Capistrano mais c’est bien plus visuel que la version en Ruby.
  • L’outil gère de façon native la différenciation des environnements de déploiement (par exemple pour nous ceux de pré-production et celui de production).
  • Le code de personnalisation est bien mieux organisé, on a la possibilité de partager des bouts de code à travers les projets et les environnements.
  • Le déploiement se fait de façon graphique, on récupère les logs en temps réel.
  • Chaque déploiement est enregistré, on en garde une trace, et on peut très facilement revenir en arrière si quelque chose se passe mal.
  • Capistrano est exécuté sur le serveur hébergeant Webistrano, ce qui permet d’éviter à chaque développeur d’installer et configurer Capistrano en local. Tout est centralisé et partagé.

L’outil s’est jusqu’ici remarquablement bien comporté, s’avérant très ergonomique et surtout accélérant le temps passé à configurer Capistrano. Nous avons juste eu à le modifier très légèrement pour nos besoins, mais de façon très mineure (c’était principalement de l’adaptation pour symfony et un peu de personnalisation visuelle).

Une nouvelle rigueur dans le processus de développement

Tout cela nous amène à avoir une nouvelle rigueur dans le processus de déploiement. Actuellement l’intégration en production se fait tout au long de la journée par les développeurs. Ce processus devient peu gérable, les déploiements devant être planifiés. Nous allons donc progressivement tendre vers une rationalisation des déploiements, qui seront faits environ une fois par jour, à heure fixe, tout en gardant une certaine souplesse dans le cas d’une réelle urgence comme une correction de faille.

De plus, les environnements sont maintenant différenciés plus fortement. Nous exploitons un trio classique d’environnements :

  • La version de développement du site, qui est notre version locale. Chaque développeur travaille avec sa version du code et sa base de données. C’est sur cette version que les nouvelles fonctionnalités sont implémentées.
  • La version de pré-production du site (aussi appelée de recette) qui est une copie du site en ligne (hébergée sur les serveurs de Simple IT mais non accessible au public). Elle se comporte de façon identique en tout point à la production. Cela nous permet de prévenir au maximum les risques lors du moment fatidique.
  • La version de production, accessible à tous à l’adresse http://www.siteduzero.com, est le produit fini.

C’est une évolution de plus dans nos processus internes, et certainement pas la dernière. L’objectif est réellement d’automatiser au maximum de façon à décharger les développeurs des tâches répétitives. D’autres réflexions sur des sujets similaires sont dans les tuyaux, vous en saurez plus prochainement !

Allers et venues

Les bureaux de Simple IT n’auront jamais accueilli autant de monde qu’en juillet. Il faut dire que l’arrivée au 1er juillet de 4 nouvelles personnes n’y aura pas été étrangère ! Comme je l’annonçais les renforts sont bel et bien arrivés. Avec eux :

  • Ludovic, en poste en CDI à plein temps pour travailler sur le développement web et en particulier sur la migration symfony.
  • Vincent, développeur bénévole sur le SdZ et le site des zCorrecteurs depuis un moment, en CDD pour l’été.
  • Martin, développeur bénévole comme Vincent sur le SdZ et le site des zCorrecteurs, en stage pour l’été.
  • Kévin, qui fait son grand retour, non pas en tant que développeur mais en tant que responsable des systèmes d’information (qu’on pourrait traduire en “débogage de code XML-RPC généré par des modules OpenERP en Python faiblement documentés” ;o).

Le mois de juillet aura été particulièrement prolifique, avec de grandes avancées sur la migration symfony et l’ouverture des chantiers les plus complexes : nouveau système de sessions, de statistiques, nouvelle boutique, etc. Quant à Kévin, il a ardemment travaillé à la mise en place et la personnalisation d’OpenERP, et se concentre ces derniers jours sur la mise en place d’un système de backups centralisé, unifié et automatisé pour l’ensemble de nos services.

Les départs

Cependant, tout a une fin et c’est justement cette semaine que 2 stagiaires en développement nous quittent. Je profite de ce billet pour les remercier chaleureusement de leur travail et de leur bonne humeur, car nous avons passé de très bons moments avec eux et le résultat a été au rendez-vous !

Louis

Louis Louis a en particulier beaucoup oeuvré sur la boutique et sa migration symfony. Il a développé des compétences insoupçonnées en rétro-ingénierie avec Wireshark ces dernières semaines pour la faire communiquer avec OpenERP. ;o)

Joe

Joe

Joe, qui a entre autres travaillé sur la problématique des migrations SQL et sur la mise en place des fixtures pour Doctrine, qui va permettre aux autres développeurs de travailler avec plus de souplesse. Auparavant, il a aussi mis en place le système d’alertes de Zozor qui peut maintenant communiquer via une bulle.

Les arrivées

C’est donc une petite page de l’histoire de Simple IT qui se tourne, mais les bureaux ne vont pas vraiment désemplir pour autant. En effet, nous avons accueilli depuis une semaine Alexandre (alias Calizéro), qui travaille désormais comme Community Manager à plein temps.

Début septembre, c’est Jiyong qui nous rejoindra comme graphiste et ergonome. Il a déjà travaillé comme graphiste sur la couverture des LdZ, nos affiches, le logo et bien d’autres choses. ;o)