mai 28

A l’heure où j’écris ce billet, les 12 dernières places de Bargento 2 sont en train de se vendre à un rythme « soutenu ». Le deuxième opus de Bargento se jouera donc à guichet fermé, aucun billet ne sera vendu sur place le jour J. Seules les personnes munies d’une place pourront accéder à la salle.

Je tiens à remercier ici tout ceux qui ont participé à cet effort de construction de Bargento 2. Les 240 clients, professionnels, freelances et passionnés ainsi que Varien et Zend, pourront échanger très largement autour de Magento lors de ce rendez-vous de la communauté FR.

Afin d’éviter tout malentendus, nous avons communiqué très tôt sur Bargento 2, prévenu tout le monde, afin que tous les intéressés puissent réserver leurs places en temps et en heure. Que ceux qui ne pourront pas venir car ils s’y seront pris trop tard pour acheter leurs billets ne s’en veuillent pas trop, il y aura un troisième Bargento, ce n’est donc que partie remise !

Pour des raisons de sécurité, d’accords préfectoraux et de capacité d’accueil de la salle, nous ne pourrons pas accueillir ce qui n’auront pas réservé de billets. Il est donc inutile d’arriver à l’improviste sur place, la salle est pleine, on ne prendra aucun risque sur ce point afin de garantir la sécurité et le confort de tous !

ERRATUM : Suite à un bug de la billeterie qui nous a fait quelques doublons, il reste en réalité encore 30 places à saisir. (Maj du 29/05/09 à 11h20)

écrit par Philippe Humeau \\ tags: ,

mai 22

Introduction


Cet article est le premier d’une série de 3 sur la configuration d’un infrastructure Magento complète, comprenant pour l’exemple un serveur qui sera Firewall/Reverse proxy/Load Balancer, deux autres qui seront des Serveur Web frontaux et un quatrième qui sera en charge de la base de données.

Plan des posts

1/3 : Configuration du firewall, du load balancer et du Rproxy
2/3 : Configuration des serveurs Web (APC / Apache / PHP)
3/3 : Configuration de la base de données (Mysql)

Le setup de l’infrastructure Magento

archi de baseInternet, routeurs et hop, on tombe sur quoi ?

Le Firewall, reverse proxy, load balancer.

Le premier élément réellement intelligent et puissant sur lequel on va pouvoir travailler, le premier serveur quoi. Parfois l’élément Firewall est séparé et repose sur une appliance en amont mais dans le principe, si vous faites dans le full opensource, vous aimez netfilter et donc le firewall de Linux.

C’est par ailleurs un excellent Firewall, je vais donc l’intégrer à ce petit tuto et même démarrer par là !

Pour cet exemple et le paramétrage des fichiers de configuration, le firewall/RP/LB est en 192.168.1.1, les serveurs Web sont en 192.168.1.2 et .3 et la DB est en 192.168.1.4 et le magasin « virtuel » s’appel www.demostore.fr.

Enfin, cote ip publique, j’ai utilisé 33.44.55.66 comme étant celle de demostore.fr et 88.77.111.222 comme étant celle des admins. Vous trouverez ces paramètres dans les fichiers de configuration du firewall, du reverse proxy et du load balancer, il faudra les modifier pour vos besoins.




Points non couverts dans ces 3 articles

Je vais me la jouer un peu à la Ruquier, donc ce soir, on ne recevra pas, euh pardon, dans cette série de 3 articles, on ne verra pas :

  • Comment faire de la redondance mutli datacenter avec BGP et les synchros de sites & de DB
  • Comment séparer les flux de bases de données en écriture & lecture sur deux DB
  • Comment faire du Master/Master Master/Slave ou du Cluster en Mysql
  • Comment isoler le backoffice en terme de performances sur les serveurs frontaux
  • Comment isoler le backoffice en terme d’accès aux bases de données

On ne verra pas tout cela car :
D’une part parce que cela serait très long et très complexe à expliquer et que les compétences nécessaires pour faire le tour du sujet sont très vastes. D’autre part parce que ca va déjà faire un bon volume à rédiger et donc que ca va prendre du temps. Et enfin parce que ces points sont très critiques sur le terrain commercial et qu’ils sont actuellement des avantages en faveur de ma société vis à vis de ses concurrents.

Vu que la concurrence dans le milieu de l’infogérance Magento est assez active, ma société NBS System ne peux pas se permettre de révéler ses tous derniers tricks ou ses toutes dernières optimisations pour l’infogérance ou l’hébergemnt de Magento, mais ce qui sera décrit dans les 5 articles correspond à ce que nous utilisions fin décembre 2008, donc des configurations tout à fait décentes et efficaces.

En plus mes collègues bossent en ce moment même avec Zend pour faire un papier très complet sur les performances et l’optimisation avec ZAS (Zend Application Server), je ne vais donc pas dévoiler de secrets avant la publication officielle au Bargento 2.

Préambule sur GRSEC/PAX

Autre point, c’est peu décrit dans cet article mais plus dans un autre dont je donne le lien et aussi sur le net : GRSEC + PAX c’est l’assurance vie de vos serveurs. Ce n’est pas une option : c’est un pré-requis. Grsec/Pax impose de recompiler le kernel, tache un peu complexe quand on a pas l’habitude mais le couple vous protège à 99,999% contre tous les overflow, les off by one et autres cochonneries de ce genre. Que ce soit apache, mysql, php, squid, memcached, apc etc… tous ces applicatifs peuvent avoir un jour une faille de sécurité. Grsec c’est l’assurance que même si ca se produit (et ca se produira), vos serveurs ne seront pas compromis.

Le Firewall


Configuration simple

J’ai réalisé, il y a (très) longtemps de cela, un petit tutoriel pour prendre Iptables & Netfilter en main. Il est incomplet, très vieux, contient des erreurs ou des abbérations que je n’ai pas eu le temps de corriger dans les scripts mais les explications et schémas sont corrects. Vous remarquerez au passage ma maîtrise considérable dans la création de page Web, celle-ci à faillit avoir de nombreuses récompenses pour l’utilisation audacieuse des CSS, mais finalement le jury a préféré un autre site (curieusement).

Ceci étant, ce que l’on souhaite faire ici est assez simple :
- Interdire tout par défaut (comme tout firewall décent)
- Authoriser spécifiquement les connexions d’administration depuis nos IP
- Permettre d’accéder directement aux serveurs derrière également depuis nos IP

