I'm in DevOps – A Modern Application Builder’s Guide to Testing (Level 300)

Hallo alle miteinander Willkommen zu „Eine Anleitung zum Testen“ Ich bin Bikram Bora Ich bin Solutions Architect bei Amazon Web Services In dieser Session sehen wir uns an, wie man die Kraft des Testens nutzt, um widerstandsfähigere, günstige und skalierbare Software zu entwickeln Legen wir gleich los Wir sehen es uns aus der Sicht einer Codezeile an Wie sie im Laptop eines Entwicklers entsteht direkt bis zur Produktion Wir beginnen mit der lokalen Entwicklungs- und Testumgebung In dieser lokalen Umgebung schreiben wir wiederholend Code, debuggen und testen Je schneller die Feedbackschleife in diesem Abschnitt, desto schneller kriegen Entwickler fehlerfreie Funktionen in die Hände von Kunden Der nächste Schritt ist die Integration In diesem Schritt betrachten wir Folgendes: Wie funktioniert unser Code oder unsere Funktion mit dem Code anderer Entwickler? Hier prüfen wir, dass er Eigenschaften anderer nicht zerstört und wie gut er in der Codebasis und mit anderen Services funktioniert, mit denen er integriert Das kann in einem lokalen Server stattfinden, oder in der Cloud Der letzte Schritt ist die Bereitstellung des Codes Und hier bringen Sie es in die Produktion oder wenn es eine mobile App ist direkt in die Hände von Kunden In diesem Schritt überwachen wir die App noch ständig Ihnen fällt sicher auf, dass ich das Testen weggelassen habe Das liegt daran, dass Testen implizit in jede Phase integriert ist Je mehr Tests wir machen können, desto mehr Feedback können wir in Echtzeit bekommen, desto robuster wird unsere Software und desto besser wird die Qualität unseres Codes Steigen wir direkt in den ersten Abschnitt ein, lokale Entwicklung und Tests Wenn Sie lokal in AWS entwickeln und testen, verwenden die meisten Kunden eine Vielzahl von Tools Entwickler verwenden unterschiedliche IDEs, Toolkits und SDK Denn in der AWS Welt, wenn Sie AWS Cloud9 verwenden, das ist eine Entwicklungsumgebung, die auf der Cloud basiert, und Sie können unsere nativen Tools zum Entwickeln verwenden Sie können auch Eclipse als IDE verwenden oder AWS Command Line Wenn Ihnen Visual Studio mehr liegt, wir unterstützen auch Visual Studio und VS Code Wenn Sie in IntelliJ Suite sind, können Sie IntelliJ oder PyCharm verwenden, oder, wenn Sie ein Android- / iOS-Entwickler sind, nutzen Sie Amplify für Android und iOS Wie Sie sehen können, unterstützen wir weiterhin ein abwechslungsreiches Set an Entwickler Toolsets und wir werden unseren Einsatz fortführen Wenn Sie AWS verwenden, haben Sie wahrscheinlich von AWS CloudFormation gehört Damit erstellen Sie Infrastruktur als Code und können Ihre gesamte Backend Infrastruktur skripten Zusätzlich zu CloudFormation haben wir Toolsets wie AWS Amplify und AWS SAM erstellt, die es Entwicklern einfacher machen gemeinsame Konstrukte zu bauen Also als Beispiel: Wenn Sie AWS Lambda lokal emulieren wollen, dann sind das die Tools Entwickler fragen mich oft: „Wie kann ich die Cloud Services replizieren, die ich lokal benutze, um die Geschwindigkeit meiner Feedbackschleife zu erhöhen?“ Nun, das wird mit Tools wie AWS Amplify und AWS SAM erreicht Schauen wir uns an, welche Services Sie lokal emulieren können Wenn Sie AWS verwenden und unsere Endpunktservices replizieren möchten, können Sie unsere ICTP-Endpunkte, REST-Endpunkte, oder GraphQL-Endpunkte replizieren So können Sie AWS API Gateway und AWS AppSync replizieren Sie können auch AWS Lambda emulieren, das ist eine „Function as a Service“ Sie können AWS Step Functions und AWS DynamoDB replizieren und wenn Sie unsere Entwickler Suite von Code Tools verwenden, können Sie Cloud9, CodeBuild oder CodeDeploy replizieren Nachdem Sie die Services zu Templates aufbereitet und die lokale Funktionalität sichergestellt haben, können Sie sie in der Cloud mit der Gewissheit bereitstellen, dass sie identisch arbeiten Diese Fähigkeit, die Cloud Services auf Ihren lokalen Laptop zu bringen, lokal zu testen und es dann zurück in die Cloud zu bringen, erhöht die Geschwindigkeit der Entwickler enorm Schauen wir uns ein Beispiel an, in dem ich als Entwickler eine Codezeile geschrieben habe Es kann eine Fehlerbehebung oder ein Funktionszweig sein Also in diesem Fall benutze ich Funktionszweig GitFlow Und ich führte ein paar Commits aus Ich machte einen Zweig vom Master, ein paar Commits und bin dabei, einen Pull Request zurück in den Master zu stellen In diesem Beispiel, wenn ich eine Pull-Anfrage stelle, ist der übliche Flow, dass ein anderer Entwickler meinen Code prüft und mir Feedback gibt Das bedeutet, ich muss warten, bis ein anderer Entwickler verfügbar ist, und was wir dann oft sehen, ist, dass in Code Prüfungen Entwickler dazu neigen, sich eher auf Geschäftslogik als auf Code Ineffizienzen zu konzentrieren

