Catégorie: Informatique

proxy Apache avec l'authentification Digest

Par Steven Lloyd Watkin , dimanche Mars 27th 2011 24:57

Ce poste sera rapidement vous montrer comment mettre en place proxy avec l'authentification de base en utilisant Apache .

Dans mon cas, je voulais avoir la transmission client bit torrent disponibles sur Internet afin que je puisse vérifier sur le torrent adminster téléchargements et de l'État (comme la dernière version de Fedora) comme l'exige. Transmission gère elle-même son client web sur le port 9091 par défaut. Au lieu de déranger l'ouverture de plusieurs ports sur mon pare-feu et ajouter le port règles de transfert nessecary j'ai décidé que je venais de procuration de la demande par le biais de la transmission via Apache en utilisant le module mod_proxy .

Continue reading 'proxy Apache avec l'authentification Digest »»

Zend Framework: Render S'il existe

Par Steven Lloyd Watkin , dimanche Décembre 12th 2010 16:19

Sommaire

Il s'agit d'un petit post pour discuter de l'aide de vue plutôt simple, j'ai créé pour rendre une Zend Framework fichier de vue style seulement si il existe. En général demandant le code pour rendre un fichier qui n'existe pas lèvera une exception. C'est pourquoi j'ai créé un wrapper pour le Zend_View:: render () qui détermine si le fichier existe et si oui, rend, sinon renvoie simplement une chaîne vide.
Continue reading 'Zend Framework: Render S'il existe »»

Zend Certified Engineer (ZCE) 5,3

En Watkin Lloyd Steven , le jeudi Septembre 30th 2010 21:00

Avec la sortie officielle du Zend Certified Engineer (ZCE) programme pour 5,3 j'ai pensé vous donner mon impression rapide de ce que je pensais de l'examen.

Un peu d'histoire sur moi: j'ai d'abord été présenté à PHP il ya 7 ans et nous avons travaillé professionnellement à PHP depuis 2006. Je travaille actuellement pour une passionnante start-up appelée Brightpearl basé à Bristol, Royaume-Uni , la production de CRM intégré, la comptabilité, logiciels de commerce électronique. Je n'ai pas déjà obtenu un des diplômes ZCE précédente. Je développe actuellement dans la série 5.2.X et n'ont pas vraiment utilisé l'une des caractéristiques particulières de 5,3 (je suis en attente pour le Zend Framework 2 et Doctrine 2) dans mes projets de développement.
Continue reading 'Zend Certified Engineer (ZCE) 5,3' »

Zend Framework par les paramètres de mise Module - Suivi

Par Steven Lloyd Watkin , mardi 16 Février 2010 20h48