Attention, il existe de très nombreux tricks à mettre en place pour avoir le top du top, dans le /proc/sys/net/ipv4, afin d’ajouter des règles anti DOS, d’ajuster la stack IP pour la gestion des connexions demi ouvertes, gérer la réduction des timeouts, et puis aussi par des règles pour loger les attaques, ajouter des systèmes de sondes/IDS etc…

C’est un firewall assez basique que je vais exposer ici. Pour de très fortes charges, il faudra également vérifier les capacités de NAT de la machine qui repose sur un système de buckets, lui même calculé en fonction de la RAM de la machine. Il faudra également redonder la machine, etc… (Mais avant que vous en soyez là, vous pourrez largement vous payer les services de personnes qui voient très bien de quoi je parles)

Préparation du Kernel :

  1. On télécharge les patchs de GRSEC ici, ici (et en option le patch pour iptables ici)
  2. On télécharge le kernel qui va avec la version de grsec ici
  3. On détar/dézip les archives et on applique les patchs (bzip2 -d kernel*; tar xvf grsec*;patch -p0 < gr*.patch)
  4. On ajoute deux ou trois tools qui risque de manquer : install libncurses-dev ncurses-dev make gcc paxtest gradm2 chpax
  5. On configure le kernel (make menuconfig), voici l’ultra minimum :
    - Pas de support des modules, tout en statique (ca évite l’insertion de backdoor)
    - networking/networking options/netfilter/ip:netfilter configuration/activer la majorité des options
    - Security options / Grsec: activez tout sauf dans kernel auditing juste les relocations et forks, dans Pax mettez tout.

C’est une config ultra minimaliste. Pour plus d’info de nombreux sites parle de la compilation du noyau, le howto iptables est un peu plus précis aussi mais c’est trop long à expliquer pour avoir une place ici. Après, de nombreuses petites ou grands optimisations peuvent être effectuées au niveau du noyau, les résultats, du coté performances, comme du coté sécurité s’en ressentiront. Disons que si vous avez correctement configuré votre kernel avec pax et grsec, normalement les autres options par défaut sont rarement débiles.

Pour le firewall à proprement parler, on va faire simple dans un premier temps :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/bash
# short, simple, incomplete, not really commented iptables script for Debianed firewalls/rproxy/load balancers by Philippe Humeau (c) 2009 NBS System, lord Rusty forgive me, amen
 
IPTABLES="/sbin/iptables" 
 
case "$1" in
start) 
 
date=`date +'%b %d %k:%M:%S'`
ADMIN_IP="88.77.111.222" # &lt;-------------- Change me !
SERVERS_IP="192.168.1.0/24"
SERVERS_WEB1="192.168.1.2"
SERVERS_WEB2="192.168.1.3"
SERVERS_DB="192.168.1.4"
INET="eth0"
SERVERS="eth1"
 
echo "$date -- Starting Firewall --" &gt;&gt; /var/log/kern.log
 
echo -e "-&gt; \033[40m\033[1;31mSetting Default Policies to DROP \033[0m &lt;-"
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP 
 
echo -e "-&gt; \033[40m\033[1;33mFlushing all rules &amp; tables \033[0m &lt;-"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -t nat -Z
$IPTABLES -t nat -X
$IPTABLES -N LOG_DROP
$IPTABLES -A LOG_DROP -m limit --limit 6/h --limit-burst 1 -j LOG --log-tcp-options --log-prefix 'Dropped: '
$IPTABLES -A LOG_DROP -j DROP
$IPTABLES -N syn-flood
$IPTABLES -A syn-flood -m limit --limit 10/s --limit-burst 10 -j RETURN
$IPTABLES -A syn-flood -j DROP 
 
echo -e "-&gt; \033[40m\033[1;34m Set kernel networking tweaks \033[0m &lt;-"
echo 0 &gt; /proc/sys/net/ipv4/ip_forward
echo 1 &gt; /proc/sys/net/ipv4/ip_dynaddr
echo 0 &gt; /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 &gt; /proc/sys/net/ipv4/tcp_timestamps
echo 1 &gt; /proc/sys/net/ipv4/tcp_syncookies
echo 0 &gt; /proc/sys/net/ipv4/conf/all/accept_redirects
echo 2 &gt; /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 &gt; /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 16384 &gt; /proc/sys/net/ipv4/ip_conntrack_max
echo 1 &gt; /proc/sys/net/ipv4/conf/all/log_martians
echo 30 &gt; /proc/sys/net/ipv4/tcp_fin_timeout
echo 2400 &gt; /proc/sys/net/ipv4/tcp_keepalive_time
echo 0 &gt; /proc/sys/kernel/printk
echo 1800 &gt; /proc/sys/net/ipv4/tcp_keepalive_time
echo 0 &gt; /proc/sys/net/ipv4/tcp_window_scaling
echo 0 &gt; /proc/sys/net/ipv4/tcp_sack
echo 64 &gt; /proc/sys/net/ipv4/ip_default_ttl
echo 2048 &gt; /proc/sys/net/ipv4/ip_queue_maxlen
echo 1 &gt; /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 &gt; /proc/sys/net/ipv4/tcp_ecn
 