Und an dieser Stelle möchte ich einen Service vorstellen, Amazon CodeGuru Reviewer CodeGuru Reviewer integriert mit Ihrem Git-Arbeitsablauf Nachdem Sie Ihr Repository verbunden haben, entweder ein Git Repository oder ein CodeCommit Repository, liest er bei jeder Pull Anfrage Ihren Code und gibt intelligente Empfehlungen zur Ineffizienz Ihres Codes, die Sie korrigieren können, bevor eine andere Person ihn prüft Wie ich sagte, CodeGuru integriert mit zwei Arten von Git Repositorys, also GitHub und CodeCommit Nachdem Sie Ihre Repositorys zugeordnet haben, wird er bei jeder Pull Anfrage ausgelöst Also lasst uns gleich zu einer Demo von Amazon CodeGuru Reviewer gehen Beginnen wir mit der Demo für Amazon CodeGuru Reviewer Hier bin ich im Dashboard von Amazon CodeGuru Reviewer Links gehe ich einfach in verknüpfte Repositorys Ich klicke auf „Repository zuordnen“ oben rechts Die Quellanbieter sind, wie Sie sehen, GitHub und AWS CodeCommit Wenn ich CodeCommit verwende, authentifiziere ich mich über eine IAM-Rolle und bei GitHub authentifiziere ich mich mit Benutzername und Passwort, dem üblichen Login Ich klicke „Mit GitHub verbinden“ Ich habe mich auf diesem Computer bei GitHub angemeldet und mein Login wird für die Verbindung mit GitHub genutzt Jetzt, da wir mit GitHub verbunden sind, werden all meine GitHub Repositorys hier verfügbar Ich kann einen von ihnen auswählen und „Verknüpfen“ klicken Jetzt ist mein GitHub Repo im Verknüpfungszustand Sobald dies abgeschlossen ist, wird CodeGuru anfangen, alle Pull Anfragen zu überwachen, die ich stelle Sobald ich eine Pull Anfrage in meinem Repo stelle, prüft er den Code in der Pull Anfrage und gibt mir intelligente Empfehlungen Wie Sie hier sehen können, habe ich bereits ein Repo zugeordnet, CodeGuru Java Test Schauen wir uns mal den Inhalt an Also, hier ist mein leeres GitHub Repo, genannt „code-guru-java-test“ Es enthält keinen Code, abgesehen von ‘readme’ Ich durchkämmte dieses „java designs patterns“ Repo und lud den gesamten Code herunter Und dann lud ich in meinem code-guru-java-test alles in einen Zweig hoch, genannt „Funktionszweig“ Also los geht’s, der gesamte Code ist hier Ich stelle jetzt eine Pull Anfrage aus meinem Funktionszweig, der den gesamten Code enthält, an meinen Master, der derzeit komplett leer ist Das bedeutet, dass die Pull Anfrage den gesamten Code enthält Und sobald die Pull Anfrage gestellt wird, liest CodeGuru den gesamten Code durch und gibt mir Empfehlungen Also gehe ich zu „Pull Anfrage“ und stelle eine Pull Anfrage Beachten Sie, dass ich bereits eine Pull Anfrage gestellt habe Das ist eine Pull Anfrage vom Funktionszweig zum Master Hier sehen Sie, dass CodeGuru in der Zeile automatisch generierte Kommentare enthält Also Amazon CodeGuru Reviewer gibt mir Kommentare, je nach Abschnitt der Datei, auf die er sich bezieht Was Sie hier sehen, es gibt ein Speicherleck und er sagt mir, welche Klasse das Speicherleck schließen wird Wenn wir runter gehen, empfiehlt er mir, eine andere Datumsformatklasse zu verwenden Und noch weiter unten gibt es andere Empfehlungen, es gibt ein Problem mit Thread Sicherheit Bezogen auf gleichzeitige Hash Map empfiehlt er, eine andere Klasse zu verwenden Was Sie beobachten ist, dass ich alle Code Ineffizienzen beheben kann, bevor ein anderer Mensch sich diesen Code anschaut Das bedeutet, dass alle meine echten Entwickler sich auf Geschäftslogik und Funktionen für Kunden konzentrieren können, anstatt auf meine Code Ineffizienzen Das Beste an CodeGuru ist, nachdem Sie das Repo mit dem CodeGuru Service verknüpft haben, müssen Sie sich nie wieder in AWS anmelden Ihr Entwickler Arbeitsablauf ändert sich nicht, es ist bereits in den vorhandenen Entwickler-Workflow eingebettet Das war die Demo für CodeGuru Reviewer, kehren wir zu Präsentation zurück Okay, wir sahen die Demo für Amazon CodeGuru Reviewer, machen wir weiter Unsere Code Überprüfung wurde akzeptiert und wir fügten den Funktionszweig in den Master ein In dieser Phase beginnen die Integration und der Testablauf, lassen Sie uns darauf eingehen In der Integrations- und Testphase, wie ich bereits erwähnte, überprüfen wir, wie unser Code im Zusammenspiel mit anderen funktioniert Also in dieser Phase setzt das Sourcecodemanagementsystem ein, wir erstellen, testen und stellen unseren Code bereit In der Welt von AWS verwenden Sie AWS CodeCommit, AWS CodeBuild und CodeDeploy um Ihren Code zu veröffentlichen Diese Tools sind Teil eines Services

