9 votes

Expérience de Zend Server

L'autre jour, je me suis penché sur Zend Server et je me demandais pourquoi j'utiliserais ça ? D'accord, ils disent que tout a été testé, que c'est critique pour la mission et que c'est prêt pour l'entreprise, etc. Mais pour moi, c'est juste le département marketing qui parle.

Est-ce que quelqu'un utilise ce produit et si oui, pouvez-vous nous faire part de vos expériences et peut-être pourriez-vous également nous expliquer pourquoi vous avez choisi ce produit pour vos applications.

Avez-vous trouvé de réels avantages à utiliser le serveur Zend ?

6voto

Fred Wuerges Points 111

J'ai utilisé Zend Platform (je sais que vous demandiez Zend Server, j'y arrive) et j'ai été très intéressé par l'outil de rapport d'erreur que vous obtenez également avec Zend Server.

Chaque fois qu'une erreur se produit ou qu'une exception est levée, Zend Server stocke autant d'informations à son sujet que possible (comme par exemple quels paramètres de requête étaient utilisés, où l'erreur s'est produite, l'heure, le message d'erreur, la trace de pile, etc ). L'exécution lente du script vous est également signalée.

Je préfère vraiment recevoir ce genre de messages d'erreur plutôt que des clients disant quelque chose comme : "Le site ne fonctionne pas. Veuillez le réparer".

