Verfügbarkeit von AWS-Applikationen mit New Relic Synthetics sicherstellen

Die Verfügbarkeit von AWS-Apps lässt sich mit Performance-Monitoring und End-to-End-Tests sicherstellen. Das Tool der Wahl: New Relic Synthetics.

DevOps-Mitarbeiter haben alle Hände voll zu tun. Es reicht nicht aus, einfach Entwickler oder Support-Mitarbeiter zu sein – Sie sind voll verantwortlich für die Software. Das bedeutet gleichzeitig, dass weniger Menschen dieselbe – wenn nicht mehr – Arbeit bewältigen müssen.

Verfügbarkeit und Skalierbarkeit sind die beiden großen Vorzüge und Sorgenkinder der Public Cloud. Verfügbarkeit ist dabei sicherlich das Wichtigste, was Kunden von Ihrer Cloud-Umgebung erwarten. Geht also Ihr Dienst in die Knie, ganz egal zu welcher Zeit oder aus welchem Grund, so stehen Ihre Kunden bei Ihnen auf der Matte.

IT-Teams müssen Prozess und Produktivität so gegeneinander abwägen, dass

  • stets Hochverfügbarkeit ohne Behinderung des Entwicklungsprozesses gewährleistet ist,
  • Produktionsdienste fortlaufend getestet und Probleme jederzeit erkannt werden können (auch in Schwachlastzeiten) und
  • Daten und Arbeitslasten vor unautorisiertem Zugriff geschützt sind.

Dieses Problem ist nicht neu, und glücklicherweise gibt es verschiedene Werkzeuge, die dabei unterstützen. Oftmals ermöglicht es Ihnen der Einsatz eines APM-Tools (Application Performance Monitoring) mit End-to-End-Tests, das System verfügbar zu halten und Cloud-Ausfälle bereits vor Ihren Nutzern zu bemerken.

New Relic Synthetics beispielsweise überwacht den Zustand aktiver Anwendungen, einschließlich Serverauslastung, APM und detaillierter nutzerbasierender Fehlerauswertung. Synthetics bietet eine Selenium-basierte Schnittstelle an, die Entwicklern einfache Webseiten-Tests ermöglicht. 

Eine ergänzendes HTTP-Schnittstelle versorgt IT-Teams mit Informationen über Unregelmäßigkeiten der Programmierschnittstelle. Das Werkzeug kann sogar einen echten Nutzer simulieren und gefundene Problemstellen an die Entwickler zurückmelden.

Wenngleich das Tool zwar keine vollständigen Browser-Kompatibilitätstests anbietet, gibt es doch einen guten Überblick darüber, ob bestimmte Funktionen erwartungsgemäß arbeiten – und das mit nur wenigen einfachen Zeilen Code. Sie können die Zeitspanne zwischen Tests ebenso angeben wie die geographischen Zielregionen für die Tests selber. Müssen Sie sicherstellen, dass Ihre Anwendung global erreichbar ist, so kann Synthetics auch dies verifizieren.

Der Skalierbarkeit webbasierender Anwendungen kommt in Cloud-Szenarien die Schlüsselrolle zu. Es gibt unterschiedliche Wege, dies zu erreichen. Der einfachste ist allerdings, einen PaaS-Dienst (Platform-as-a-Service) wie AWS Elastic Beanstalk zu verwenden. 

Sie können auch Auto Scaling-Gruppen nutzen. Dabei ist entscheidend, dass das System automatisch neue Server startet, wenn die bestehenden Server überlastet sind. Sie benötigen daher auch ein gutes DevOps-Werkzeug, um die AWS-Systemleistung und deren Verlauf bei hoher Auslastung zu überwachen.

Mit New Relic Application Performance Monitoring können Unternehmen Code tunen und auswerten, wie sich solche Änderungen unter hoher Auslastung auf Anwender auswirken. IT-Teams können außerdem PagerDuty nutzen, um bei Unterschreitung einer bestimmten Leistungsgrenze benachrichtigt zu werden. So kann das Personal zusätzliche Server für die Lastverteilung hochfahren.

Einstieg in New Relic Synthetics