namens AWS CodePipeline Wenn Sie Services von Drittanbietern verwenden oder einen Service, der von unseren Partnern erstellt wurde, können Sie jeden davon verwenden und in den entsprechenden Steckplatz einsetzen Für diese Sitzung schauen wir uns AWS CodeBuild im Detail an Wir beginnen mit AWS CodeBuild Wir steuern CodeBuild und geben ihm Anweisungen durch eine ‘Buildspec.yml’ Datei Das Schöne daran ist, es wird auch im Source-Control geprüft Bei jeder zusammengefügten Pull Anfrage oder je nachdem, wie Sie einen Build auslösen, bekommen Sie eine neue angedockte Umgebung, in die Sie alle Ihre Abhängigkeiten herunterladen und eine neue Version Ihres Pakets erstellen können Das heißt, es gibt keine Abhängigkeitsmutation oder etwas anderes, das die Leistung Ihres Builds beeinträchtigt Schauen wir uns die Details an, was in der ‘buildspec.yml’ Datei ist: Zuerst haben wir Umgebungsvariablen Das sind also alle Variablen, die injiziert werden müssen Stellen Sie sie sich als Passwörter oder Parameter vor In diesem Stadium kann CodeBuild Services wie Secrets Manager und SSM Parameter Store aufrufen, um verschlüsselte Passwörter abzurufen Sie müssen sie also nicht im Klartext in Ihren Code einfügen In der nächsten Phase konfigurieren Sie die Phasen der Installation: Pre-Build, Build und Post-Build Nachdem Sie die Binärdatei installiert und erstellt haben, können Sie in der Post-Build-Phase Ihren Code in jeder beliebigen Testsuite testen In der nächsten Phase haben Sie Berichte Also in dieser Phase werden die Ausgaben Ihres Builds und Ihre Tests in zum Beispiel S3 Buckets veröffentlicht oder in CloudWatch-Protkolle gesendet In der letzten Phase geben Sie an, welche Artefakte Ihres Builds Sie bewahren möchten Das können die Build-Binärdatei und alle Berichte sein, die in einem S3-Bucket veröffentlicht werden Das ist also der Workflow CodeBuild lädt den Quellcode in eine Container verpackte Umgebung herunter, erstellt den verwalteten Code in einer Container verpackten Umgebung, führt die Test Suite aus, überträgt das Protokoll an CloudWatch und veröffentlicht die Artefakte in Amazon S3 Gut, schauen wir uns ein Beispiel eines Kunden an, der mit uns zusammenarbeitete, um die Geschwindigkeit seiner Integrationstests zu erhöhen Der Kunde hier heißt Blackboard LMS Es ist ein sehr beliebter Anbieter von Lernmanagement Software Und ihr Problem war, dass ihre Integrationssuite zum Ausführen vier Stunden brauchte Das bedeutete, dass sie während eines 24-Stunden Tages nur rund sechs Builds abschließen konnten Das war eine deutliche Verlangsamung der Entwicklergeschwindigkeit Sie kamen mit diesem Problem zu uns und versuchten verschiedene Ansätze In ihrem Fall benutzten sie die Selenium UI Suite Das ist eine beliebte Webentwickler UI Testsuite, die heute auf dem Markt verwendet wird, und ihr primäres Ziel war, Testzeit zu reduzieren Die Lösung, die sie gefunden haben, war ziemlich innovativ Sehen wir uns die Architektur im Detail an Hier haben wir einen Testrunner, der auf einem EC2 Computer läuft Der Testrunner ruft Lambda auf Innerhalb von AWS Lambda führen sie die Vollversion von Chromium aus und da drin haben sie simulierte virtuelle Anzeigeeinheiten Also Lambda simuliert Frames für die simulierte virtuelle Anzeigeeinheit Sie machen einen Screenshot davon, hier werden UI Test Screenshots protokolliert, und dann wird alles in einem S3 Bucket veröffentlicht Im S3 Bucket trägt ein Test-Kollator alle Daten zusammen und fügt sie in ein schönes Dashboard, wo man sie später ansehen kann Also, was Sie hier sehen, ist, je nachdem, wie Sie Ihre Test Suite strukturieren wollen, Sie sie auf eine unendliche Knotenanzahl skalieren können, wenn Sie sie serverless ausführen können, wie auf AWS Lambda oder AWS Fargate Das Ergebnis war, dass ihre gesamte Integrationszeit von vier Stunden runter auf drei Minuten ging Sie konnten also hunderte von Builds und Integrationen pro Tag durchführen Und Entwickler konnten Funktionen und Fehlerbehebungen viel schneller zu den Kunden bringen Wir haben also lokale Entwicklung, Tests und Integration besprochen, gehen wir also zum Abschnitt Bereitstellen und Testen Es gibt mehrere Arten, Code zu testen, der schon in Produktion ist und bereitgestellt wurde, und es gibt mehrere Themen, die im Detail behandelt wurden Also Leistungs- und Lasttests, Probebereitstellungen, A/B-Tests, Überwachung und Optimierung A/B-Tests und Probebereitstellungen wurden in Vorträgen bei der re:Invent und AWS Summit Vorträgen besprochen Also konzentrieren wir uns heute auf Leistungs- und Lasttests, Überwachung und Optimierung Wenn Sie in der Lasttestumgebung anfangen, haben Sie vielleicht von dem Tool ‘Locust.io’ gehört Es ist auf dem AWS Marketplace verfügbar,