echo -e "-&gt; \033[40m\033[1;33m INPUT RULING \033[0m &lt;-"
$IPTABLES -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $INET -s $ADMIN_IP -j ACCEPT
$IPTABLES -A INPUT -i $SERVERS -p tcp --dport 11211 -j ACCEPT # memcached
$IPTABLES -A INPUT -i $SERVERS -s $SERVERS_IP -j ACCEPT        # accept très (trop) générique pour les requêtes des serveurs au rp/lb/fw
$IPTABLES -A INPUT -p ICMP -i SERVERS -s $SERVERS_IP -j ACCEPT
$IPTABLES -A INPUT -p ICMP -i lo -j ACCEPT
$IPTABLES -A INPUT -i $INET -s $SERVERS_IP -m limit --limit 3/m -j LOG_DROP # "Spoofed packet: "
$IPTABLES -A INPUT -f -m limit --limit 3/m --limit-burst 1 -j LOG_DROP # "Frag packet: "
$IPTABLES -A INPUT -i $INET -p icmp -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP: "
$IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/m --limit-burst 2 -j LOG_DROP # "SSH loggin attempt"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 3/m --limit-burst 5 -j LOG_DROP # "Stealth XMAS scan"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 3/m --limit-burst 5 -j LOG_DROP --log-prefix "Stealth XMAS-PSH scan"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -m limit --limit 3/m --limit-burst 5 -j LOG_DROP # "Stealth XMAS-ALL scan"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN -m limit --limit 3/m --limit-burst 5 -j LOG_DROP # "Stealth FIN scan"
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 3/m --limit-burst 5 -j LOG_DROP # "Stealth SYN/RST scan"
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 3/m --limit-burst 5 -j LOG_DROP # "Stealth SYN/FIN scan(?)"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -m limit --limit 3/m --limit-burst 5 -j LOG_DROP # "Stealth Null scan"
$IPTABLES -A INPUT -p tcp --dport 0 -m limit --limit 6/h --limit-burst 1 -j LOG_DROP # "Port 0 OS fingerprint"
$IPTABLES -A INPUT -p udp --dport 0 -m limit --limit 6/h --limit-burst 1 -j LOG_DROP # "UDP port 0 OS fingerprint"
$IPTABLES -A INPUT -p tcp --sport 0 -m limit --limit 6/h --limit-burst 5 -j LOG_DROP # "TCP source port 0"
$IPTABLES -A INPUT -p udp --sport 0 -m limit --limit 6/h --limit-burst 5 -j LOG_DRop # "UDP source port 0"
$IPTABLES -A INPUT -p tcp -m multiport --sports 20,21,22,23,80,110,143,443,993,995 -m limit --limit 6/h --limit-burst 1 -j LOG_DROP # "Napta/smurfing/Drd/Dos"
$IPTABLES -A INPUT -i $INET -p tcp ! --syn -m state --state NEW -j DROP # "drop TCP connexion wich doesn't start by a syn"
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -i $INET -p tcp --syn -j syn-flood 
 
echo -e "-&gt; \033[40m\033[1;32m FORWARD RULING \033[0m &lt;-"
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INET -o $SERVERS --dport 80 -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -i $INET -o $SERVERS --dport 443 -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -o $INET -i $SERVERS --dport 20 -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -o $INET -i $SERVERS --dport 21 -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -o $INET -i $SERVERS --dport 22 -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -o $INET -i $SERVERS --dport 25 -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -o $INET -i $SERVERS --dport 80 -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -o $INET -i $SERVERS --dport 443 -p tcp -m state --state NEW -j ACCEPT 
 
echo -e "-&gt; \033[40m\033[1;32m OUTPUT RULING \033[0m &lt;-"
$IPTABLES -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p ICMP -j ACCEPT
$IPTABLES -A OUTPUT -p TCP --dport 20 -j ACCEPT
$IPTABLES -A OUTPUT -p TCP --dport 21 -j ACCEPT
$IPTABLES -A OUTPUT -p TCP --dport 22 -j ACCEPT
$IPTABLES -A OUTPUT -p TCP --dport 25 -j ACCEPT
$IPTABLES -A OUTPUT -p UDP --dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -p TCP --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -p UDP --dport 123 -j ACCEPT
$IPTABLES -A OUTPUT -p TCP --dport 123 -j ACCEPT
$IPTABLES -A OUTPUT -p TCP --dport 443 -j ACCEPT
 
echo -e "-&gt; \033[40m\033[1;33m Masquerading \033[0m &lt;-"
$IPTABLES -t nat -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
$IPTABLES -t nat -A POSTROUTING -i -o $INET -j MASQUERADE
 
echo -e "-&gt; \033[40m\033[1;32m Firewall Setup complete, activating Forward \033[0m &lt;-"
echo 1 &gt; /proc/sys/net/ipv4/ip_forward 
 
echo -e "------------------------&gt; \033[40m\033[1;32mEOF : End of Firewall \033[0m&lt;-----------------------"
;; 
 
stop)
echo -e "\033[40m\033[1;31m----------------------&gt; Shutting down Firewall ! &lt;----------------------\033[0m"
echo " "
IPTABLES="/sbin/iptables"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -t nat -Z
$IPTABLES -t nat -X
echo 0 &gt; /proc/sys/net/ipv4/ip_forward
echo "-&gt; DONE ! &lt;-"
;;
 
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
 
esac
exit 0


Quelques points :
- N’oubliez pas de durcir tous vos noyaux de serveurs, tout spécialement celui-ci, avec le patch GRSEC pour le kernel Linux. (ca doit aussi être décrit dans le howto de mémoire).

- Si on veut être plus méchant, au lieu de DROP on peut utiliser TARPIT si on a compilé iptables avec, ca fait un bel effet sur la machine attaquante !

- Si le scipt ne charge pas c’est que j’ai fais un faute de frappe quelque part, corrigez là :-) Si il ne charge pas parcequ’il manque des target, ajoutez les dans le noyau au moment de sa compilation.

Le Reverse Proxy


Introduction

Le Firewall est une fonction en soit est très peu consommatrice car, sur un noyau linux, c’est embarqué. Netfilter et son application de pilotage iptables sont des outils très puissants et très économes.

Dans le cas qui nous préoccupe, c’est d’autant plus vrai qu’on va filtrer très peu de chose, ce n’est pas non plus le firewall du pentagone, on va juste protéger les accès d’administration. Sur notre beau serveur, on a dépensé 0,000001% de la capacité CPU, que faire du reste ?

Hummmmm du [email protected], du calcul de Pi, un serveur Quake 3, du Seti project : non !

On va faire un reverse proxy et un load balancer qui eux peuvent commencer à occuper un peu la machine sur ses 99,999999 % de temps CPU restant.

Le reverse proxy, c’est une histoire un peu plus complexe. Si on part sur une solution simple, Squid est très capable. Pour de la dentelle, qui nécessite aussi une optimisation du code pour en tirer le plein partit, Varnish est une solution plus costaud mais réellement plus longue à mettre en place. On va donc ici s’atteler à concevoir un Squid correcte.

Rôle

Le rôle du reverse proxy c’est ca :
rp stats

Réduire les accès aux serveurs Web en les allégeants de tout ce qui n’a pas de valeur ajouté, tout ce qui n’est pas généré. J’ai pris volontairement une page très lourde pour la démonstration.