Lorsque vous utilisez Zend Server en conjonction avec Zend Studio, il est assez intéressant que Zend Debugger soit déjà préinstallé (mais vous auriez pu l'installer vous-même).

Il est également fourni avec un pont php-java (vos classes java peuvent être utilisées en PHP) mais je n'en ai pas eu besoin.

Si vous avez déjà une solution de rapport d'erreur basée sur php dans votre application web ou si vous n'avez pas besoin de cette solution ni du pont java, je dirais que cela ne fait pas vraiment de différence si vous utilisez Zend Server sur votre propre installation apache (tant que vous savez comment le configurer correctement).

C'est du moins mon opinion/expérience.

J'ai utilisé l'édition développeur de Zend Platform qui est gratuite. Si je devais payer pour Zend Platform/Server, je ne pense pas que je l'utiliserais. Mais cela dépend vraiment du projet.

4voto

Kevin Schroeder Points 985

Zend Server est bien plus qu'une pile testée et supportée. André a abordé l'une des fonctionnalités de Zend Server, à savoir le monitoring. Le monitoring surveille l'exécution de votre script PHP pour certaines conditions et si un certain seuil est passé, le contexte de cette requête sera enregistré pour que vous puissiez l'examiner plus tard. Lorsque je travaille sur site avec des clients qui ont des problèmes d'application, la première chose que je fais est d'installer Zend Server et d'activer la surveillance. En quelques minutes, j'ai généralement une bonne idée de la nature de leur problème.

Dans Zend Server 5, cela a été porté à un niveau beaucoup plus élevé avec l'introduction de la fonction de traçage de code qui instrumente à l'exécution presque chaque appel de fonction/méthode individuel effectué au cours d'une requête. C'est un peu comme une combinaison de débogage et de profilage qui est fait pendant l'exécution. Dans de nombreux cas, il est possible de diagnostiquer un problème dans un environnement de production sans avoir à le reproduire.

Il existe plusieurs autres fonctionnalités que vous pouvez également utiliser. La file d'attente des travaux en est une importante pour moi, que j'utilise de manière assez intensive. Je propose un exemple d'utilisation à l'adresse suivante Vous faites la queue ? Introduction à la file d'attente des tâches de Zend Server

Il existe également deux fonctions de mise en cache différentes, le pont PHP-Java (auquel André avait également fait allusion) et Optimizer+ qui est l'un des accélérateurs d'opcode les plus rapides du marché.

3voto

mr. w Points 1224

Certes, l'aspect "testé, certifié" est appréciable dans certains environnements. Dans notre cas, les exigences en matière d'audit sont les suivantes : soit nous utilisons une pile logicielle certifiée, soit nous nous débrouillons seuls, mais nous devons montrer que nous effectuons des mises à jour rapides de chaque petit composant qui l'alimente. Donc, pour des raisons de bon sens, nous avons toujours utilisé les offres standard des distributions Linux. Le problème est qu'elles ont tendance à avoir des années de retard. Par exemple, la plupart des distributions n'ont adopté que récemment PHP 5.3 après être restées sur la version 5.1 ( !). C'est tout simplement inacceptable lorsque vous essayez de développer des applications modernes qui utilisent des techniques de codage modernes, et vous perdez beaucoup en termes de performances et de fiabilité de PHP.

Cela dit, les fonctionnalités sont également très intéressantes. @Keven a déjà mentionné la file d'attente des travaux. C'est génial pour nous, dans la mesure où nous pouvons très facilement décharger toutes sortes de tâches qui s'exécutent de manière asynchrone et garder le processus de requête principal en marche. Par exemple, l'une de nos applications crée des tâches dans notre système de suivi des bogues lorsque certains types d'événements se produisent. Comme cela se fait par service web, et que le bug tracker est horriblement lent, cela peut prendre plusieurs secondes. Cependant, plutôt que de faire attendre les utilisateurs de notre application, nous mettons simplement en file d'attente une tâche et la laissons s'exécuter en arrière-plan. De même, notre classe de messagerie standard utilise la file d'attente des tâches plutôt que de faire attendre l'utilisateur pendant que notre code communique avec un serveur SMTP. Et tout cela sans même parler de l'utilité pour des choses comme la génération de rapports volumineux, l'exécution de contrôles d'intégrité de bases de données, la reconstruction de caches, etc. etc.

Le cache de page est idéal pour les cas où vous pouvez simplement mettre en cache une page entière et en finir avec elle. Nous l'utilisons avec nos WSDL, car nous avons un meilleur contrôle que les contrôles de cache de PHP. De même, le serveur de téléchargement est merveilleux pour mettre en cache certains types de contenu, comme les images. Et nous utilisons le cache de données comme un serveur memcached local pour accélérer considérablement toutes sortes de requêtes en évitant d'interroger un serveur de base de données lent situé ailleurs sur un réseau lent.

Et bien sûr, comme le mentionne @André, il existe de très belles fonctionnalités de débogage, de traçage et de rapport d'événements.

Il existe également des fonctionnalités intéressantes pour les déploiements et les retours en arrière, qui sont très importants pour les applications critiques. J'ai l'intention de les essayer un jour, mais pour l'instant, j'utilise toujours les outils que j'ai mis en place avant d'utiliser ZS.

Aujourd'hui, vous pouvez obtenir la plupart de ces fonctionnalités (en particulier, tous les éléments de mise en cache) en bricolant une variété d'autres outils. Mais vous devez ensuite rechercher et apprendre toutes ces choses, les installer et les faire fonctionner ensemble, puis en assurer la maintenance, notamment en effectuant des tests d'intégration appropriés lors des mises à jour. C'est une lot de travail et de temps -- temps que je préférerais personnellement passer à écrire du code.

Cela dit, il y a des inconvénients. Tout d'abord, les choses semblent parfois... mal conçues et/ou peu élaborées. Par exemple, l'API du cache de données renvoie le booléen false si vous essayez de récupérer un élément qui n'existe pas. Et elle ne dispose d'aucune fonction permettant de vérifier si un élément existe sans qu'il soit nécessaire de le récupérer. Devinez ce que cela signifie : vous ne pouvez pas stocker en toute sécurité une valeur booléenne car vous ne pouvez pas la récupérer en toute sécurité. Il inclut une couche de compatibilité APC mal documentée, mais essayer d'utiliser la fonction d'existence d'APC produit une erreur de fonction non définie.

Comme autre exemple, nous utilisons des Macs pour nos stations de développement, mais par souci de compatibilité avec le matériel ancien qui tend à être utilisé par tous ces développeurs professionnels qui dépensent des milliers de dollars pour un logiciel de serveur PHP, Zend a choisi de livrer la version Mac (qui n'est destinée qu'au développement) en 32-bit. sólo . Nous sommes donc obligés de développer une application en 32 bits qui fonctionne partout ailleurs en 64 bits. Cela a provoqué un certain nombre de bogues et d'échecs de tests automatisés dans notre application, ce qui va à l'encontre de l'un des principaux objectifs de ZS, à savoir une pile logicielle identique dans les environnements de développement, de test, de stockage, d'assurance qualité et de production. J'ai essayé de les convaincre de changer cela, mais ils ont rapidement commencé à m'ignorer.

Un autre point important est que la file d'attente des travaux ne peut traiter les travaux que par le biais de requêtes HTTP. L'API est configurée pour permettre d'autres méthodes (comme l'appel en ligne de commande, beaucoup plus raisonnable), mais HTTP est la seule méthode qui fonctionne. Cela vous oblige à bloquer les connexions au serveur web avec des tâches qui, par conception, ont tendance à être longues et doivent donc être effectuées hors du contexte web. Et cela vous oblige à faire des pieds et des mains pour empêcher le monde entier de déclencher vos tâches en visitant une URL dans un navigateur. C'est tout simplement une décision stupide.