hat eine schöne GUI, mit der Sie interagieren können, und Sie können Endpunkte wählen Es kann jeder Endpunkt sein, der über das Netzwerk erreichbar ist, und es trifft diesen Endpunkt mit der Lastmenge Wenn Sie bereits Erfahrung mit Lasttests haben, haben Sie wahrscheinlich von Apache JMeter gehört Und die erfahrenen Veteranen verwenden wahrscheinlich Taurus, eine Integration von JMeter und Selenium mit einer schönen GUI Aber ziemlich oft ist das Feedback, das Kunden und Entwickler uns geben, dass nicht das Lasttest Tool das Hauptproblem ist, sondern die Skalierung des Lasttest Frameworks mit der Sie eine bestimmte Menge Traffic simulieren können Nehmen wir also an, Sie wollten einen Ausverkaufstag simulieren, oder ein anderes Ereignis mit viel Verkehr Sie möchten Ihre Lasttestinfrastruktur entsprechend skalieren Schauen wir uns eine Architektur an, die genau das tut Also, hier haben wir eine AWS Umgebung und wir laden in diesem Fall das Taurus Docker Image auf ein elastisches Container Repository, auf ein ECR Repo In unserem Testrunner Framework haben wir eine AWS Lambda Funktion, die das ganze Ding orchestriert Sie zieht Jobs von einem SQS Queue und schreibt die Informationen zurück zu Amazon S3 und DynamoDB Der eigentliche Test wird in Fargate ausgeführt, einem serverlosen Containerlaufmechanismus Das bedeutet, dass Sie nur angeben, wie viele Container Sie möchten, und Fargate liefert sie für Sie In Kürze sehen wir diese Produktionsdemo und wie ein Belastungstest durchgeführt werden kann Wenn Sie einen Lasttest durchgeführt haben, wird es Ihnen helfen, Engpässe festzustellen, an denen Ihre Software möglicherweise zusammenbrechen kann Aber was ist mit einer schon existierenden Code-Base? Oder mit einer Code-Base, die bereits in Produktion läuft? und deren Leistungsineffizienzen Sie kennen möchten? Hier kommt Amazon CodeGuru Profiler ins Spiel Amazon CodeGuru Profiler ist eine Bibliothek, die Sie mit Ihrem Code integrieren, und die Leistungsmetriken in die Cloud schickt Damit können Sie prüfen, wie sich Ihre Anwendung in Produktion schlägt Wir kommen nun zu einer Demo des verteilten Lasttest-Frameworks und Amazon CodeGuru Profiler Okay, beginnen wir mit der Demo Wie Sie hier sehen können, da ist die Übersicht der Lösungsarchitektur, der Quellcode und ein CloudFormation Template, falls Sie neugierig sind Ich starte ihn direkt in meiner AWS Konsole Das bringt mich zum CloudFormation-Assistenten und wenn ich die Schritte ausführe, wird er die Lösung für mich bereitstellen Wie ich bereits erwähnte, das ist eine Komplett-Serverless-Lösung und kostet Sie also nur Geld, wenn Sie aktiv Ihren Lasttest durchführen Gehen wir in eine der Lösungen, die in meinem Konto bereitgestellt sind So sieht also die Ausgabe aus, wenn die CloudFormation ausgeführt wurde Wie Sie sehen, führte ich schon vorher einige Belastungstests durch, aber wir erstellen einen neuen Test Ich erstelle einen neuen Test, gebe ihm einen Namen, eine Beschreibung In diesem Fall, ein API Gateway Endpunkt Eine Anzahl an Tasks Das ist die Anzahl der Fargate-Tasks, also Anzahl der Docker Container, die Sie wollen Mir reichen 10 Container Parallelität, also wie viele gleichzeitige Anfragen pro Aufgabe generiert werden Ich lege 20 fest Aufstocken, das ist sehr hilfreich beim Testen von Architekturen, die langsam oder organisch skalieren Angenommen Sie möchten simulieren, wie effektiv Ihr Fall beim “Hydrating” ist, wie effektiv Ihre Lastausgleiche oder Auto Scaling sind Es wurde speziell für diesen Zweck geschaffen Das Hochfahren dauert eine Minute und halte meine maximale Last für etwa zwei Minuten Das bedeutet, meine gesamte Testzeit hat eine Dauer von drei Minuten Sie können einen beliebigen HTTP Endpunkt, den Sie testen müssen, angeben Ich gebe nur einen API Gateway Endpunkt an Ich erkläre in Kürze, wie ich diesen Endpunkt erhalten habe Testen Sie ‘get’-Methoden, ‘put’, ‘post’, ‘delete’, von Anfang an Geben Sie Ihre HTTP Header und die JSON Payload an, die Sie erwarten Und dann klicken Sie auf „Absenden“ Gehen wir zu Test sechs und sehen uns die Übersicht an Wie Sie sehen können, ist der Test im Ausführungsstatus Dies wird langsam meine Aufgaben erfüllen, dann wechselt es zu „Ausstehend“ und dann werden sie ausgeführt Dann werden meine Container hochfahren Ich aktualisiere Einige der Aufgaben wurden bereits bereitgestellt, einige stehen noch aus, aber sie werden alle ausgeführt Während wir aufs Hochfahren warten, sehen wir uns den Endpunkt, den API Gateway Endpunkt an, den ich testen werde