En l’occurence on va cacher :

  • Le HTML
  • Les CSS
  • Les images
  • Les fichiers Javascript

et forcément, le serveur Web, ca lui fait du bien. En résumé, il se concentre sur les requêtes Ajax et le PHP, il laisse les transferts « de base » au Rproxy. Evidemment, un tour de magie de ce type, ca consomme un maximum en RAM car il faut tout stocker en RAM pour aller vite. Si on doit charger chaque éléments depuis le disque dur, c’est plutôt lent. Un bon reverse proxy a donc beaucoup de RAM et un processeur correct, sans plus puisque la charge processeur est faible.

Au final, même si l’exemple ici, un peu exagéré, montre un gain de 97%, on gagne quand même en général au minimum 75% de trafic en moins vers le ou les serveurs Web. Donc qu’on ait un serveur Web ou plusieurs, le reverse proxy est in-dis-pen-sable.

Une autre optimisation intelligente sur ce point est à faire au niveau du code. Un fichier JS, un fichier CSS et pas des millions, ca change des choses. Du coup, concaténer tout cela intelligemment, c’est un plus non négligeable. Un gars s’est pris la tête à faire le boulot pour vous et encore mieux, il en a fait un plugin Magento, que demande le peuple ? Au fait ca s’appel Fooman speedster module et, depuis l’invention de la fénéantise, c’est un des outils les plus indispensable pour optimiser sans se fatiguer.

Installation de Squid

Vous êtes des gens biens, vous avez une Debian.

Vous pouvez aussi être des gens bien et ne pas avoir de Debian mais dans ce cas vous savez installer une tarball ou un package. Il y a même des gens bien qui travaillent avec OpenBSD par exemple, ils ont toute ma considération mais je ne ferai pas de howto pour ;) (Il n’y a plus de gens bien sous HPUX rassurez moi ?)

Le coté « à la main », je sais faire aussi mais, personnellement, j’adore APT et DPKG :)

Attention, on se concentre, installer Squid ce n’est pas simple sous debian :

~> su (on passe root car on est jamais loggé en root par défaut)
~> apt-get install squid

Ok on respire, on a fait le plus dur. Un petit café pour se récompenser s’impose, bravo, vous avez bien bossé ! (merci aux gars de Gnu aussi). Ca c’est fait, Squid est installé, on souffle, on respire, c’était dur mais la vie est dure parfois.

Configuration de squid en reverse proxy Magento

Phase 2, on essaye de faire croire aux patrons qu’on est payé à faire quelque chose de balaise et incompréhensible, qui mérite probablement une augmentation énorme mais qu’on va se contenter de 10% et une voiture de fonction : on édite le fichier de configuration.

Bon Squid c’est un proxy et un reverse proxy. En gros ca permet dans un cas comme dans l’autre de gérer un cache pour que les fichiers régulièrement demandés soient dans un cache rapide, mémoire de préférence, plutot que redemandés voir ré interprétés par le serveurs Web. Ca allège énormément les serveurs dans le cas du reverse proxy. Le proxy cache les réponses des serveurs Web aux browsers http pour les acheminer au client sans les redemander. Le reverse proxy lui fait l’inverse (d’où le reverse), il stocke les réponses les plus souvent envoyées par le serveurs aux clients afin de servir ceux-ci sans demander quoique ce soit aux serveurs Web.

Bref Squid c’est complexe, énorme, un fichier de conf de base ca fait dans les 7000 lignes avec les commentaires, je vous livre donc ici une version expurgée des commentaires, juste préparer pour du reverse proxy et dont toutes les fonctions ne sont pas activées, juste les principales. Encore une précision, quand vous utilisez un reverse proxy, n’oubliez pas que votre serveur Web ne verra plus toutes les requêtes… Eh oui, c’est bien le but d’ailleurs. Donc ce qui est intercepté doit être minutieusement loggé pour pouvoir avoir des stats et compléter celles des serveurs Web sous Apache.

Allez, voici la configuration :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Squid sooooo basic configuration for Magento, by Philippe Humeau &amp; Adrien Urban (c) 2009 NBS System
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 443		# https
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
icp_access deny all
htcp_access deny all
 
http_port 192.168.1.1:80 transparent name=proxy_int_IP
http_port 33.44.55.66:80 transparent name=ip_demostore
hierarchy_stoplist cgi-bin ?
 
cache_mem 6144 MB
maximum_object_size_in_memory 8 MB
memory_replacement_policy heap lfuda
cache_dir null /tmp
 
 
access_log /var/log/squid3/access.log squid
access_log /var/log/squid3/access-apache.log combined
refresh_pattern (cgi-bin|\?)	0	0%	0
refresh_pattern .		0	20%	4320
icp_port 3130
 
acl localhost src 127.0.0.1/8
acl localnet src 192.168.1.0/24
 
acl debianUpdate dstdomain ftp.fr.debian.org              # pour les updates Debian
acl debianUpdate dstdomain security.debian.org          # pour les updates Debian
acl dstOutAllowed dstdomain ws.mperf.com                # pour le mailing, remplacer mailperf par votre fournisseur
acl dstOutAllowed dstdomain chart.apis.google.com      # pour les beaux graphs à la google style
acl dstOutAllowed dstdomain www.magentocommerce.com     # devinez
acl dstOutAllowed dstdomain connect.magentocommerce.com # devinez v2.0
acl dstOutAllowed dstdomain pear.php.net                           # devinez v3.0
acl dstOutAllowed dstdomain schemas.xmlsoap.org                # pour les wsdl, soaperie et autres webservices
 
http_access allow localnet debianUpdate
http_access allow localnet dstOutAllowed
 
acl IpInternal myportname proxy_int_IP
acl IpExternal myportname ip_demostore
acl dstdemostore dstdomain www.demostore.fr
acl dstdemostore dstdomain demostore.fr
never_direct allow dstdemostore
 
# demostore
cache_peer 192.168.1.2 parent 80 0 no-query round-robin sourcehash
cache_peer 192.168.1.3 parent 80 0 no-query round-robin sourcehash
cache_peer_access 192.168.1.2 allow dstdemostore
cache_peer_access 192.168.1.3 allow dstdemostore
 
cache_peer_access 192.168.1.2 deny all
cache_peer_access 192.168.1.3 deny all
 
