Datacenter-automatisering a.k.a. “DevOps” met Puppet

3 maart 2014 - Door Cies Breijs  (Geen reacties)    Development

Wayang puppets by Kevin Gessner

Bij Hoppinger hebben we op dit moment 24 servers in beheer -- dit heb ik zojuist geteld in ons "server monitoring dashboard". Dit aantal is in de afgelopen 2 jaar verdubbeld.

De groei in het aantal servers is te verklaren vanuit twee nieuwe ontwikkelingen:

  1. Er wordt steeds meer gebruik gemaakt van "virtual machines" (VMs), hiermee kunnen meerdere servers gelijktijdig op 1 fysieke machine draaien (ook wel VPS genoemd).
  2. Onze klanten vragen ons steeds vaker een server in beheer te nemen, meestal een server waar een door ons ontwikkelde website op draait. Slim, aangezien wij de website hebben gebouwd zijn we bij uitstek geschikt om deze ook in de lucht te houden; zo heeft men één aanspreekpunt.

Met de verwachting dat het aantal servers in ons beheer elke twee jaar verdubbelt, is het vanzelfsprekend dat we er alles aan doen om "serverbeheer" --beter bekend als "operations", of afgekort "ops"-- zo schaalbaar mogelijk op te zetten.

Achtergrond

Wanneer we een server onder onze hoede nemen zijn er een aantal werkzaamheden die we verrichten voordat we hem in gebruik kunnen nemen, dit zijn onder andere:

  • Het "operating system" (OS) installeren;
  • Gebruikersaccounts aanmaken;
  • De juiste tijdzone aangeven;
  • Beveiligingsmaatregelen instellen (firewall, permissies, etc.);
  • Zorgen dat elke nacht de back-ups draaien;
  • De server aanmelden bij ons "server monitoring dashboard";
  • Installeren en configureren van software (bv. Apache, MySQL).

De invulling van het laatste punt hangt uiteraard sterk af van de taken die de server bedeeld krijgt.

Het handmatig uitvoeren van de bovengenoemde punten kost tussen een dag en een halve week werk, afhankelijk van de exacte invulling en het ervaringsniveau van de persoon die deze taken op zich neemt. Behalve tijdrovend is de handmatige aanpak ook erg foutgevoelig: er is geen manier om te weten of alle taken juist (of überhaupt) zijn uitgevoerd. Handmatig configureren zal er ook toe leiden dat serverconfiguraties onderling verschillen, hetgeen onderhoud aanzienlijk complexer maakt.

Nadat de server in gebruik is genomen zal deze up-to-date gehouden moeten worden: nog meer tijdrovend en foutgevoelig werk, en dat voor een aantal servers dat elke twee jaar verdubbelt!

Configuration management

Als oplossing voor het bovengenoemde probleem zijn in de afgelopen 10 jaar een aantal open source "configuration management" toepassingen ontstaan en/of populair geworden.  Enkele bekende namen van dit soort toepassingen zijn CFEngine, Chef, Puppet en Salt.  Alle zojuist genoemde toepassingen zijn open source, en dat is niet zonder reden. Zonder open source software hadden we voor elke nieuwe server eerst een aantal softwarelicenties moeten kopen, en dat zou het installeren, upgraden en beheren van servers nog verder compliceren.

Bij Hoppinger hebben we voor Puppet gekozen. Hiermee kunnen we --nadat we het operating system en Puppet zelf hebben geinstalleerd-- alle overige punten uit het bovenstaande lijstje automatiseren. Zo'n geautomatiseerde installatie kost dan nog maar 30 minuten, en behoeft verder geen handmatige handelingen.  Dat scheelt een hoop werk en is veel minder foutgevoelig!

Puppet

Door gebruik te maken van Puppet kan veel handmatig werk worden voorkomen bij het inrichten en beheren van servers.  In plaats van inloggen op de server en daar een bepaalde taak uitvoeren, biedt Puppet de mogelijkheid om op een centrale plek deze wijzigingen te "beschrijven".  De centrale plek wordt de "Puppet Master" genoemd, deze staat via een beveiligde verbinding in contact met de overige servers.