So, hier bin ich in meiner AWS-Konsole Ich gehe zu API Gateway Ich stellte ein einfaches API Gateway und einen REST-Endpunkt bereit, der durch eine AWS Lambda-Funktion gesichert ist Ich nannte es „hello world“ Schauen wir diese Methode im Detail an Da ist ‘Methodenanforderung’, dann geht es zu einer ‘Integrationsanfrage’, die eine Lambda-Funktion ausführt Kommt mit einer Antwort von Lambda zurück und sendet diese Antwort zurück Wir können uns auch die Lambda Funktion ansehen, die dahintersteckt Wie Sie sehen können, wird sie vom API-Gateway ausgelöst, und wenn Sie in den Code scrollen, dann gibt sie nur einen Statuscode von 200 zurück und eine Nachricht „hello world“ Also eine einfache Lambda-Funktion Wenn wir in API Gateway und zu Stages gehen und die Produktionsphase ansehen, also die „URL aufrufen“, die ich zuvor in meinen Lasttest eingefügt habe Also nur um das zu testen, fügen wir das in ein Browserfenster ein und machen ‘Hello’, das ist der Pfad, den ich teste Wie Sie sehen, antwortete es mit der „hello world“-Botschaft Das ist also der Endpunkt Schauen wir mal, wie mein Lasttest läuft Ich aktualisiere Sechs Container sind bereits gestartet und vier stehen noch aus Ich kann auch den gleichen Status in der ECS Konsole anzeigen Wie Sie in der ECS Konsole sehen, werden alle zehn meiner Tasks ausgeführt Damit ist die Zeit des Hochfahrens abgeschlossen und mein API Gateway Endpunkt wird mit all dieser Last getroffen Der einfachste Weg das zu visualisieren ist die Lambda-Funktion Sie sehen, wie viele Anrufungen sie macht Gehen wir also ins Monitoring Ich warte bis zur Anzeige der CloudWatch-Metriken Und wenn ich mein Fenster auf 45 Minuten erhöhe Der Verkehr hat noch nicht für meinen Belastungstest zugenommen Wir warten, bis mein Lasttest abgeschlossen ist, und in dieser Zeit gebe ich Ihnen eine Vorschau, wie der Amazon CodeGuru Profiler aussieht Wir gehen zu „Services“ und CodeGuru Wir sind im Dashboard von Amazon CodeGuru Profiler Gehen wir zu „Profiling Groups“ Ich habe hier ein paar Demos, wie Sie sehen Wir erstellen eine Profilgruppe Ich nenne sie ‘my new profile’ Ich gehe zu „Profil anlegen“ Und jetzt zeigt es mir Anweisungen, wie man dies in meinen Code integriert Ich bekomme die Ausgabe der IAM Regeln, die mein Agent verwenden wird Für Java Anwendungen gibt es Anweisungen für eine Dependency Map Wenn Sie Maven oder Gradle als Abhängigkeitsmanager nutzen, fügen Sie dies einfach in Ihr Maven Repo oder Gradle Repo ein und es ruft die entsprechenden Abhängigkeiten ab Und schließlich bekomme ich das Import Statement und was das Statement besagt, um den Profiler zu starten Und so integriert man den Profiler in die Code Grundlage Schauen wir uns nun eine Beispielausgabe an Das ist also eine CodeGuru-Beispielausgabe mit Problemen So sieht eine Ausgabe aus Ich bekomme einen richtigen Stack-Trace, aufgerufene Funktionen und ich kann sehen, dass es an bestimmten Orten ineffizient ist Die Stack-Traces sind schon sehr tief Also zur Berichtigung kann ich mir die Empfehlungen in der oberen rechten Ecke ansehen Also hat CodeGuru, basierend auf meinem Profiler und auf Beobachtungen meines Stack-Traces einige Empfehlungen gemacht In diesem Fall empfiehlt es AWS, weil DK Clients mehrfach erstellt werden Ich verschwende also Speicher durch Neuerstellen dieser Objekte und wäre besser dran, ein Singleton oder eine globale Klasse zu nehmen Ich mache übermäßiges Debuggen und Pfadprotokolle, das ist also eine weitere Empfehlung, die CodeGuru mir gibt Stattdessen sollte ich meine Pfadprotokollierung reduzieren Sie sehen, ich bekomme auch einen Prozentsatz der Zeit, die die CPU mit dieser speziellen Aufgabe verbringt Neuerstellung von Loggern Hier weist CodeGuru mich darauf hin, dass ich wieder Objekte erstellt habe, die unnötig sind, und dass eine Singleton oder globale Klasse besser wäre