http_access allow dstdemostore
 
http_access deny all
 
access_log /var/log/squid3/demostore-squid.log squid demostore
access_log /var/log/squid3/demostore-apache.log combined demostore

Dans cet exemple, votre serveur dispose de 8 Go de Ram et on en prend 6 pour le cache de squid. C’est évidemment à ajuster en fonction de votre configuration. (cache_mem 6144 MB) On a aussi une taille maximal de fichier à 8 Mo pour cacher les gros objets et on interdit le cache sur disque pour ne pas gréver les performances. On a paramétré le service Squid pour gérer www.demostore.fr et demostore.fr et donné l’accès aux serveurs vers d’autres hosts comme Magento connect ou les updates de Debian.

Le load balancer

Bonne nouvelle : c’est déjà fait !

Eh oui en donnant deux peers vous avez dit à Squid qu’il avait deux serveurs Web dont il devait s’occuper. Vous pourriez vouloir donner un poids différent (ici dans l’exemple c’est du 50/50) si vous avez des serveurs de puissance différentes. Il faudra alors ajouter Weight comme directive dans la déclaration des peers.

Le piège serait de faire du load balancing IP. Netfilter sait le faire, c’est même assez simple à mettre en oeuvre et pour tout vous dire c’est ce qu’on faisait à NBS System avant. Mais cela posait des problèmes quand le client arrivait d’une IP qui changeait en cour de session (gros firewall corporate qui nat par une autre connexion ou même simplement une adsl en ip variable). Du coup il vaut mieux passer par cette solution qui est plus propre.

Memcached


Introduction

Nous y voila, la fin de l’aventure Firewall / Load Balancer / Reverse Proxy est proche…

Si je finis par ce point c’est aussi parce que c’est le plus facile quelque part.

On peut mettre memcached un peu partout dans l’infrastructure, sur le proxy, sur les serveurs Web ou même sur les serveurs de base de données. L’idée c’est de garder les sessions des surfers non pas en fichiers mais en mémoire. D’un point de vue performance, c’est très préférable et c’est simple à réaliser alors pourquoi s’en passer…

Installation

On peut le mettre dans plusieurs endroit ce fameux memcached mais je préconise un serveur qui est unique et accédé / accessible par tous comme la base de données (si on a qu’un serveur de DB) ou le reverse proxy mais, si possible, pas sur les serveurs Web. En effet si l’un tombe, autant que l’autre puisse bosser et reprendre ses sessions. Evidemment, il vaut mieux que le dit serveur soit redondant ou bien costaud pour ne pas tomber sinon c’est toutes les sessions qu’on perd mais vu que le site tombera avec, ca sera un moindre problème :)

Oui, je sais, toujours un peu douleureuse cette phase sous Debian :
~> su (on passe root car on est plus loggé en root, normal)
~> apt-get install memcached php5-memcached

Allez, ca va aller, c’est finit… On respire lentement, le rythme cardiaque redescend !

Configuration

Dans le fichier local.xml de Magento, vous devriez pouvoir ajouter :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<global>
  <cache>
    <backend>memcached</backend>
    <memcached>
      <compression/>
      <cache_dir/>
      <hashed_directory_level/>
      <hashed_directory_umask/>
          <file_name_prefix/>
          <servers>
             <default>
              <host>192.168.1.1</host>
              <port>11211</port>
             <persistent>1</persistent>
           </default>
          </servers>
      </memcached>
  </cache>