De "beschrijvingen" zoals die op de Puppet Master staan zijn erg modulair, zo kan een beschrijving gebruik maken van andere beschrijvingen (net als libraries & modules in programmeercode). Vrijwel elk aspect van een server kan op deze wijze beschreven worden. Niet elke server maakt gebruik van alle beschrijvingen: web-servers en database-servers behoeven verschillende beschrijvingen, maar zullen zeker ook overeenkomsten hebben, de modulaire aanpak kan hier gemakkelijk mee overweg.

Dev-ops

Het woord "dev-ops" is een samentrekking van "development" (software-ontwikkeling) en "operations" (serverbeheer) en beschrijft serverbeheer met gebruik van een "configuration automation"-tool zoals Puppet. Het waren de "DevOps Days" bijeenkomsten, die in 2009 voor het eerst in België werden georganiseerd, die het woord tot een wereldwijd begrip hebben gemaakt.

In een wereld waarin het aantal servers soms exponentieel snel kan groeien, is het niet meer mogelijk om serverbeheer met de hand te doen. De oplossing: formele beschrijvingen maken van je gewenste serverconfiguratie en deze door een stuk software laten uitrollen naar alle server/datacenters. De taken van een systeembeheerder lijken hierdoor steeds meer op de taken van een developer; vandaar de term "dev-ops".

Versiebeheer met Git: een kijkje in onze “operatiekamer”

27 januari 2014 - Door Richard Bakker  (Geen reacties)    Development

 

(c) Joseph A. Boomhower - U.S. Navy

Zorgvuldig maakt de chirurg een kleine incisie in de knie van de patiënt. Een van de operatie-assistenten reikt de chirurg een lang instrument aan, met op de kop een minuscuul cameraatje. Onderwijl houdt de anesthesist de toestand van de patiënt nauwlettend in de gaten. Vijf teamleden bevinden zich in de operatiekamer om ervoor te zorgen dat de patiënt straks weer fluitend een wandeling kan maken. Hij wordt geopereerd aan een beschadigde meniscus.

Ikzelf bevind me niet in de operatiekamer; laat staan in het ziekenhuis. Voor de televisie ben ik toeschouwer van dit fantastische staaltje teamwork. Vijf man uit verschillende disciplines die als één geoliede machine samenwerken. Daar heb ik enorme bewondering voor.

Ook in mijn eigen vakgebied wordt gewerkt in teamverband met teamleden van, min of meer, verschillende disciplines. Ik werk in een team van front- en backend developers, grafisch vormgevers, user experience designers, enzovoorts. Bij het multidisciplinaire team stopt ook abrupt de vergelijking met het operatieteam. Het zijn twee heel verschillende dingen. Maar het televisieprogramma bracht me wel op een idee. Misschien is het aardig om opdrachtgevers en andere geïnteresseerden eens een kijkje te geven in onze "operatiekamer"! Lees meer

SVG voor scherpe afbeeldingen op alle resoluties

27 november 2013 - Door Wouter Ramaker  (2reacties)    Webdesign

SVG idee

Scalable Vector Graphics (SVG) is een op XML gebaseerd bestandstype voor afbeeldingen. In XML wordt een omschrijving opgeslagen van de verschillende vormen die samen een afbeelding vormen. Deze omschrijving wordt door de browser geïnterpreteerd en als bitmap (pixel) afbeelding gerenderd.

Sinds de opkomst van High Pixel Density (Retina) schermen moeten afbeeldingen op een website steeds groter (1.5x, 2x) worden. Dit betekent dus dat er meerdere bestanden (voor elke resolutie één) of zwaardere bestanden dan nodig zijn (alleen het grootste formaat inladen en die dan verkleinen).

Maar wat als je nu één afbeelding kan gebruiken die geschikt is voor elke resolutie en ook nog een kleine bestandsgrootte heeft? Met nog een paar extra voordelen; de afbeelding is een DOM object, onderdelen ervan zijn benaderbaar met javascript (of ECMAscript in de SVG zelf) en stijlbaar met CSS. Dat is SVG!

Lees meer