Wie Sie sehen, bekomme ich eine sehr spezifische Codeänderung, mit der ich Infrastrukturkosten für die Ausführung der Anwendung reduzieren kann Das heißt, dass ich meine Anwendung potenziell skalieren und gleichzeitig die zugrunde liegende Architektur reduzieren kann Für selbst geschriebene Anwendungen ist es wirksam, aber stellen Sie es sich für Anwendungen vor, die Sie geerbt haben und deren Ineffizienzen Sie feststellen müssen Integration des CodeGuru Profiler ermöglicht es Ihnen, Ineffizienzen im Stack Pfad Ihrer Anwendung zu erkennen Wir sahen CodeGuru Profiler mit Problemen, jetzt sehen wir uns an, wie die Korrektur aussieht Dies ist also eine „without issues“ Demo Und wie Sie jetzt sehen, ist der Stack Pfad viel sauberer und ich habe null Empfehlungen Das ist also die CodeGuru-Demo Kehren wir zu meinem Lasttest zurück, um zu sehen, wie es läuft Ich bin wieder in der Lambda Konsole Ich aktualisiere sie, um die Aufrufe anzuzeigen Die Aufrufe sind noch nicht in Lambda angezeigt Mal sehen, was mein Test sagt Und mein Test sagt, dass er abgeschlossen ist Sie sehen, ich bekomme eine Übersicht oder eine Sammelansicht der durchschnittlichen Reaktionszeit, Latenz und Verbindungszeit Das bedeutet, dass ich sehr prägnant bestimmen kann, wie effektiv meine Endpunkte waren Wenn ich zurück zu Lambda gehe und mein Fenster vergrößere, sehen Sie, dass ich jetzt eine Metrik dafür habe, wie viele Aufrufe wo durchgeführt wurden In diesem Fall hatte mein Lambda 75,9K gleichzeitige Aufrufe Das war der Verkehr, den mein Belastungstest nutzte Das war also die Demo für den verteilten Lasttest und für Amazon CodeGuru Profiler Lassen Sie uns zur Präsentation zurückkehren Wir sahen gerade eine Demo von Amazon CodeGuru Profiler und die Testlösung für verteilte Lasten, entwickelt von Amazon Solutions Lab Fassen wir zusammen, was wir heute erfahren haben Wir sahen die Reise einer Codezeile vom Laptop eines Entwicklers bis zur Produktion Wir haben uns angeschaut, wie Cloud Services für lokale Entwicklung und Tests lokal emulieren können Wie wir für Integration und Tests Amazon CodeBuild verwenden können um den Code zu erstellen und zu testen Und in der Bereitstellungs- und Testphase schauten wir uns an, wie wir unsere Anwendungen mit Amazon CodeGuru testen und ständig überwachen können Das war es für die heutige Sitzung Ich hoffe es hat Ihnen gefallen, schicken Sie uns eine Rezension Wir schätzen Ihr Feedback sehr Danke