D'autres exemples sont la mauvaise gestion des événements personnalisés envoyés via l'API à Zend Monitor, le wrapper php-cli pour le binaire PHP qui se casse sur le Mac lorsqu'il est déclenché par la ligne shebang, l'absence totale de rapports sur la santé et les performances dans les outils de cache (bien qu'ils aient dit que cela allait changer dans ZS 6), et la documentation embarrassante et incomplète. Je pourrais continuer ainsi....

Ces inconvénients, ainsi que les pertes de temps et de ressources qu'ils entraînent, ne l'emportent évidemment pas sur les avantages pour nous, mais pour la somme d'argent que nous dépensons, je m'attends vraiment à plus.

0voto

Somnath Muluk Points 10173

Le traçage de code est le meilleur outil fourni par Zend Sever.

  1. L'analyse des causes profondes fait perdre du temps aux développeurs
    Il est facile de résoudre un problème lorsque l'on en connaît la cause. Cependant, trouver la cause profonde des problèmes est souvent difficile pendant les tests, et incroyablement difficile lorsque l'application fonctionne en production. Essayer de reproduire exactement le même environnement, l'état de l'application et la charge dans le laboratoire de développement est à la fois chronophage et source d'erreurs, et cela éloigne les développeurs de leur tâche la plus importante : écrire du code. Zend Server 5 amène l'analyse des causes premières à un tout autre niveau en proposant le traçage du code.
    Un enregistreur de vol pour votre application PHP Qu'est-ce que le traçage de code ?
    Pensez à la boîte noire d'un enregistreur de vol. Lorsque quelque chose ne va pas dans un avion, vous ne voudriez probablement pas "reproduire" le problème. C'est pourquoi l'enregistreur de vol capture l'ensemble des données dont les analystes de vol peuvent avoir besoin pour comprendre pourquoi le problème s'est produit.

  2. Zend Server Code Tracing est comme un enregistreur de vol pour PHP.
    Plutôt que de passer du temps à essayer de configurer l'environnement et à reproduire toutes les étapes qui ont mené à la panne, Zend Server capture l'exécution complète de votre application en temps réel - en production ou en laboratoire de test - afin que vous puissiez rapidement trouver la cause première.

  3. Le traçage du code de Zend Server réduit le temps d'analyse des causes profondes
    Le traçage du code de Zend Server est activé automatiquement, lorsqu'un problème est détecté, ou manuellement par l'utilisateur, par exemple pendant un projet d'optimisation. Les données enregistrées par le traçage du code de Zend Server comprennent :

    • Arbre des appels de fonction
    • Arguments
    • Valeurs de retour
    • Durée
    • Utilisation de la mémoire
    • Ligne de code
    • Nom du fichier

La trace affichée dans la console web de Zend Server vous permet de visualiser - comme sur un DVD - l'historique de l'exécution de votre application et de suivre les traces d'une seule requête problématique afin d'identifier rapidement la cause du problème.

0voto

2upmedia Points 551

Je travaille sur des applications PHP qui fonctionnent sur de gros serveurs IBM (IBMi Series) avec de vieux logiciels qui fonctionnent depuis 20 ou 30 ans en COBOL. Zend Server est donc la seule plateforme PHP que je connaisse qui fonctionne sur IBMi ou du moins qui soit aussi robuste. Ces systèmes sont critiques. En fait, la plupart des compagnies d'assurance, des banques, des actions, et même des districts scolaires utilisent ce type de systèmes. Puisque vous pouvez exécuter quelque chose comme Zend Server, vous pouvez faire des choses comme construire une API REST qui expose ces anciens systèmes d'une manière moderne et permet une architecture orientée service. C'est ce sur quoi j'ai travaillé, ainsi qu'un système événementiel qui utilise le CLI de PHP et Zend Job Queue pour envoyer des données à des tiers. Dans ce cas, nous synchronisons les données de notre côté à celui du vendeur.

Le serveur Zend sur IBMi est configuré avec un front-end nginx pour les ressources statiques (CSS, images, etc.) et utilise des processus FastCGI pour le PHP dynamique, c'est donc une configuration assez puissante. Elle ouvre définitivement les vieux systèmes à la modernisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X