<session_save><![CDATA[memcache]]></session_save>
<session_save_path><![CDATA[tcp://192.168.1.1:11211?persistent=1]]></session_save_path>
</global>

On peut aussi mettre memcached en dehors de Magento et de sa configuration, tout simplement en installant le démon avec une configuration dans le /etc/memcached.conf :

1
2
3
4
5
6
7
# memcached ultra simplistic config file by philippe Humeau (c) 2009 NBS System
-d
logfile /var/log/memcached.log
-m 1024
-p 11211 
-u nobody
-l 192.168.1.1


Conclusion


  1. Vous méritez un café après tout ce travail
  2. Je mérite un café après ce travail de rédaction
  3. Il est incompréhensible que les producteurs de café soient pauvres
  4. La personne qui monte un site Magento entièrement dédié au café, il va se faire du blé

Oui… Je sais… J’ai toujours un petit soucis sur les conclusions mais bon, vous commencez à être habitués depuis le temps et puis je me soigne.

Prochain exercice de style, l’article 2/3 : Configuration d’un serveur Web pour Magento !

PS : N’oubliez pas de vous inscrire pour Bargento 2, il reste encore quelques places et après on est complet, ce qui implique que même en arrivant à l’improviste sur place, on ne pourra pas vous faire rentrer pour rester dans les capacités d’accueil de la salle.

De plus, le papier sur Zend Application Server et les performances de Magento devrait apporter un jour nouveau et pas mal de complément sur ce mini tuto / howto.

Par manque de temps, je n’ai pas eu le temps de tout tester sur un serveur donc si il y a des boulettes dans les fichiers de configuration, n’hésitez pas à me les signaler, je modifierai l’article.

écrit par Philippe Humeau \\ tags: , , , , , , , ,

mai 14

Toute l’équipe avance sur l’organisation de Bargento 2 et … à la réorganisation des plannings.

L’arrivée en force de Varien avec la présence de Roy Rubin, Yoav Kutner et Amit Shah est une bonne chose mais nous avons du bousculer un peu les plannings pour laisser suffisamment de place à un vrai Keynote de l’éditeur.

Voici donc ci-dessous le planning ré-ajusté:

  • 09h00 – 09h30 : Introduction Magento par Roy Rubin (CEO de Varien)
  • 09h30 – 10h15 : Présentation général de Magento et de la version CE par Sébastien Lepers
  • 10h15 – 11h00 : Présentation de la version Enterprise Edition de Magento par François Ziserman
  • 11h00 – 11h15 : Pause
  • 11h15 – 11h45 : Conférence communautaire par SeL, Gabriiel et Anthony, Philippe
  • 11h45 – 12h30 : Magento, performance comparées des version 1.2, 1.3 avec et sans Zend server, par Zend & NBS System
  • 12h30 – 14h00 : Coupure déjeuner
  • 14h00 – 14h45 : Magento et les projets à fort degré de personnalisation par SQLI
  • 14h45 – 15h30 : Les bonnes pratiques des modules et du webservice par Fabrice Beck (Fia-Net)
  • 15h30 – 16h00 : Pause
  • 16h00 – 16h45 : Intégration de fonctionnalités spécifiques et SEO dans Magento, Baobaz (en anglais)
  • 16h45 – 17h30 : Retours d’expérience de sociétés déjà Magentisées
  • 17h30 – 18h30 : Prise de contacts & échanges de cartes

Evidemment, le dialogue autour de la version EE et de la version CE va être un grand rendez-vous, l’équipe cherche aussi des méthodes pour convaincre Yoav de nous donner la roadmap de Magento : fouet, minijupe ou numéros collector de batman, toutes les idées pour le corrompre sont les bienvenues.

Le coté Barcamp fait aussi recette, et beaucoup de propositions d’animations sont à l’étude, il restera aussi  de nombreux créneaux réservés pour que des animations puissent être proposées sur place le jour J, par des volontaires.

Actuellement le taux de remplissage de Bargento 2 est d’environ 60%, il reste donc ~90 places à pourvoir, je vous invite donc à réserver vos places rapidement sur www.bargento.fr car beaucoup réservent au dernier moment et le nombre de places est limité par la taille de la salle donc on ne pourra pas « caser dans un coin » les retardataires.

écrit par Philippe Humeau \\ tags: , ,

mai 11

Je t’aime, moi non plus…

Mon dieu quel débat…

3 pages sur le site de Varien sur le thème « Magento is going Commercial« .

Les pours, les contres, les autres. Un débat, comme souvent, plus axé sur la forme que sur le fond. Ca tombe mal, la forme c’est un domaine où Varien n’est pas réellement à l’aise.

Bien évidemment, j’ai souhaité réagir dans le forum et, sous prétexte que j’ai un logo partenaire de coller à mon nom sur le forum, j’étais le grand Satan qui censurait les posts et trahissait l’esprit de l’opensource… D’autres ont par contre parfaitement compris la logique que je défendais : si Varien ne trouve pas de monétisation de son produit et un business model équilibré, la société va mourrir et le produit avec, tout le monde y perdre, le fameu deal loose/loose.

Alors je vais redonner un point de vue plus précis ici, plus argumenté et si quelqu’un veut prendre le temps d’écrire un article argumenté pour défendre un point de vue contraire, je lui laisserai un moyen de le publier ici aussi. Une communauté, c’est avant tout du dialogue, cet avis n’est que le miens, les autres valent aussi d’être entendus.

Nous allons parler ici de la version CE : Community Edition, la gratuite et de la version EE, Enterprise Edition, la payante.

Free comme ouvert ou comme Gratuit ?

En premier lieu, Opensource,  ca veut dire littéralement « sources ouvert », pas source gratuit.

gnu1La Free software Fundation décrit le mouvement du libre comme « we call it free software because the user is free ». L’utilisateur est libre… Ensuite, les mots qui reviennent sur le site sont : freedom to share, study and modify.

Au tout début, le besoin est venu par un utilisateur que sa forte pilosité du menton et son amour des éditeurs de texte a rendu célèbre. Il a trouvé qu’acheter un produit mais ne pas pouvoir l’améliorer alors qu’on en avait acquis la licence, c’était un poil abusé.  Son but était donc d’amener l’éditeur à lui ouvrir le source pour qu’il puisse lui même incorporer ses fonctions manquantes.

Pour ce qui est de Magento, que ce soit en EE ou en CE, les souces sont ouverts à la lecture et à la modification, l’utilisateur est libre de modifier ce qu’il souhaite.

Rien dans tout cela n’interdit à un éditeur d’avoir deux versions en parallèle une payante et une gratuite, d’autant plus qu’un éditeur peut faire du payant, laisser l’accès aux sources à ses clients et être toujours dans cette définition.

Pourquoi diable tout le monde ferait de l’argent directement ou indirectement avec Magento, intégrateurs, freelances, utilisateurs finaux de Eshops, web agencies, hébergeurs, experts, freelances etc… et pas Varien ?  C’est si génant ou choquant qu’une société qui a tant dépensé demande à avoir un retour important ou un business model plus explosif ?

Finalement les sociétés qui facturent 4 000 € d’installation de Magento (sisi) et 2 000 € la fonction de mailing 4 000 celle de backoffice etc… Ces sociétés qui n’ont pas réellement de valeur ajoutée sont les premières à hurler sur le modèle EE car vous savez quoi, le client va savoir ce pour quoi il paye… Horreur, damnation, on ne pourrait plus revendre un travail que l’on pas fait ? S’en est trop !

Un peu de recul sur l’opensource

L’arguement qui évoque que Varien ne fait plus d’opensource est idiot à plusieurs titre, le plus évident c’est qu’il est assez complexe de fermer un source qui est en langage interprêté comme Php à la vision du publique. Le système est donc dé-facto opensource puisque la compilation est quasi impossible. Ensuite, la mentalité d’origine de l’opensource, ce n’était pas forcément un combat pour le gratuit mais un combat pour l’ouverture.

Le mot Free en anglais voulant dire les deux (gratuit, free of charge ou libre), la confusion règne mais soyons clair sur ce point : à l’origine le but était de pouvoir adapter parfaitement le soft que l’on avait acheté à son usage spécifique dans l’entreprise. La logique était « j’achète un soft, j’aimerai au moins qu’il réponde à mes besoins et donc pouvoir l’adapter et donc d’avoir les sources ».

Comment vivre de l’Opensource ?

En demandant la gratuité de tout. Un développeur mange, dort, il invite aussi sa copine au  resto et il a besoin de s’habiller. Avoir de l’opensource de qualité cela implique que les auteurs gagnent leur vie (et si possible bien pour encourager le mouvement).

Modèle Mu

Certains grands malins ont lancer le « modèle MU« . wordpress-mu par exemple. Je suis l’éditeur, je laisse mon soft libre mais en qualité d’éditeur je maintiens et j’héberge un grand nombre de sites qui me font confiance directement. La limite est que certaines sociétés vont se sentir en concurrence avec l’éditeur évidemment mais le modèle Mu fonctionne et se répand.

Dons

La donation peut fonctionner mais il est rare que ceux qui râlent et demandent du gratuit soient des donateurs. Cependant, n’oublions pas que les gars d’ID software, qui certe ne faisait pas de l’opensource mais bien du gratuits, se sont payés leur première Porsche avec les dons sur Wolfenstein 3D puis Doom. Carmack, Romero et leurs potes ont même acheté le parking pour pouvoir se faire des courses tranquille. (John, quand tu veux ta revanche, je prendrai la GT2 ce coup-ci)

Versions payantes et support

Parfois les auteurs font de la spécialisation de leur soft pour des clients ponctuels ou vendent du consulting. Parfois ils mettent en place un système de partenaires agréés ou même ils vendent une version Enterprise pendant qu’une autre est libre, le choix de Varien en l’occurence, probablement parce que le partenariat et le consulting ne rapportait pas assez.

Le support et l’assurance dédommagement, la responsabilité et l’engagement légal, c’est le « modèle Redhat ». C’est un moyen de conquérir les grands comptes qui doivent prouver le sérieux et les garanties apportées par un éditeur ou un produit à leurs experts comptables, commissaires aux comptes, directeurs juridiques, investisseurs, actionnaires et à la direction d’une manière générale.

Je paye donc je contrôle car indéniablement j’ai plus de poids sur un sous traitant qui vie de mes subsides que sur un groupe   »monétairement détaché ».

Pourquoi Varien passe au modèle payant

Il est évident, enfonçons les portes ouvertes, que Varien est assez mauvais en com, ne publie pas sa roadmap clairement et n’a pas une gestion très smart de sa communauté. Maintenant prenons le problème qui se pose à cette société :

  • Un bon produit, jeune mais prometteur, qui demande des investissements énormes
  • Un support matériel, hébergement et autres coûts connexes qui grimpent pour faire face
  • Un développement 100% géré en interne pour ce qui est du core
  • Un environnement marché ou des sociétés profitent de Magento, vendent des développements très cher et ne partage par leurs revenus avec l’éditeur
  • Tout le monde demande des fonctionnalités, personne ne veut les payer

Tout le monde veut tout gratuitement. Moi aussi d’ailleurs, mais les sociétés sont confrontées à d’autres réalités terrain… Samsung n’a pas voulu m’offrir mon portable, apple n’a pas voulu m’offrir mon Iphone, Microsoft me fait payer ses licences, les datacenters me facturent les Mégabits de bande passante et les ampères. Le monde est fou ma bonne dame…

Et au fait ? Magento ce n’est pas un système de collecte des dons ou d’organisation d’ONG ? C’est bien un système de E-commerce non ?

Avec la version Enterprise Edition, Varien n’est certe plus dans le domaine du gratuit (je n’ai pas dit libre, ne pas confondre) mais d’un autre coté, il n’y a pas de « vol » de propriété intellectuelle puisque ce qui a été développé l’a été sur l’argent de la société. De plus la version Community Edition reste, elle, gratuite et parfaaitement efficace et plus avancée que ses concurrentes.

Plusieurs points de vues s’affrontent et il serait malhonnête de ne pas citer les arguments légitimes de ceux qui ne sont pas d’accord. En premier lieu, ceux qui ont participer au débugging estiment être laisés, certains ont d’ailleurs beaucoup apporté je pense, en idées, en écrits, en feedbacks et la version Enterprise Edition (EE) ne les réjouit pas car ils ont l’impression que Varien capitalise sur leur dos. Ce à quoi on pourrait répondre qu’en contrepartie ils ont eu un bon produit gratuit, des heures d’ingénierie et que ce qui manque ne coûte qu’un faible pourcentage de l’ensemble.

Ensuite les fonctionnalités spécifiquement intégrées à la version EE fachent. En effet les utilisateurs disent que certaines fonctions devraient nativement se trouver dans Magento peut importe la version, CE ou EE. Les tickets cadeaux et autres monnaies virtualisées notamment, très utiles à de nombreux magasins, sont des features réservées à la version EE.

La version CE sera t’elle  entretenue ?

Le plus gros point de doute et d’inquiétude, c’est le fait que Varien va ou non soutenir fortement la version CE  (Community Edition, la version gratuite).  Les clients payants sont très attractifs alors pourquoi maintenir une version CE aussi puissante et fonctionnelle ?

Eh bien pour plusieurs raisons :

  1. Un Fork, maintenir plusieurs versions, ca coûte très cher
  2. Oublier la communauté, c’est se couper de plusieurs dizaines de milliers de commerciaux indirects dans le monde qui techno évangelisent les clients et leur vendent du Magento comme la meilleure solution du monde. Du coup, le jour ou cette foulle change de chapelle, c’est la fin du produit
  3. La version Enterprise est intimement lié à la version C.E ne serait-ce que par les supports de Magento Connect ou la partie commune du source tree
  4. Laisser la version CE mourir ou stagner c’est s’assurer que les opensourcers, les contributeurs et les membres de la communauté vont aller chercher ce qui leur manque ailleurs et se couper du feedback, des correctifs, des contributions du dialogue constructif
  5. La majorité des clients de Magento ne peuvent se payer 8900 $ par serveur donc fournir à la majorité une version un peu périmée ne donnera pas une bonne image du produit et donc laissera la porte ouverte à la concurrence pour conquérir le marché
  6. En matière de technologie,  les empires naissent très rapidement et peuvent mourrir tout aussi vite. Varien est assis sur une mine d’or, ils commencent à creuser mais le risque de totalement se planter et laisser un parfait terreau à la concurrence est très grand. Faire de la version CE une version au rabais est un des chemins les plus directe vers le gouffre et les personnes qui dirigent cette société m’ont l’air tout sauf idiots.

Les pièges à éviter  (à mon sens)

  • La communauté est formée à des usages, il est pertinent de les respecter et d’être très transparent.
  • Une roadmap ca s’établie longtemps à l’avance, ca se communique et ce qui est payant ou non y est signalé avant
  • La communauté ca se chouchoute car elle est un relai d’opinion vital pour le développement d’une activité soft. Elle adhère très vite et se retire tout aussi vite. Se couper de la communauté qui a lancé un produit c’est à coup sûr le tuer.
  • L’ambiguïté dans la direction peut faire croire des choses qui tiennent du fantasme mais en la matières les promesses n’engage pas que ceux qui y croient et ne pas en faire donne des frissons dans le dos aux personnes dont le business repose sur Magento.

Il faut être clair et communiquer régulièrement. Les surprises sont plus généralement considérées comme mauvaises que comme bonnes et quand on se sent impliqué (à tort ou à raison du reste) on aime être avertis les premiers !

Ne pas dire ce qui est ou non dans une version ou même ce qui fera partit de la version CE ou de la version EE très clairement et largement en avance, c’est dommage. Dommage pour l’éditeur car il va devoir s’expliquer par la suite et potentiellement froisser son public mais dommage également pour les pros.

Si les développeurs et SSII doivent se préparer certains jeux de composants pour peupler la version CE, ils doivent savoir avant lesquels doivent l’être et du jour au lendemain et passer une fonction de la CE à la EE ou l’inverse peut avoir des impacts économiques.

Là où Varien à probablement commis deux impaires, c’est de rendre payant certaines fonctionnalités alors que le simple fait d’avoir un support et une responsabilité aurait suffit aux clients corporate et n’aurait pas faché la communauté.

Comme le disait avec humour Koby dans le forum de Magento Commerce, le produit et sa communauté ont eu leur première dispute d’amoureux. C’est assez proche de la réalité je crois.

Modèle de facturation

Le payant une sinécure ? Pas si sûr…

Soyez certain que lorsque vous payez, vous êtes exigeant. Très exigeant. Pour 8900 $ / serveur, ce sera plus que de l’exigeance, ca va toucher au harcèlement, tout devra être juste parfait, sans aucune faille, erreur, oubli. C’est un travail colosalle et les clients seront sans pitié.

Ce qui passait avec la communauté ne passera pas avec la version payante.

Imaginez la scène, la version 1.4.5.33420.13042 vient de sortir, il y a un bug dans les templates.

CE : Hum dites les gars, c’était encore pas très frais comme version, mon site est en vrac.
Varien : désolé, on fixe ca, vous aurez le correctif demain matin.

EE : Bonjour, vous avez sortit un update de merde, mon site est foutu, vous me devez 200 000 € de dommage et intérêts, 2 M€ de perte de CA pour la journée, vous êtes grillé sur le marché, je résilie le contrat, voici le numéro de nos avocats et vous pouvez laissez les clefs de votre voiture sur mon bureau. Allez, au revoir.
Varien : Euh…

La facturation au serveur

C’est assez infernal de trouver un modèle, il faut bien le reconnaitre. En l’occurence la facturation se fait au serveur Web frontal, de production (donc hors redondance et hors base de données). Varien à pensé que, comme la démocratie qui est la moins mauvaise des formes de gourvernance, ce modèle serait le moins mauvais compromis.

Mais… En tant qu’infogérant, je peux vous dire que c’est un bazarre à gérer. Si j’ai préféré faire une infrastructure à 3 serveurs plutot qu’à deux, mon client doit payer 8900 $ de plus ? Et pour un énorme serveur mutualisé on ne paye qu’une licence pour 200 sites ? Un chassis de 16 lames c’est un serveur ou un 16 ? Quid de la virtualisation ? Et un cluster ca se compte comment ? Sans compter qu’en matière d’hébergement, croyez moi on pourrait faire croire à un seul serveur frontal alors qu’on a une ferme derrière, ca ne se verrait même pas…

Magento est gourmand, même avec le flat catalog, ca reste une solution qui nécessite beaucoup de puissance quand le nombre de visiteurs grimpe. La version EE est faite pour les grands comptes qui ont de facto de gros trafic et donc de facto plusieurs serveurs. Certes Varien ne compte pas les serveurs de bases de données mais tout de même…En plus un client ou une web agency peut penser que son site tournera sur deux serveurs mais si l’infogérant lui en conseil trois pour de valables raisons, ca fait 9k$ de dépenses supplémentaires, qui le client préfèrera croire ?

Bref ce modèle n’est pas parfait, loin de là. Mais puisque seulement critiquer ne sert à rien, voici une proposition :

On se base sur un nombre de V.U / jour (Visiteur Unique par jour) pour déterminer la facturation. On multiplie par 3 la valeur si le site est B2B et non B2C (moins de clients mais plus de CA) et on facture la licence de manière lissée par mois. Ainsi chacun est facturé en fonction de son trafic et donc de son CA.

« EE version will bring us all to the next step ! »

Ce sont les mots de la bouche même de Roy.

Nous avons déjeuné récemment ensemble et je m’ouvrais à lui de ce point précis de la facturation au serveur, des coûts et de l’approche de Varien. Amit (le VP sales de Londres) était de la partie également.

Le maître mot était : on va tous monter en gamme. Les grands client corporate qu’on ne pouvait pas toucher avant, vous pourrez les adresser et nous aussi. La version EE, c’est la montée en gamme de tout le monde autour de la table, le moyen de grossir de traiter des marchés jusque là inaccessibles !

On verra bien si l’avenir lui donnera raison ou non mais à n’en pas douter le sujet sera remis sur la table lors de Bargento 2 et Roy nous redonnera sa façon de voir les choses !

écrit par Philippe Humeau \\ tags: , ,

mai 07

C’est officiel & confirmé :

Le boys band le plus en vue de la cote ouest des états unis sera parmis nous au Bargento 2.

Roy & Yoav seront de la fête le 2 juin à Bargento 2, ce n’était pas prévu mais c’est très bien ainsi. Nous bouleverserons peut être un peu les plannings pour leur faire de la place en terme de discussion, probablement une keynote ou une intro le matin et un slot de barcamp l’après midi.

Toute les questions qui vous brulent les lèvres sur Magento (CE/EE), que vous soyez clients ou partenaires, vous pourrez les poser directement à ceux qui sont les mieux positionnés pour y répondre : l’éditeur Varien par la voix de son PDG et de son Directeur Technique.

De toute façon ils seront là quasi en continue, on aura tous le temps de parler de tous les sujets . Le plus dur au final dans cet évènement, ca va être de choisir à qui parler :) Entre Varien, Zend, les experts de tous horizons et les retours d’expérience, Bargento 2 sera « The place to be » pour tous les magentisés.

Merci à eux d’avoir répondu à notre sollicitation !

écrit par Philippe Humeau \\ tags: , , , ,