Die Nutzung von New Relic Synthetics bedarf einiger grundlegender Vorarbeiten. Zu allererst setzen Sie einen rudimentären Ping-Monitor auf, um sicherzustellen, dass der Webdienst auf Traffic reagiert. Ping-Monitore sind kostenlos und zahlen nicht auf Quotas oder Tool-Nutzungen ein.

Außerdem können Ping-Monitore zeitgleich zu anderen Tests desselben Systems laufen. Auf diese Weise können Sie, wenn ein geskripteter Browser-Test bei gleichbleibender Ping-Antwort versagt, sofort abgrenzen, dass das Problem nicht einfach nur ein toter Server ist. 

Sie können ebenfalls konfigurieren, wann und wo Tests ausgeführt werden sollen. Es ist schwierig, sämtliche möglichen Nutzerhandlungen durch Tests abzudecken. Wenn Sie jedoch die wesentlichen Funktionalitäten definieren, so können Sie mit New Relic Synthesis entsprechende End-to-End-Tests dafür schreiben.

Vergessen Sie nicht: Jeder Zielort wird autark behandelt und Tests werden gestaffelt ausgeführt. Setzen Sie ein 15-minütiges Intervall fest und pingen Sie von drei Orten aus an, so empfangen Sie alle 5 Minuten ein Signal von einem der Standorte.

Fügen Sie als Nächstes einen geskripteten Browser-Test hinzu. Dieser ermöglicht Ihnen das Austesten individueller Funktionalität wie etwa das Suchen von Elementen auf Ihrem System, den Klick auf den Such-Button und das Sicherstellen der Anzeige des korrekten Elements.

Nehmen Sie als Beispiel ein Skript, das die einzelnen Schritte eines echten Menschen nachbildet:

  1. Suchen Sie nach „Ebola“.
  2. Klicken Sie auf den ersten Eintrag der Ergebnisliste.
  3. Prüfen Sie, dass die Überschrift der des Artikels entspricht.
  4. Klicken Sie auf Weiterlesen.
  5. Klicken Sie auf die Schaltfläche Login, geben Sie einen Benutzernamen und ein Kennwort ein, und klicken Sie dann auf Absenden.
  6. Prüfen Sie, dass der verwendete Benutzername in der rechten oberen Ecke angezeigt wird.

Ausprobieren des Skripts

Das nachfolgende Skript ist ein Beispiel für einen New Relic Synthetics-Test:

1. Laden Sie die Seite mit der Adresse in MY_SITE_URL und suchen Sie nach „Ebola“.

 

$browser.get(MY_SITE_URL).then(function(){

  return $browser.waitForAndFindElement($driver.By.css('form.search

input[name=q]')).then(function(element){

    element.sendKeys('Ebola');

    element.submit();

  });

})

2. Klicken Sie auf den ersten Eintrag der Ergebnisliste.

 

.then(function(){

  console.log('Ersten Listeneintrag anklicken');

  return $browser.waitForAndFindElement($driver.By.css('div.search-result

a.headline')).then(function(element){

    element.click();

  });

})

3. Prüfen Sie, dass die Überschrift der des Artikels entspricht.

 

.then(function(){

  return $browser.waitForAndFindElement(

     $driver.By.xpath('//header//h1')).then(function(element){

          element.getText().then(function(h1Text){

          console.log('H1-Titel: %s', h1Text);

     assert.ok(h1Text.toLowerCase().indexOf('ebola') > -1, "Überschrift passt nicht.");

    });

  });

})

4. Klicken Sie auf Weiterlesen.

 

.then(function(){

  return

$browser.waitForAndFindElement($driver.By.css('a.read-fulltext')).then(function(element){

    element.click();

  });

}).then(function(){

     // Sicherstellen, dass der iFrame lesbar ist

     console.log('Suche iFrame-Text');

     return $browser.waitForAndFindElement($driver.By.css('div.modal-body

iframe')).then(function(element){

    element.getText().then(function(txt){

      console.log('Vollständiger Text: %s', txt);

    });

  });

 }).then(function(){

     // Schließen-Schaltfläche betätigen

     return

$browser.waitForAndFindElement($driver.By.css('button.close')).

then(function(element){

    element.click();

  });

})

