Posté par Cedric, le 27/04/2009 - Technologie
Lorsqu'on réalise un projet web d'envergure, il convient de prendre en compte les éléments annexes au développement: le référencement naturel (c'est le cas pour de plus en plus de développeur), et, chose moins commune, le déploiement et l'évolutivité de l'hébergement.
Si vous êtes sur financement, cette question pourra être rapidement éludée en passant par des prestataires à obligation de résultats, qui se chargeront pour vous de monter la meilleure architecture possible, quel qu'en soit le prix.
En revanche si vous êtes en auto-financement, les solutions techniques vous permettant de construire une architecture évolutive à moindre coût vous intéresseront. A notre sens, il convient ainsi de canaliser les goulets d'étranglement du serveur (généralement, la RAM, le processeur, et les écritures simultanées sur le disque dur, hors swap) en séparant les tâches sur des serveurs différents, ce qui permet de monter des système extensibles et légers.
Ainsi, un site avec du PHP extensif, comme une application sous symfony sera réparti ainsi:
- Un serveur avec pas mal de RAM pour servir le frontend. Sur ce serveur, une partie de la RAM doit être allouée à un accélérateur d'opcode type APC (512 Mo dédié parait pas mal). Cela permet de garder en cache une version précompilée de vos fichiers PHP, très utile quand on utilise un framework, puisqu'un framework procède à des inclusions en série de milliers de fichiers PHP, ce qui créé une brèche de rapidité automatiquement.
- Un serveur avec pas mal de RAM/proc pour la base de données. Idéalement, cette base de données ne remplit qu'un seul des deux rôles clés: soit elle lit, soit elle écrit. Si elle écrit, elle doit être couplée à une base "esclave", elle même sur un serveur à part, avec encore moins de RAM. Si vous optez pour un tel système, sachez que cela implique pas mal de changement côté applicatif, puisque vous devez signaler à chaque action persistante la base de données à utiliser. Dans la théorie, des ORM avancés comme Doctrine et son fameux système de listeners permettent de faire cela. Dans la pratique, on a beaucoup de surprises.
- Un + qui fera toute la différence: si vous avez assez de RAM, et si vos serveurs de DB sont connectés à votre serveur de front en VLAN, profitez-en pour installer Memcache sur ce serveur, ouvrir le port adéquat, et stockez-y vos sessions utilisateurs. Memcache est infiniment plus rapide qu'un stockage sur disque dur, car les couples clés/valeurs sont stockés directement dans la mémoire vive. Autre avantage, le fait d'avoir vos sessions stockées directement sur un serveur dédié à cette tâche rend votre serveur d'application encore plus indépendant, ce qui facilite, si besoin est, son extension par quelque méthode que ce soit (load balancing, failover heartbeat, round robin, etc...).
- Ensuite, nous vous recommandons de vous débarasser de la gestion des "assets" (éléments persistants uploadés par les administrateurs ou les utilisateurs, typiquement des images). En plus d'encombrer votre bande passante et de démultiplier vos lectures/écritures sur disque dur (ce qui augmente considérablement les risques de casse et pose le souci de la sauvegarde), vous rendez votre cluster de front plus difficile à mettre en place. En effet, pour que celui-ci soit efficace, il faut que chaque serveur contienne exactement la même chose. S'il existe des solutions de synchronisation comme rsync, ou mieux, unison, l'idéal est à notre sens de passer par un système de stockage tiers, comme Amazon S3 ou Mosso. Certes, l'implémentation côté applicatif sera plus complexe à gérer, mais vous vous débarrasserez des problèmes de sauvegarde, de sécurité, et surtout, vous allégerez considérablement votre/vos serveur(s) applicatif(s).
- Pour finir, quelque chose de plus classique, débarrassez vous de la gestion des emails. Cela monopolise beaucoup de ressources (les AV et autres antispam sont TRES gourmands en RAM), et cela requiert énormément de maintenance pour conserver un système efficace. Optez pour une solution payante (vous transférez les MX et ne vous occupez plus de rien), ou optez au "pire" pour Google Apps qui vous permet également de faire ce genre de délocalisation, souvent pour le bonheur de vos utilisateurs.
Voilà, en ayant ce réflexe délocalisation, vous pouvez bâtir un serveur applicatif ultra light, extensible à l'infini, sécurisé à tous les niveaux (lancez un petit cron sur les serveurs de DB pour faire un dump et l'envoyer sur S3, ca prend 10 mn et 20mn pour faire le travail inverse), et très rapide à mettre en place. Côté installation, nous vous recommandons de travailler sur des box identiques, montées par exemple avec un Ubuntu LTS vide, et bloqués sur tous les ports qu'on utilisera pas avec iptable, ce qui rendra le tout encore plus sécurisé.
En conclusion, faire un système scalable, c'est également penser serveurs, et penser serveurs impose bien souvent de développer des spécificités au sein même de la couche applicative. Dans un prochain article, nous étudierons d'autres moyens d'accélérer l'exécution de son application.
Posté par Cedric, le 30/04/2008 - Entreprendre
Le bootstrapping (BS) représente le fait de monter une entreprise sans capitaux extérieurs, et plus généralement, avec des moyens limités. Nous verrons ici quels en sont les fondements exacts et l'approche à tenir pour les entrepreneurs qui choisissent cette voie.
J'ai bien dit qui " choisissent ". En effet, le bootstrapping doit être un choix. Il n'est à mon avis qu'improbable de réussir son entreprise sans argent, si l'on traîne éternellement derrière soi la frustration de n'avoir pas su convaincre des investisseurs. Au delà de cela, je conçois le bootstrapping comme une philosophie, celle de faire plus (et mieux) avec moins. Une philosophie qui, si elle est sincèrement réfléchie et choisie, peut vous amener à refuser des financements extérieurs s'ils vont sont présentés. Une abherration pour certains que je vais tenter d'expliquer ici.
La philosophie du BS, c'est amener l'entreprise à son point de rentabilité sans apport financier extérieur. Il ne s'agit donc pas d'une vision dogmatique se bornant à refuser l'argent d'où qu'il vienne. Au contraire, c'est une position rationnelle qui vise à maximiser le profit futur, en réduisant la participation des apporteurs de capital.
Il convient ici de rappeler le fondement de l'investissement d'entreprise : il s'agit de la rencontre entre un agent ayant des capacités de financement et d'une entreprise ayant un besoin de financement. L'apporteur de capital offre ses disponibilités financières en échange d'un pourcentage de la société. Ce pourcentage lui donne droit à une part proportionnelle des bénéfices distribués, ainsi qu'à un droit de vote.
L'espérance des apporteurs de capital est donc soit d'obtenir une position stratégique au sein de la société pour faire influer ses décisions, soit de placer de l'argent en vue d'un profit futur important, croissant et régulier.
La part de capital donnée par l'entreprise à l'investisseur est calculée par le risque. Ainsi, plus un apporteur de capital investira tôt dans l'entreprise (tantôt avant ou au début de la création, appelé early stage , seed capital ou série A), plus le pourcentage qui lui sera attribué sera fort, car le risque pris sera élevé. A l'inverse, plus la société sera avancé dans son stade de développement, et se montrera à même de générer du chiffre d'affaire avec une marge satisfaisante, moins le risque pris à investir sera grand, et plus le capital attribué sera restreint. L'objectif du boostrapper est donc d'atteindre ce point d'équilibre, de faire sauter tous les risques tant que le financement provient de ses fonds propres, afin de ne pas perdre des pourcentages inutilement.
La philosophie du boostrapper est donc une philosophie particulièrement noble, dans laquelle l'entrepreneur est décidé à aller au bout de ses capacités financières, intellectuelles et physiques, pour bâtir un prototype, lancer son service, le monétiser et le faire connaître, avant de lever le moindre centime.
Le choix de la difficulté en quelques sortes. Mais un choix qui recèle d'avantages cachés. Ainsi, en évoluant sur son argent et son investissement personnel, le bootstrapper est obligé d'avoir une connaissance pratique et théorique complète. Il doit pouvoir faire n'importe quel type de tâche au sein de son entreprise, doit avoir une stratégie irréprochable, un réseau affûté, des techniques de négociations parfaites, un sens de la rigueur financière et comptable à tout épreuve. Dans les entreprises innovantes, le ou les boostrappers devront posséder les connaissances techniques sur lesquelles ils basent leur service, puisque c'est leur seule chance de pouvoir recruter du personnel qualifié, et d'amener ces employés au bout d'eux mêmes.
Une implication qui pousse l'entrepreneur, sous la pression financière permanente, à tout mettre en œuvre pour voir son entreprise atteindre l'équilibre aussi vite que possible. Un contexte qui l'empêchera de dépenser son argent n'importe comment, qui le poussera à s'entourer des meilleurs éléments, à tirer le maximum de son équipe, de lui même et de son réseau ; des éléments qui constituent la meilleure barrière possible à l'échec. Un garde-fou à erreur renforcé par son obligation d'anticipation: Le bootstrapper doit toujours voir plus vite et plus loin que les autres. Un peu comme un tireur sous équipé mais particulièrement précis sur un champs de bataille, il guette d'un oeil méfiant les concurrents, et n'a d'autre possibilité pour les battre que d'être plus talentueux et plus futé.
Le boostrapper aura finalement acquis des méthodes et des habitudes qui resteront même après la levée de fonds, ce qui fera de son entreprise un investissement beaucoup plus rentable que la plupart des firmes financées en early stage.
Mais le bootstrapping doit être une des choses les plus difficiles à réaliser au monde. Créer de l'argent à partir de rien n'existe que dans les films de gangsters, ou dans le mythe de la pierre philosophale. Le boostrapper est plutôt ce travailleur acharné qui saura utiliser au mieux la base financière dont il dispose (le capital dit " friends & family " ou "love money"). Une implication qui n'est pas donnée à tout le monde, car elle sous entend, en plus de conditions privées favorables (famille, amis, soutiens, équilibre de vie etc.), des qualités personnelles rares : le boostrapper doit être multitâche, polyvalent, consciencieux, gros travailleur, tout en conservant les valeurs positives et la joie de vivre indispensable au succès du management d'un projet et d'une équipe. Nul doute qu'il faille également de grandes valeurs morales pour résister à la tentation de la facilité et des financements externes, pour préserver son indépendance et l'esprit d'innovation de sa société. En bref, un profil rare et précieux.
<< Page précédente | Page suivante >>