Développement SharePoint… sur Amazon!?!

Les solutions pour mettre en place des environnements de développement SharePoint sont multiples. Avec quelques collègues, nous avons récemment réfléchi pour trouver une solution abordable et flexible. Voici quelques critères que nous avons identifiés :

  • permet d’avoir autant d’environnements SharePoint que nécessaire;
  • permet d’avoir accès à un domaine central (pas attaché à l’une ou l’autre des machines de développement);
  • avoir un coût mensuel raisonnable;
  • ne nécessite pas l’installation de serveurs physiques;
  • est performante;
  • disponible partout;
  • ne nécessitant pas d’avoir une machine physique très performante (et très lourde dans le cas d’un portable).

Après avoir analysé les diverses pistes de solution, Metalogique a décidé d’opter pour une infrastructure dans le cloud basée sur l’offre d’Amazon. Dans un premier temps, nous avons mis en place un VPC permettant d’avoir un réseau privé dans le cloud d’Amazon et de permettre la communication entre les diverses machines par leur interface réseau privé. Ensuite j’ai fait l’installation d’un contrôleur de domaine et d’un serveur TFS en utilisant des instances EC2 de petite taille. Ces deux serveurs roulent 24/7 et sont suffisamment performants pour notre équipe d’une dizaine de développeurs.

Ensuite, chaque développeur peut gérer sa (ou ses) machine de développement SharePoint. La configuration initiale de celle-ci est entièrement scriptée et prend moins d’une heure. On utilise des instances r3.large (6.5 ECU, 15GB ram) qui sont très performantes et relativement économiques (0.30$ / h incluant Windows et SQL Express). Il est aussi très facile d’augmenter la capacité d’une instance dans le cas où cela serait nécessaire.

Un seul problème avec cette solution. Si les machines de développement roulent 24/7, on paie entre trois et quatre fois trop cher car les employés ne les utilisent que 7-8h par jour. À moins de donner l’accès à tous les employés à la console de gestion Amazon (avec tous les droits sur le compte), il est impossible pour un développeur d’arrêter ou de démarrer son instance à la demande.

Encore une fois, la solution est assez simple. J’ai développé une application web MVC .NET utilisant le SDK AWS .NET afin de se connecter au compte AWS de Metalogique et de présenter au développeur uniquement les machines lui étant assignées (en utilisant les tags). Le développeur n’a qu’à se connecter à l’application MVC, et démarrer ou arrêter sa machine au début ou à la fin de sa journée de travail.

Il serait également possible d’automatiser le démarrage ou la fermeture des instances selon un horaire prédéfini, mais la solution actuelle convient à nos besoins pour le moment.

Depuis l’implantation, la solution fonctionne très bien. La performance est intéressante, on peut se connecter en RDP aux machines de n’importe où, le coût est accessible à une PME, pas besoin de faire l’entretien de serveurs physiques, plus besoin de trainer un portable de 15lbs (vive les ultrabooks) et ça peut fonctionner avec d’autres applications (j’ai récemment créé une instance Linux pour un collègue en mandat).

Je vous invite à me contacter si vous avez des questions ou des commentaires. Si l’intérêt est là, je ferai un autre billet sur les aspects plus techniques de la configuration.

Advertisements