5. Klicken Sie auf die Schaltfläche Login, geben Sie einen Benutzernamen und ein Kennwort ein, und klicken Sie dann auf Absenden. Prüfen Sie daraufhin, dass der Benutzername angezeigt wird.

 

.then(function(){

     console.log('Einloggen mit E-Mail-Adresse');

  return

$browser.waitForAndFindElement($driver.By.partialLinkText('Login')).

then(function(element){

    // Login-Schaltfläche betätigen

       return element.click();

  }).then(function(){

    // Warten auf die Anzeige des modalen Login-Dialogs

    return $browser.wait(function(){

      return $browser.findElement($driver.By.id('loginModal')).isDisplayed();

    }, 1000);

  }).then(function(){

    // E-Mail/Benutzernamen eingeben

    return $browser.findElement($driver.By.css('form[name="login_form"]

input[name="email"]')).sendKeys(username);

  }).then(function(){

    // Kennwort eingeben

    return $browser.findElement($driver.By.css('form[name="login_form"]

input[name="password"]')).sendKeys(password);

  }).then(function(){

    // Absenden

    return $browser.findElement($driver.By.css('form[name="login_form"]

button[type="submit"]')).click();

  }).then(function(){

    // Auf das Einblenden der Benutzerinformation warten

    return $browser.wait(function(){

      return

$browser.waitForAndFindElement($driver.By.css('*[ng-bind="user.displayName"]')).

then(function(element){

        return element.getText().then(function(txt){

          console.log('Benutzername gefunden', txt);

             return txt === MY_USER_NAME;

        });

      });

    },5000);

  }).then(function(){

    // Prüfung: Zurück zur richtigen URL?

    return $browser.getCurrentUrl().then(function(url){

      return assert.ok(MY_SITE_URL_PATTERN.test(url));

    });

  });

});

New Relic-Preisgestaltung

New Relic Synthetics ist in der Pro-Edition als kostenlose 14-Tage-Testversion verfügbar. Nach Ablauf der 14 Tage wechseln Anwender automatisch in die kostenlose Lite-Lizenz. Der gebührenpflichtige Pro-Plan kostet 59 US-Dollar pro Monat bei jährlicher Abrechnung oder 79 US-Dollar bei monatsweisem Abonnement. Beide Stufen enthalten 13 Monate Data Retention, mehr als 10.000 erweiterte Prüfungen und Zugang zu Forum und Online-Support.

Auch für New Relic Application Performance Monitoring ist eine 14-tägige Testphase der Pro-Ausgabe verfügbar, nach der ebenfalls ein automatischer Wechsel in die Lite-Lizenz erfolgt. Der kostenpflichtige Pro-Plan schlägt mit 149 US-Dollar pro Monat und Host zu Buche. Enthalten sind unbegrenzte Data Retention, Transaction Traces, Cross-Application Traces und der Zugang zum Gold Support.

Alternative Tools zum Monitoring von AWS-Anwendungen

Einer der Vorteile von New Relic ist die Vielzahl der Dienste, einschließlich einer einzigen Plattform für verschiedene Angebote. Dennoch handelt es sich dabei aber natürlich nicht um das einzige Tool für Application-Monitoring und geskriptete Browser-Tests.

New Relic Synthetics setzt auf die Open-Source-Plattform Selenium auf. Selenium eignet sich hervorragend für Tests grundlegender Funktionalitäten und von API-Endpunkten, kann aber bei geskripteten Browser-Tests nicht mithalten. Andere Dienste wie Browserstack und Browsera bieten mehr Funktionalität inklusive Browser-Tests. Allerdings sind diese Produkte im Zweifelsfall teurer und verfügen nicht über die APM-Integration. Für APM bieten AppDynamics und SolarWinds vergleichbare Produkte an.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+ und Facebook!

Artikel wurde zuletzt im April 2015 aktualisiert

Erfahren Sie mehr über Cloud Computing

- GOOGLE-ANZEIGEN

ComputerWeekly.de

Close