Comme suite à mon précédent post sur ​​les paramètres de mise en page par module en fonction de Zend Framework , j'ai mis à jour le code d'exiger moins de configuration, puis avant (pas besoin de plus que ce que quelques lignes dans votre configuration de l'application!).
Continue reading 'Zend Framework par module Layout Settings - Suivi »»

Office Grid Computing en utilisant des environnements virtuels - Partie 4

Par Steven Lloyd Watkin , Vendredi 4 Décembre 2009 23:59

Introduction

Je travaille dans une société où nous un travail par lots de nombreux traitement de millions d'enregistrements de données chaque jour et j'ai pensé récemment au sujet de toutes les machines qui sont assis autour de tous les jours à ne rien faire pendant plusieurs heures. Ce ne serait pas bon que nous puissions utiliser ces machines pour renforcer la puissance de traitement de nos systèmes? Dans cette série d'articles que je vais examiner les avantages potentiels d'employer un bureau de la grille en utilisant des environnements virtualisés.

Dans la partie 3 , nous avons créé notre machine virtuelle et le traitement mis en place des machines Windows à devenir les travailleurs à temps ralenti.

L'exécution de la dernière version du code

Inévitablement, après la création de votre logique métier des travailleurs va changer, les bugs seront trouvés, plus efficace le code plus rapide sera produite laissant ainsi vos travailleurs assis autour de traitement de données en utilisant l'ancien code malodorantes . Comment alors faire en sorte que nous sommes toujours en utilisant la toute dernière version de nos scripts de traitement?

Il ya quelques très facile des moyens simples que nous pourrions faire cela, le truc, cependant, est de réduire la puissance de traitement et le trafic réseau pour y parvenir. Commençons par le plus simple des solutions et améliorer lentement sur un couple d'itérations.

La première méthode serait de tout simplement vous connecter à notre serveur de contrôle de l'emploi (via Samba, FTP, ou similaire) et tirer vers le bas de la dernière version du code. Pas très efficace, mais il fera le travail. Permet d'améliorer ce peu, que diriez-vous créer un script rsync et en utilisant à chaque fois que la place? Sinon que dire de mettre notre dernier script de traitement dans la subversion vérifiant le code d'abord et ensuite seulement la mise à jour de notre code sur chaque run ( svn update )?

En fin de compte nous pourrions nous retrouver avec un script bash (appelé par cron toutes les 10 minutes), qui est aussi simple que cela:

  #! / Bin / sh
 si ps ax | grep-v grep | grep php > / dev / null
 puis
     echo "de l'emploi est en cours de traitement, la sortie"
 d'autre
     echo "emploi ne fonctionne pas, commencer dès maintenant"
     cd / chemin / vers / travail / copie
     svn update
     yourJobProcessingScript.php php
 fi 

Maintenant, nous pouvons être sûr que dans chaque série, nous sommes certainement en cours d'exécution le dernier code. Nous veillons à ce que cette mise à jour par notre base de code chaque fois que nous procédons à une course et de réduire le trafic réseau en transférant uniquement les différences de fichier à travers notre réseau.

Dans ma configuration de démonstration, j'ai fait exactement comme ci-dessus. Subversion a été installé sur mon serveur de traitement d'emplois et j'ai simplement tiré le dernier code de la branche «travailleur» en utilisant 'svn update'. J'ai aussi ajouté un tag numéro de version à mon script de traitement qui a été retourné à la base de données dans le cadre de la déclaration des résultats. De cette façon, j'ai pu voir que mon code a été mis à jour chaque fois que j'ai copié ma malle dans la branche soit travailleur que je n'étais certainement l'exécution du script de traitement plus tard.

En utilisant les dernières données

Si votre traitement d'un travail fait appel à des sources de données, puis à un certain moment ceux-ci vont être mis à jour aussi. À moins que vous appelez vos sources de données sur une base très rare que vous allez inonder votre réseau avec le trafic dès que vos travailleurs commencent à courir à intégrer le tout à un statu quo. Pour ma solution, j'ai décidé que je voudrais passer mes sources de données avec mes machines virtuelles.

Tenez vous êtes chevaux là! Que faire si mes sources de données sont énormes? Eh bien c'est vraiment un cas de la quantité de données parlons-nous? Il peut être plus rentable d'installer un disque dur plus spacieux supplémentaires dans chaque machine que d'acheter un serveur de traitement supplémentaires. C'est une question de budget et à l'entreprise de décider. Il peut-être que vos sources de données sont si grands que c'est juste impossible de garder cette quantité de données dans vos machines travailleur. Dans ce cas, que feriez-vous? Eh bien, nous pourrions envisager d'appeler un serveur de données locales, mais cela pourrait causer des problèmes avec le réseau. Dans ce cas, un système de grille comme celle-ci peut devenir irréaliste d'inclure dans votre environnement de bureau. Il se peut également que vous pouvez regarder dans d'autres stratégies en cours d'exécution, par exemple seulement d'appeler votre travailleurs 20 heures-six heures chaque nuit et / ou demande des données source d'étranglement.

Sur la route permet de dire que nos sources de données s'élève à 100 Go de données. Eh bien oui, c'est un peu de données à déplacer le réseau sur une mise à jour. Comment pourrions-nous assurer que nous avons la dernière copie des données dans ce cas? Rsync est une possibilité, mais personnellement, je pense en exécutant votre source de données les plus récentes sur votre serveur de traitement d'emplois et mettre cela en place comme un maître dans la réplication (avec un journal bin long Nice) pourrait être la voie à suivre:

réplication En mettant chacun de vos travailleurs en place comme un esclave à l'emploi mises à jour du contrôle serveur dans vos sources de données sera retombée bien à vos travailleurs, sans une augmentation considérable de l'activité du réseau (qui est moins que vous effectuez une mise à jour de données énormes et tous vos ouvriers coup de pied dans à la fois). Cela a des avantages par rapport à rsync que vous ne soyez pas une longue pause avant chaque travail, comme les mises à jour de bases de données, l' mysql daemon sur votre travailleur continuellement à jour ses données tandis que le traitement se poursuit.

C'est ainsi que j'ai créé mon serveur de démonstration. Pour configurer la réplication j'ai suivi le guide sur le site de MySQL ( Configuration de la réplication ) et à moins de 20 minutes, j'ai eu mon travailleur inital de reproduire le contrôle du travail des serveurs ensemble de données. Pour chaque travailleur supplémentaire les paramètres de réplication et de processus a fonctionné à chaque fois que la machine virtuelle a été copié.

Sommaire

Dans cette section de l'article, nous avons examiné la façon dont facile et indolore, il est de garder votre code de traitement à jour par rsync using ou subverion (SVN) pour faire le travail et réduire le trafic réseau à la même time. Nous avons également discuté de la façon pour maintenir votre information de source de données mise à jour en lui permettant de ruissellement à chacun de vos travailleurs. Ainsi, nous zone veiller à ce que nous entretenons avec la logique métier et de l'information dans notre système de quadrillage de bureau. Il y aura évidemment de multiples alternatives à l'exécution de ces tâches, mais voici deux exemples simples pour montrer la facilité avec laquelle une solution est à trouver.

La prochaine fois

Dans la dernière partie de cette série, le bien nommé la partie 5 , nous allons discuter du déploiement de ce système. Je vais résumer ce qui a été appris et ce que j'ai réussi à créer.

Office Grid Computing en utilisant des environnements virtuels - Partie 3

Par Steven Lloyd Watkin , Vendredi 4 Décembre 2009 23:37

Introduction

Je travaille dans une société où nous un travail par lots de nombreux traitement de millions d'enregistrements de données chaque jour et j'ai pensé récemment au sujet de toutes les machines qui sont assis autour de tous les jours à ne rien faire pendant plusieurs heures. Ce ne serait pas bon que nous puissions utiliser ces machines pour renforcer la puissance de traitement de nos systèmes? Dans cette série d'articles que je vais examiner les avantages potentiels d'employer un bureau de la grille en utilisant des environnements virtualisés.

Dans la partie 2 , nous avons examiné les emplois d'un serveur s'exécute, et combien d'emplois doit être configuré afin d'atteindre plus grande quantité de tout traitement de veiller à ce que chaque travail est traité sans faute.

Configuration de votre travail - ou d'un serveur LIMP

La prochaine étape du processus consiste à mettre en place vos employés virtuels. Pour cela, je vais utiliser une installation de CentOS en utilisant VirtualBox. Je vais installer mySQL et PHP sur le serveur, également connu comme une boiterie (nux ​​Li, m ySQL, P HP) Servera (j'ai peut-être inventé ce nom).

  • Installer VirtualBox sur votre machine (suivre le lien)
  • Télécharger et installer CentOS (version actuelle 5.3) dans une machine virtuelle créée

Il est inutile de me va à ce qu'il ya probablement 1,000 's de tutoriels grand là-bas (ok, voici une: Création et Managing CentOS machine virtuelle sous VirtualBox ). Le point important à noter est, je suppose que j'ai appelé mon GridMachine machine virtuelle.

Quant à mon choix de client de virtualisation et de système d'exploitation va il n'ya aucune raison impérieuse pour chaque grand choix. VirtualBox est quelque chose que je utiliser sur ma machine et est soutenu par les trois principaux systèmes d'exploitation. J'ai choisi CentOS comme un bon OS stable et je l'utilise sur mon propre serveur Web. Je suis un grand croyant dans les bons outils pour le travail (même si je suis l'application de «l'utilisation la plus rapide et plus facile pour vous" mentalité ici), si le système d'exploitation X exécute votre code rapidement et plus efficacement utiliser à la place:)

Il est important de s'assurer que votre VM utilise DHCP, sinon pour chaque nouvelle machine virtuelle doit être configurée séparément, ce qui est quelque chose que nous ne want.By utilisant DHCP nous n'avons pas besoin de configurer les paramètres réseau individuellement pour machines travailleur, DHCP main les adresses IP pour vous. Par conséquent, vous pouvez copier votre machine virtuelle sur le bureau sans se soucier de la mise en place de chacun (ce qui améliore l'évolutivité et réduit l'administration des travailleurs).

Le processus vous devriez viser à atteindre serait d'obtenir une nouvelle machine physique, installer VirtualBox, puis à peu près de déployer l'image virtuelle, sans beaucoup d'autre. Il pourrait être sage d'installer tous vos employés sur un sous-réseau différent de sorte que vous pouvez au moins voir comment beaucoup de machines sont en cours d'exécution. Vous aurez également besoin de mettre en place vos machines sur un bail à long ou à la location illimitée DHCP.

Comment faire pour exécuter des travaux sur le travailleur

C'est un domaine intéressant et il ya plusieurs méthodes valables pour les emplois de traitement sur le travailleur. Ici, je vais examiner les deux plus évidentes:

  • Perpétuellement en cours d'exécution de script: un script, que ce soit un script shell ou un script PHP est exécuté une fois sur le travailleur et s'exécute dans le cadre d'une boucle infinie. J'ai écarté cette méthode comme un accident du script et potentiellement vos employés cesseront de courir sans une certaine forme d'intervention.
  • l'exécution Cron script basé: toutes les x minutes le démon cron démarre un appel à votre script pour faire avancer les choses. Sans quelques vérifications cela pourrait conduire à de nombreux exemplaires de votre script en cours d'exécution travailleur.

Ma décision était d'aller avec cron qui démarre un script shell toutes les 10 minutes. Mon script shell effectue les tâches suivantes:

  1. Obtenez une liste des processus et grep pour ce 'php'. S'il n'est pas trouvé avant de continuer.
  2. Appelez votre code de travail, dans mon cas, ce serait quelque chose basé sur PHP
  3. script travailleur termine sa course
  4. Prêt à aller de nouveau sur le prochain appel appropriées

Mon script bash ressemble à ce qui suit:

  #! / Bin / sh
 si ps ax | grep-v grep |> grep php / dev / null
 puis
     echo "de l'emploi est en cours de traitement, la sortie"
 d'autre
     echo "emploi ne fonctionne pas, commencer dès maintenant"
     yourJobProcessingScript.php php
 fi 

Note: l'écho sont presque complètement inutile, mais peut aider à la prochaine personne qui vient le long d'essayer de les modifier.

Cela met fin à la mise en place de la machine virtuelle travailleur, rapide, simple et facile de copier à chaque nouvel élément matériel qui est reçu. Le «intelligence» du système de grille n'est pas vraiment dans le visualisé OS, son tout à voir avec le code créé pour traiter les travaux, la configuration d'emploi, et à faire en sorte que le travail s'exécute le cas échéant (c'est à dire lorsque l'hôte est inactif ).

Configuration de Windows pour initialiser des travailleurs

La première tâche est de travailler à la commande nécessaires au fonctionnement de la machine virtuelle à partir de la ligne de commande Windows. Si vous avez installé VirtualBox l'emplacement par défaut et que vous avez nommé votre GridMachine travailleur alors la commande nécessaire pour charger votre travailleur est:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" GridMachine startvm 

Cependant, pour exécuter le script dans un «décapité» l'état dont nous avons besoin d'utiliser:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe" startvm GridMachine-- RPI = off 

Cela va démarrer la machine virtuelle sans l'interface graphique et lui permettre de sauvegarder l'état de grâce. Le deuxième argument s'éteint RDP il n'entre pas en conflit avec des fenêtres RDP, ou vous donner un message à l'écoute sur le port 3389. Le nom de la machine virtuelle est Sensible à la casse!

Ensuite, nous aurons besoin de mettre en place des fenêtres pour lancer notre VM travailleur une fois la machine a été ralenti. Pour ce faire (sous Windows XP), vous devrez aller sur Démarrer -> Tous les programmes -> Accessoires -> Outils système -> Tâches planifiées comme suit:

les tâches planifiées

Cliquez ensuite sur "Ajouter une tâche planifiée», suivie de voir pour ajouter un programme personnalisé. Accédez à votre script VBoxManage et cliquez sur OK. Planifiez vos tâches à l'une des options (nous allons changer cela en une minute) et continuer. Après sauter les fenêtres écran suivant vous demandera qui vous voulez exécuter cette tâche, je vous suggère soit «administrateur» ou la création d'un nouvel utilisateur privilégié. N'oubliez pas que nous ne voulons pas interférer avec le compte personnel de série sur la machine à tout moment. Cliquez sur Options prochain spectacle et vérifier avancées de cette tâche.

Pour la fin de la zone de texte exécuter ajouter chaîne 'GridMachine startvm »et d'assurer notre qui fonctionnent uniquement lorsque vous êtes connecté est laissée décochée. Visitez le calendrier de travail suivant et changer la baisse de calendrier jusqu'à l'option "en cas d'inactivité", choisissez la quantité de temps que vous souhaitez la machine à vide avant de passer à l'onglet suivant.

Enfin décocher l'option qui stipule arrêter la tâche si elle a été en cours d'exécution montant X de temps, mais ne cochez l'option pour arrêter la tâche si la machine n'est plus ralenti.

calendrier

Voilà donc pour la configuration de l'hôte Windows!

Sommaire

Dans cette partie, nous avons mis en place une machine virtuelle d'agir en tant que travailleur, ainsi que la façon dont nous appeler et exécuter nos scripts de traitement de l'emploi (pour moi-même un script PHP). De là, nous examinons comment mettre en place nos copies de Windows au démarrage de la machine virtuelle en mode sans tête lorsque l'ordinateur devient inactif, et enregistrer son état lorsque l'utilisateur reprend l'utilisation de la machine. J'espère à ce moment que vous voyez combien il est simple à mettre en place un tel système et sont impatient de faire quelques expériences vous va!

La prochaine fois

Dans la partie 4 , nous allons chercher à utiliser des outils pour s'assurer que vous utilisez la dernière version du code et des données sources afin que les résultats obtenus sont toujours à jour avec les dernières informations d'affaires et de la logique.

Office Grid Computing en utilisant des environnements virtuels - Partie 1

Par Steven Lloyd Watkin , Vendredi 4 Décembre 2009 23:23

Introduction

Je travaille dans une société où nous un travail par lots de nombreux traitement de millions d'enregistrements de données chaque jour et j'ai pensé récemment au sujet de toutes les machines qui sont assis autour de tous les jours à ne rien faire pendant plusieurs heures. Ce ne serait pas bon que nous puissions utiliser ces machines pour renforcer la puissance de traitement de nos systèmes? Dans cette série d'articles que je vais examiner les avantages potentiels d'employer un bureau de la grille en utilisant des environnements virtualisés.

En PHP développeur, je vais utiliser les outils que j'utilise chaque jour à savoir, Linux, mySQL , PHP, VirtualBox et de subversion (SVN). Cependant, j'espère que ce guide vous adapter à d'autres langues et des technologies tout aussi bien.

La solution que je fournis seront très vaguement basé sur le type de traitement que nous avions besoin pour atteindre cependant cela peut ne pas être vrai dans l'article en entier que je vais changer les choses pour plus de simplicité, ou de produire des scénarios d'utilisation les plus intéressants.

Ces environnements virtualisés va tourner sur des machines Windows puisque c'est ce que la majorité des bureaux de l'exécution. Le traitement que les machines de bureau ne devrait pas interférer avec le personnel utilisant ces machines, ne devrait nécessiter aucun entretien à la machine, et être faciles à déployer de nouvelles machines à mesure qu'elles deviennent disponibles. Aussi, de nouvelles machines virtuelles ne doivent imposer aucune configuration supplémentaire que cela réduit considérablement l'évolutivité et la facilité avec laquelle le système de grille peut être prolongée.

Pourquoi déployer une grille de calcul Office?

Premièrement, vous pensez peut-être, pourquoi ne pas simplement utiliser une ressource informatique dans les nuages, comme plate-forme EC2 Amazon ? Eh bien, les raisons peuvent être à plusieurs, par exemple:

  • Vous ne serez pas confier certaines données à un environnement de cloud computing
  • Vous ne pouvez pas mettre certaines données dans un environnement de cloud computing pour des raisons légales (par exemple les données de quitter le pays), peut-être pour des raisons juridiques, par exemple les dossiers du NHS.
  • Vous voulez garder vos unités de transformation à proximité et ont le plein contrôle sur le matériel trop
  • Vous n'avez pas les fonds du projet pour exécuter les instances de nuages
  • Votre bureau n'a pas de connexion à l'internet et donc ce n'est pas possible d'utiliser une ressource nuage
  • Vous n'aimez pas la pluie, les nuages ​​de pluie suggèrent, par conséquent, vous gardez bien à l'écart

Je suis sûr que la liste pourrait continuer, mais je pense que ça suffit pour l'instant.

Avantages d'une grille de calcul Office

Eh bien, permet de faire des maths (et dans un style vraie physique permet de faire quelques hypothèses de balayage). Imaginez que vous avez grand serveur de traitement en cours d'exécution costaud 100 emplois par jour. Dans votre bureau, vous avez 50 machines qui sont au repos 16 heures par jour, chacune de ces machines est de 10% plus puissant que le traitement de vos costaud rompre. (Tous les résultats ici sont arrondis pour augmenter les performances sous-estimer).

Ainsi, 1 machine * 10% * de puissance 2 / 3 temps = 0,067 bureau de traitement 1 à-dire dans le temps d'inactivité peut traiter 6 emplois à plein par jour.

Si vous avez maintenant l'échelle jusqu'à ce qu'il fallait 15 postes de travail ralenti pour traiter autant d'emplois par jour en tant que votre serveur de traitement principal ne.

Donc, dans notre bureau semblant de 50 machines nous pourrions augmenter notre puissance de traitement de 1 serveur jusqu'à 4 serveurs de traitement complet, ou nous pourrions être la transformation de 400 emplois par jour au lieu de 100.

Avis, pour aucun investissement dans du nouveau matériel de votre entreprise vient d'augmenter sa capacité de traitement par lots 4 fois! Potentiellement vous allez augmenter votre consommation d'énergie, mais la plupart des environnements de bureau, je suis allé à machines sont généralement à gauche sur la nuit de toute façon, si vous pouviez voir cela comme une initiative verte.

D'autres avantages aussi signifier que l'investissement dans de nouvelles (ou mise à jour) des serveurs de traitement peut être retardé si vos machines de bureau sont suffisantes et que vous améliorez la puissance de vos machines de bureau de votre réseau de bureau devient plus puissant automatiquement.

Technologies

Ce que vous devez? (Ou plus exactement ce que j'ai utilisé):

  • machines de bureau vide (dans mon cas, un ordinateur portable de rechange vieilles fenêtres XP)
  • VirtualBox (ou un autre logiciel client de virtualisation)
  • Une machine virtuelle avec PHP, mySQL running exécution d'un coupé OS, je vous appelle ces boites mes serveurs:)
  • Offres d'emploi pour exécuter
  • Job Server (peut être une autre machine virtuelle quelque part)

Typique de l'emploi

Les types d'emplois que ce système est conçu pour fonctionner est la suivante:

  • Le système reçoit une liste de données sur lesquelles nous avons besoin de match et retourner des résultats
  • Correspondants consiste à vérifier / recherche plusieurs (assez statique) sources de données
  • Résultats des autres sources de données peuvent nécessiter une validation supplémentaire, la fusion, le contrôle des sources de données supplémentaires en réponse aux résultats
  • Les données sont retournées avec des enregistrements correspondants, entièrement validée et traitée
  • Chaque enregistrement dans un emploi est indépendant du reste

Donc, fondamentalement, nous nous penchons sur l'exécution des travaux qui exigent un mélange de recherches de base de données et quelques calculs, un scénario assez classique dans un environnement d'affaires.

solutions de réseau ne sont pas seulement avantageux pour le traitement des emplois de ce type. Fondamentalement, tout processus qui peut être divisé en unités indépendantes peuvent être exécutés en parallèle. Voir wikipedia, c'est pour des exemples et plus d'informations: Grid Computing , mais quelques exemples célèbres sont Seti @ Home et BIONC . Il existe des cadres pour l'exécution des grilles de calcul, et ce sont bien dignes d'intérêt.

Que ferons-nous atteindre?

À la fin de ces articles, j'espère que pour montrer que le déploiement d'un réseau de bureau ne doivent pas être extrêmement coûteux ou de temps. Je vais à discuter:

  • Mise en place du système de contrôle des tâches, la configuration du travail
  • Création d'une machine de traitement appropriées virtuelle
  • Comment installer le système sur une machine Windows
  • Assurer vous utilisez la dernière version du code et des données
  • Le déploiement et l'analyse comparative
  • Regard sur l'avenir

Je serai de construction (ok, j'ai construit, puis écrit ce) un exemple d'application pour tester les concepts sur une machine locale sous Windows XP et ma machine virtuelle »GridMachine. Mon serveur de contrôle de l'emploi sera ma machine principale qui va Fedora 11 .

Ce n'est en aucun cas pour but de démontrer un système pleinement opérationnel robuste, son but plus d'une démonstration et la discussion qui montre que ces choses peuvent être réalisées dans un espace de temps relativement court et à peu de frais. S'il vous plaît n'hésitez pas à m'envoyer vos commentaires, corrections ou améliorations et je ferai de mon mieux pour garder cet article à jour pour correspondre.

La prochaine fois

Dans la partie 2 Je vais commencer par examiner le système de contrôle du travail, et examiner comment les emplois doivent être configurés afin d'atteindre plus grande quantité de tout traitement de veiller à ce que chaque travail est traité sans faute.

Office Grid Computing en utilisant des environnements virtuels - Partie 2

Par Steven Lloyd Watkin , Vendredi 4 Décembre 2009 23:23

Introduction

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

In Part 1 I gave an overview of the system and technologies I will be using as well as discussed some of the potential reasons why you would want to create an office grid.

Job Control

Si vous allez à l'exécution des travaux, alors vous allez avoir besoin d'une certaine façon de les gérer. Your job control system (on your job server) needs to be really well thought out before even attempting to run an office grid. Alors tout d'abord, quelles sont les tâches d'un système de contrôle de l'emploi:

  • Distribuez des emplois à la demande de travailleurs
  • Tell workers what type of jobs to run
  • Track jobs
  • Ensure that jobs are only run once
  • Provide job data to workers, or at least tell them where to get it

Le système doit également être extensible, une solution qui fonctionne pour l'instant dans un seul cas peut être étendu à exécuter plusieurs types d'emplois que l'entreprise voit la valeur dans une solution de la grille. For example, jobs may gain priorities, more than one job type may exist (ie several code bases), eventually you may even run several different worker machines that are optimised for each type of job (although that does move away from the 'generic worker' idea). Always try to think about the future when developing systems, a short term vision can lead to longer term frustration and increased development time.

Job Server

Nous allons avoir besoin de quelque part pour contrôler nos offres d'emploi de, cela devrait être le seul système dans votre réseau qui a un localisateur de ressources fixes, que ce soit une adresse IP, nom d'hôte, URL (en utilisant DNS interne), etc C'est parce que les travailleurs ont besoin de savoir où chercher un emploi, les travailleurs ont besoin de trouver le système de contrôle de l'emploi (pas le système de contrôle d'emploi à trouver des travailleurs).

The job server itself doesn't really have a complicated task (in a basic system anyhow), it needs to store a list of jobs, hand out jobs, receive results, and subsequently store them for later retrieval. Comment ces pièces (telles que «la main à l'emploi») sont définis peut être très simple. Later on we can extend the system to include an administration interface to add, edit, delete, suspend jobs but this is beyond this exercise.

Il n'ya aucune raison que ce soit, alors que votre serveur de travail ne pouvait pas être une machine virtuelle fonctionnant au sein de votre serveur de traitement principale à condition qu'il ne s'écoule pas trop de ressources à partir de lui. Le serveur d'emploi ne doivent cependant la disponibilité élevée, si elle descend sur un vendredi soir, vous allez perdre un week-end de la transformation, ce qui pourrait vous coûter une couple de semaines de temps de traitement (par rapport à votre serveur de traitement principal seul) . You may want to consider putting your job server on a load balanced environment for high availability.

Configuration de base

La configuration de base pour notre serveur de travail sera composé de ce que j'appelle un de mes serveurs souples (qui est nux Li, ySQL m, P HP). Le code s'exécutant sur les travailleurs théâtres vont effectivement travailler sur les emplois qu'il peut fonctionner en interaction avec des bases de données d'emplois de contrôle du système. Plus tard, nous pourrions créer un service web et fait part des emplois plutôt que d'avoir les travailleurs ne le dur travail eux-mêmes, mais pour l'instant nous allons continuer à utiliser le principe KISS (Keep It Simple, Stupid!).

Donc, permet de créer trois mySQL tables pour faire face à l'emploi. Ceux-ci seront «emplois», «jobRecords` et `jobResults».

tableau des emplois Ici, je suis en utilisant SQL Buddy un peu excellente alternative à phpMyAdmin juste parce que c'est plus facile à installer sur CentOS (pour les autres, voir: 10 alternatives à la Grande phpMyAdmin )

Ce tableau se compose de 5 champs simples,

  • Identifiant: l'identification unique des emplois
  • Nom: Peut-être une référence client, ou n'importe quel nombre de désignations autres
  • Situation: Vous avez besoin de savoir où le travail est moins, par exemple
    • 0: Non commencé
    • 1: Ramassé
    • 2: Terminé
  • started_by: Qui a commencé à faire le travail? Ce n'est pas tout à fait nécessaire, mais est un bon d'avoir. Je vous suggère de suivi des travailleurs par leur adresse IP sur votre réseau
  • started_at: Quand le travailleur commencer le travail? En faisant le suivi des emplois qui n'ont pas terminé dans le montant de X de temps, nous savons que nous devons prendre le travail une fois de plus et de commencer le traitement par un autre travailleur. Les travailleurs peuvent arrêter le traitement / hors ligne pour un certain nombre de raisons, une panne de courant, crash, le réseau de perte, etc

Il est facile de faire ce tableau peut être étendue avec quelques champs supplémentaires pour permettre le suivi des statistiques, une colonne de temps d'arrivée pour voir combien de temps le travail a pris, un compteur pour savoir combien de travailleurs repris le travail (évidemment cela doit tendance à 1), la priorité d'emploi, la liste peut continuer encore et encore. Dans des scénarios plus complexes d'emploi, il serait possible de spécifier la quantité de mémoire que le travailleur aurait besoin d'accéder à (et donc que l'utilisation appropriée des travailleurs), ou même ce type de travailleurs serait nécessaire.

Permet d'ajouter un peu d'emplois par exemple:

emplois par exemple

Le tableau suivant est à nouveau assez simple à comprendre, ce sont nos dossiers d'emploi. Elles sont liées à la table principale des emplois par une colonne `jobs_id». La composition de ce tableau dépend en grande partie les données que vous devez fournir à vos travailleurs, permet de faire un exemple très simple où nous avons quatre colonnes:

  • id: ID de l'enregistrement
  • nom: Nom de la personne
  • Adresse: Adresse de la personne
  • jobs_id: L'ID d'emplois que ce dossier est lié à

Le tableau troisième et dernière se compose d'un tableau des résultats, il a peu près le même représenter jusqu'à notre table les dossiers, et avec l'ajout de certaines colonnes pourrait faire partie de la table des dossiers:

  • job_record_id: Link le résultat à la table de travail
  • Résultat: Les données de résultat

... Et c'est tout ce dont vous avez besoin pour le contrôle de l'emploi! (Quoique à un niveau très basique) Dans mon cas, je suis fait à une autre table où mes données à traiter a été localisé, mais cela pourrait tout aussi bien être un fichier, les paramètres d'exécuter du code de simulation, vous l'appelez.

Sélection d'un emploi

Comme indiqué précédemment, les travailleurs ferons de notre gestion de l'emploi pour nous pour l'instant, tout ce que nous devons vraiment faire, c'est de trouver un emploi que les besoins de traitement et obtenir l'information. Comment ferions-nous cela? Eh bien choisir nos critères de sélection d'emploi et chercher un emploi, en SQL, je ne les suivantes:

  1. Prenez n'importe quel emploi qui ne sont pas marquées comme terminées, mais de nos travailleurs et de réinitialiser les (__ME__ remplacer par un identifiant plus simple, serait d'adresse IP):
      UPDATE `SET` emplois `status` = 0 WHERE `status` = 1 ET »started_by` = __ME__; 
  2. En utilisant nos critères de sélection d'emploi, sélectionnez un emploi et dire au système de contrôle que ce travailleur a affaire avec elle:
      UPDATE `SET` emplois `status` = 1, «started_by` = __ME__, «started_at` = MAINTENANT () WHERE `status` = 0 ou
     (`Status` = 1 ET »started_at`> DATE_SUB (NOW (), INTERVAL X heure)) ORDER BY `id` ASC; 

    En saisissant les emplois qui n'ont pas retourné les résultats dans le montant de X de temps nous nous assurons que tous les emplois sont gérés dans le cas d'un travailleur ou d'aller s'écraser AWOL.

  3. Suivant saisir les détails d'emplois suivies par les documents eux-mêmes:
      SELECT * FROM `emplois` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

À la fin de l'emploi nous insérons nos dossiers résultat et indiquer que le travail le plus complet. Rappelez-vous que l'emploi peut suspendre / reprendre à tout moment pour permettre une certaine robustesse dans votre script. Il se pourrait que la tâche suspend à mi-chemin à travers la mise à jour le système de contrôle des tâches, de sorte vérifier le nombre d'enregistrements dans un emploi et le nombre de résultats enregistrées sur le système de contrôle du travail serait une sage décision.

En outre, tout cela démontre combien d'emplois peuvent être sélectionnés et gérés à partir d'une requête-cadre SQL, vous devriez vraiment être résumés de votre contrôle sur le travail de telle sorte que si vous décidez de passer à l'aide d'un service web, une base de système de fichiers, XML , ou de toute autre nombre de systèmes de cela n'affectera pas le code au-dessus.

Configuration d'emploi

Un autre aspect à considérer est la taille d'emploi et de la configuration. En jouant avec la configuration de travail que nous pouvons trouver un excellent équilibre entre vitesse, processus de réplication, et la fiabilité. Prenez un couple d 'A scénarios:

  1. Offres d'emploi de prendre un jour de chaque lancer: Cela signifie que vos employés ont besoin de 15 jours pour traiter chaque emploi (souvenez-vous de 10% de la puissance pour 2/3rds du temps). Ce n'est clairement pas une configuration sage, la taille de votre travail est beaucoup trop grand! Il faudrait au moins doubler le temps de trouver un emploi traitées si le travailleur initiale go AWOL (temps de ramasser qu'il n'a pas retourné un résultat plus le temps de retraitement). Dans l'idéal il faudrait au moins un emploi à plein facilement dégagé par la fin de chaque ralenti longue période, de cette façon vous conserver les emplois et à retardement sur ​​le pire des cas un emploi faudrait deux jours pour traiter les cas où la première disparaissent.
  2. Emplois prendre 1 minute pour exécuter: Cela signifie que vos employés prennent environ 15 minutes pour exécuter chaque tâche. Bien que cela puisse sembler au départ idéal, vous gagnez le traitement du travail supplémentaire pendant l'heure du déjeuner, les pauses café, les réunions, etc ce scénario met à rude épreuve dans d'autres domaines de votre système et introduit ses propres problèmes. Par exemple, d'une part la configuration de votre ratio temps de traitement va aller droit vers le bas, donc de perdre l'efficacité du système. Votre réseau va être constamment streaming information sur l'emploi aux travailleurs divers membres du personnel qui sont frustrant dong leur travail quotidien. You're also going to put more strain on your job processing server as it has to dish out lots and lots of small pieces of work on a regular basis. Enfin, dans cette situation si votre serveur tombe en panne d'emplois que vous allez créer un journal grand retour de l'inachèvement des travaux alors que les gros travaux de poursuite de la procédure pourrait parfaitement inconscients que le serveur d'emploi connaît des difficultés.

En réalité, il n'y aura pas de configuration idéale pour une configuration de votre réseau, tout dépend des ressources disponibles, les types d'emplois, les exigences du poste délais d'exécution, la capacité du réseau, et ainsi de suite. Cependant, certaines lignes directrices seraient:

  • Taille des emplois de sorte que chaque travailleur peut passer au moins 3-4 emplois dans une période de 15 heures (la plus longue période sans doute temps d'inactivité)
  • Jouez avec le volume de travail de sorte que le temps d'installation devient assez insignifiant par rapport aux temps de traitement (en gardant à l'esprit le point ci-dessus).
  • Si un travail ne se termine pas dans le double de la quantité de temps (peut-être moins) que vous prévoyez de mener à bien l'assumer que son parti AWOL et commencer le traitement avec un autre travailleur. Cela signifie que vous pourriez avoir à attendre jusqu'à trois fois la durée normale d'un emploi pour qu'elle se termine (peut-être plus si le travail s'avère impossible). Vous pouvez réduire ce temps, mais attention de ne pas réduire trop que vous pouvez démarrer la copie des tâches de traitement sur ​​une base régulière.
  • Les emplois devraient être indépendantes des besoins à l'extérieur autant que possible. Le serveur d'emploi, par exemple, ne devraient être contactés au début et à la fin de chaque travail.
  • Ne pas saturer votre réseau, ce qui aura deux effets négatifs, le personnel de jour se trouve en utilisant le réseau frustrant et des problèmes peuvent être rencontrés avec les connexions de synchronisation à un problème qui ne fera que s'aggraver à mesure que vous réduisez votre grille.
  • Assurer des emplois peut fonctionner sur votre travailleurs. Si les emplois deviennent trop de mémoire emplois espace intensive ou intensive du disque va commencer avorter et la seule chose que vous remarquerez est une baisse du nombre de tâches traitées sans véritable raison.

La remise des résultats d'un emploi

Lors de la présentation des résultats d'un travail, il est important de vérifier que les résultats n'ont pas été soumis par un autre travailleur, en particulier si le travailleur en cours a été inactif pendant un certain temps.

Lorsque les résultats sont présentés en sorte que le nombre de résultats correspondant au nombre de dossiers dans le travail.

Comme indiqué précédemment, et ne peut pas être surestimée, de construire la tolérance aux pannes en recherche d'emploi et la présentation des résultats. Les travailleurs peuvent (et très probablement) aller en mode veille à l'inconvénient le plus de fois et cela doit être pris en compte. En outre une fois de plus s'abstraire de votre soumission résultats aideront répondre aux changements à venir à votre système de contrôle du travail beaucoup plus facile à traiter.

Sommaire

Dans ce section nous avons regardé ce que un serveur de contrôle d'emplois doit faire et comment obtenir un système de base mis en place. Nous avons discuté de la façon de récupérer un travail à partir du système de contrôle et de la meilleure façon de configurer des travaux à tirer le meilleur parti de notre système de quadrillage de votre bureau. Pour finir, un paragraphe ou deux sur la présentation des résultats sur le serveur de contrôle des travaux a été présenté.

  • Un serveur de contrôle de l'emploi gère les tâches et veille à ce que toutes les unités de travail sont terminés
  • En faisant abstraction de votre sélection de travail / présentation des résultats, nous pouvons changer la technologie du serveur de contrôle, sans beaucoup de problèmes
  • Configurez votre emploi afin de s'assurer qu'ils sont exécutés rapidement et efficacement sans mettre trop de pression sur votre infrastructure réseau, et sans empiéter sur les tâches de traitement sur une base régulière.
  • Veiller à ce que vous construisez la tolérance aux pannes et checking d'erreur dans votre routine, les travailleurs peuvent suspendre et reprendre et l'inconvénient le plus de fois. N'oubliez pas de vérifier si les résultats ont déjà été soumis par un autre travailleur.

La prochaine fois

Dans la partie 3 , nous allons créer notre traitement de la machine virtuelle et mettre en place nos machines Windows à devenir les travailleurs à temps ralenti.

Office Grid Computing en utilisant des environnements virtuels - Partie 5

Par Steven Lloyd Watkin , Vendredi 4 Décembre 2009 23:03

Introduction

Je travaille dans une société où nous un travail par lots de nombreux traitement de millions d'enregistrements de données chaque jour et j'ai pensé récemment au sujet de toutes les machines qui sont assis autour de tous les jours à ne rien faire pendant plusieurs heures. Ce ne serait pas bon que nous puissions utiliser ces machines pour renforcer la puissance de traitement de nos systèmes? Dans cette série d'articles que je vais examiner les avantages potentiels d'employer un bureau de la grille en utilisant des environnements virtualisés.

Dans la partie 4 , nous avons examiné en utilisant des outils pour s'assurer que nous sommes la dernière version du code et des données sources afin que les résultats obtenus sont toujours à jour avec les dernières informations d'affaires et de la logique.

Pré-déploiement

Avant de déployer votre système grille si il ya une chose que vous faites et une seule chose c'est de référence de votre système actuel! Peu importe ce que vous dites collègues sur la façon dont beaucoup de travail supplémentaire de votre système va faire sauf si vous avez chiffres pour étayer cette thèse vos garanties ne sont rien. Alors,

  • le nombre d'enregistrements peut vous traitez actuellement? Par jour? Par heure?
  • Combien de temps prend-il habituellement à tourner autour d'un emploi?
  • Combien disposez-vous?

Il ya aussi d'autres questions:

  • Si votre serveur de traitement (ou un de vos serveurs de traitement) descend comment cela affectera vos capacités, vous être paralysé?
  • Quels sont les avantages que vous espérez / s'attendre à obtenir à partir d'un système de grille?
  • Vos machines de bureau capable d'exécuter les travaux?
  • Êtes-vous (ou pouvez-vous être converti emplois) à travailler dans ce style de course?

Le dernier point important est de prendre votre temps sur tout changement majeur comme celui-ci. Mettez à jour votre code de traitement au travail en utilisant la nouvelle méthodologie, point de repère à nouveau. Peut-être configurer votre serveur de traitement d'exécuter une machine virtuelle, après tout, votre serveur de traitement sera juste un autre travailleur (juste un très puissant relativement). Laisser le nouveau processus à régler.

Déploiement

Ma suggestion serait de pop dans le bureau un week-end effectuer toutes les installations et la configuration. Pour ce faire, juste avant quinze jours de vacances et de laisser une sorte d'autres chap pauvres à faire face aux conséquences ... peut-être pas ...

Déploiement d'un système comme celui-ci doit être lente. Malgré qu'il soit relativement simple à mettre en place ce système aura une incidence sur votre infrastructure de bureau complet (et le numérique). Tout d'abord, rouler à un couple de machines à la fois, de surveiller le trafic réseau, comment les hôtes travailleur effectuer sur une base de jour en jour. Vous pouvez avoir besoin de modifier la configuration de votre travail en réponse à vos conclusions.

Une fois le système s'est installé avec quelques machines (disons 10% de toutes les machines de bureau, c'est à dire 5) continuer à surveiller le trafic réseau et l'ordinateur hôte performance. de référence de nouveau sur Suivant, vous devriez maintenant être la transformation d'emplois 33% de plus que votre premiers points de repère. Vérifiez tel est le cas, ou que vous êtes au moins dans cette approximation. Si ce n'est pas, d'enquêter sur ce qui se passe avant de passer. Répétez ce cycle jusqu'à ce que vous avez joyeusement toutes les machines de bureau exécutant sans tuer les performances des machines individuelles ou de broyage de votre réseau à un statu quo.

En tout temps, gardez l'analyse comparative, même après tous les déploiements sont effectués. Vérifiez la façon dont les mises à jour du nouveau code affecter la vitesse de votre système, vérifiez tous les travailleurs sont dans des rapports et des emplois dans la transformation. Lentement (très lentement) augmentation de la configuration de votre poste pour obtenir le meilleur de vos employés et le réseau.

Stop!

Que faire si vous voulez arrêter votre travailleurs de se présenter à un certain moment? Ils sont tous là-bas en cours d'exécution, la régénération, et en essayant de leur mieux pour traiter les données comme des insectes affamés. La réponse peut sembler évidente, mais sa valeur en ajoutant juste au cas où son vis à vis. Il suffit de modifier votre script de traitement avec un exit (0) or die () ou toute autre déclaration de tuer votre travail de traitement. Une raison importante pour laquelle nous essayons toujours de mettre à jour vers la dernière script de traitement avant tout courir!

Démonstration du système

Pour écrire cette série de courts articles, j'ai créé un réseau à très petite pour démontrer les technologies et méthodologies. J'ai lu beaucoup d'articles, des tutoriels, et a utilisé divers outils pour configurer et surveiller ce qui se passait. En aucun cas je n'ai sorti et saturé d'un bureau toute la circulation et je n'en ai eu accès à un PC personnel des membres réguliers de voir comment la performance d'accueil a été affectée.

Mon système de démonstration a été très humble en effet. J'ai utilisé mon ordinateur de bureau ordinaire mis en place un serveur de contrôle de l'emploi. Sur ce que j'avais installé mySQL serveur installé mis en place comme un maître dans la réplication, PHP , Â et SVN liés par apache (pour un accès via travailleur VM).

J'ai ensuite créé une machine travailleur CentOS sur VirtualBox sur un ordinateur portable de 6 ans windows XP. Je configurer des tâches planifiées comme spécifié après la copie de la machine virtuelle sur la machine et le laisser aller.

La machine virtuelle a été mis en place avec PHP, la subversion, et mySQL. J'ai vérifié une branche nommée «travailleur» de mes serveurs de contrôle du travail de dépôt et fait en sorte qu'il pourrait être mis à jour en utilisant 'svn update'. Ensuite, j'ai configurer MySQL comme esclave et vérifié que les données ont été réplication de MySQL sur le serveur de contrôle des travaux jusqu'à la VM travailleur. Après tout cette configuration, je le script bash et cron.

Mon script de traitement essentiellement allaient dans le sens de ce (trucs très simples):

  • Lire dans le champ Nom
  • Compté le nombre de noms similaires dans une table de la source de données stockée sur le VM
  • Compté le nombre de noms que ci-dessus, mais partage le nom par des espaces (par exemple le prénom, au milieu, nom de famille)
  • Répété ce processus 1.000 fois

Chaque tâche a pris environ 20 minutes à courir. À un moment donné, j'ai ouvert plusieurs exemplaires de la machine virtuelle sur l'ordinateur portable travailleur fenêtres et regardé les emplois être cochée par chacune des adresses IP des travailleurs. À ce stade, je confirme également que la réplication automatiquement renouvelées.

Laisser l'ordinateur portable au ralenti abouti à un travailleur de commencer à traiter des emplois à partir du serveur de contrôle des travaux. Si on reprend l'utilisation de portable il y avait un retard d'environ 30-60 secondes, il s'agit d'une bonne quantité de temps et de personnel devrait être mis au courant que leur machine se mettra en pause pendant une courte période pour rentrer dans la machine. machines les plus récents peuvent ne pas avoir une pause de ce terme. Le bénéfice de la quantité de traitement effectué par ces machines pendant les périodes d'inactivité serait plus qui l'emportent sur les membres du personnel d'avoir à attendre une courte période (par exemple 1 minute) en arrivant à leurs machines d'un matin (j'ai souvent attendre plus longtemps que ce pour un Windows Defender mise à jour aura lieu) à condition qu'ils soient mis au courant de ce temps (utile pour prendre un café le matin!).

Dans l'ensemble je suis convaincu que je l'ai démontré les technologies qui pourraient être utilisés pour créer un tel système. J'ai montré qu'un tel système fonctionne sur une échelle de (très) petites et avec un peu plus l'expérimentation pourrait être étendue utiliser les ressources des machines d'un bureau. Si je n'obtiens pas au point de le faire, je serais très intéressé de savoir / voir quand quelqu'un d'autre.

Conclusions / évaluation

La prochaine étape logique serait d'obtenir effectivement un exemple concret et commencer à déployer un tel système dans un environnement de bureau et de voir ce qui se passe. Vente d'une entreprise à s'engager dans cette entreprise sans Blazing Trail de prouver la technologie et l'efficacité peut être un peu difficile. Grid / L'informatique distribuée est très populaire est certains milieux et a quelques grosses applications (BIONC, SETI @ Home, Folding @ Home, etc). Je n'ai pas, cependant, trouver une plus petite échelle et système simple comme ça dans mes recherches qui pourraient être mis en œuvre dans un environnement de bureau.

J'ai créé un système fondamentalement libre utilisation des logiciels ouverts pour la plupart et les outils disponibles dans presque n'importe quel bureau. Les technologies ont été essentiellement montré et montrent de jouer et travailler comme prévu. J'espère avoir montrer qu'avec peu de travail et avec une configuration très simple, vous pouvez déployer un système informatique, bureautique, réseau qui est puissant, bon marché, une et évolutive tout en même temps.

Une fois qu'un système est en marche il n'y a presque pas de fin à la quantité de personnalisation et d'améliorations que vous pouvez faire. Par exemple des statistiques / benchmarking peut facilement être ajouté montrant la valeur d'un tel système chaque jour. Les nouvelles machines peuvent être ajoutés rapidement et facilement et quand ils arrivent avec la mise à niveau du matériel existant renforcer votre puissance de traitement.

J'espère que vous avez apprécié la lecture de cette série d'articles et de ses données vous de réflexion sur l'exécution d'un système de grille de bureau. La solution présentée ici ne fonctionnera pas nécessairement dans toutes les situations, mais devrait être adaptable afin de vous permettre d'obtenir vos données de traitement fait à l'aide de votre propre solution.

S'il vous plaît n'hésitez pas à m'envoyer vos commentaires, corrections ou améliorations et je ferai de mon mieux pour garder cet article à jour pour correspondre.

Zend Framework: Notions fondamentales - Commentaire

Par Steven Lloyd Watkin , samedi Novembre 28th 2009 22:42

My employer recently paid for a group of us developers to take the Zend Framework: Fundamentals course, here I'll summarise my thoughts and opinions on the course for others. For those looking to save time, here's my summary:

For developers who haven't had time to look at the Zend Framework this course (Zend Framework: Fundamentals) offers a good overall picture of the framework introducing you to the key areas and giving enough information in order to continue. For those who have spent time looking at the framework and have followed one or two tutorials this course does not offer much beyond.

Contexte

I've been a PHP developer for around 5-6 years, and have started working with the Zend Framework on a component basis over the last 6 months. I've developed and/or been a developer on a couple of small Zend Framework MVC sites. I'll be honest, I haven't had a huge amount of exposure to other frameworks from a coding point of view but have spent several hours researching the project websites and evaluating them. The framework and the community surrounding Zend Framework it is quite exciting and there seem to be huge possibilities in where its going.

Au sujet du cours

The course is delivered over 9 two hour webex sessions (with a 10-minute break in the middle). The time is spent going through a set of slides provided by Zend with discussion at any time. You can use a microphone to talk to the instructor, but to be honest I didn't see anyone use anything more than the chat window. In addition a VMWare Ubuntu machine is provided that has example code and projects set up an a trial version of Zend Studio. The course leader talks to attendees either over an integrated VoIP solution, or you can dial in using one of the many worldwide dial in numbers.

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. The discussion demonstrated bootstrapping, Zend_Application, Db Tables, Database access, Forms, Filtering, ACL, Validating, etc, etc. Basically covering all the topics you'd require to get a basic site up an running all the time giving you the tools to go and get more advanced in the framework (although this did amount to 'See the website' much of the time).

Time is given to code up some examples, and to develop the 'guestbook' and simple 'wiki' application. Personally I felt that providing the code or each app and then asking us to develop what was essentially a copy alongside didn't really provide a good learning experience. I would have preferred to develop an application similar, but not identical. to the example application with the benefit of having a guide to refer to. Alternatively building the applications from scratch with the demonstrator would of possibly led to more questions about why and how , thus giving a better understanding of the framework, after all you can look up specifics after the course.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. After the course feedback was taken, it was emphasised several times through the course that Zend takes feedback very seriously, in fact apparently our version of the course was quite new. Some of the other developers in the company will be taking the course soon so it will be interesting to see if this has happened.

The course style was informal, allowed for feedback and collaboration between attendees and the instructor. The course leader was friendly, approachable (email addresses were shared for questions), and whilst his presentation from the slides was a bit shaky seemed fully competent in the framework. He was clearly someone who used the framework on a regular basis rather than someone who is taught to teach the course, I liked the 'real world' experience in that respect.

Overall Feeling

In some ways I found the course a waste of time, in others it was very handy. Hopefully I'll get my reasons across clearly, and maybe provide some food for thought or useful feedback (knowing me this is unlikely!).

For myself this course was aimed at too low a level. Having gone through the quickstart guide, read Rob Allen's Zend Framework in Action, and worked with the framework a little I didn't really get anything too much. I would of liked the course to pick up from the end of the quickstart and develop additional skills.

That said, the course title does clearly state “Zend Framework: Fundamentals ” and in that aspect the course achieves what it sets out to do. Other members of the development team that haven't spent the time looking into the framework finished each session with enthusiasm and asked questions which was really nice to see.

All was not lost, it was good to spend time confirming the basic details of the framework and get to ask a couple of questions in areas where I wasn't 100%. It was also time that I got to sit down each day and think about coding using the framework and future projects, something I wouldn't of been able to do otherwise (can you imagine your company agreeing to that? :) ). Last but not least you also get a nice certificate from Zend to say that you attended the course (albeit by email).

Certification Zend Framework

This was one question that kept coming to mind during the course, would it prepare me for the certification? The quick, easy is a resounding No . The course instructor was quite clear on that with the additional advice that for the certification you should really be using the framework on a day to day basis and feel very comfortable and confident in its usage and methodologies.

Sommaire

Given everything I've written above, I'll summarise everything in two easy bullet points:

  • New to Zend Framework: This course does exactly what you'd expect, it gives you a nice introduction to the framework and a good grounding on the basics from which you can build. The course seems to generate interest and enthusiasm for the framework amongst developers.
  • Used the Zend Framework: While it was nice to shore up some of the very basics I felt the time, effort, and funds to take the course could of been better spent elsewhere. It will be nice to see Zend create a new higher level course to take developers to the next level – at least to the standard of certification and beyond. For that I would sign up immediately.












Thème par Panorama Themocracy

6 visiteurs en ligne maintenant
2 guests, 4 bots, 0 members
Maximum de visiteurs aujourd'hui: 15 à 09:50 UTC
Ce mois-ci: 26 au 05/07/2011 00:35 UTC
Cette année: 130 à 28-03-2011 10:40 pm UTC
Tous les temps: 130 à 28-03-2011 10:40 pm UTC