Amazon CodeGuru automatisiert Source Code Testing Code-Review und App-Optimierung unter AWS
Amazon Web Services (AWS) hat mit CodeGuru ein neues Werkzeug für Code-Review vorgestellt. Es ergänzt die bestehenden Tools CodeBuild, CodeCommit, CodeDeploy oder kundeneigene Tools wie Jenkins für den CI/CD-Prozess. Zusätzlich gibt es Tipps für die Optimierung der Performance einer Applikation.
Anbieter zum Thema

Der Service Amazon CodeGuru automatisiert die Prüfung von Quellcode im Hinblick auf diejenigen Codezeilen, die die meisten Kosten verursachen, weil sie beispielsweise Leistung kosten. Sobald es sämtliche Probleme und Schwachstellen aufgelistet hat, gibt das Werkzeug detaillierte Tipps, wie man diese beheben oder beseitigen kann, indem man den Code repariert oder optimiert.
„Die Tipps von CodeGuru basieren auf Machine Learning und vielen Daten, die aus den Top-Zehntausend Opensource-GitHub-Projekten und aus Amazons 80.000 Apps gewonnen wurden“, berichtet Constantin Gonzalez, Principal Solutions Architect bei AWS. „Bei Amazons Consumer Business allein konnte zwischen 2017 und 2018 durch Machine Learning der Code um 325 Prozent schneller gemacht werden.“ Als Vorteil hätten die abonnierten Instanzenflotten verkleinert werden können, was wiederum geringere Kosten zur Folge hatte.
Mit dem Werkzeug sollen sich etwa Abweichungen von den bewährten Verfahren zur Nutzung von AWS-APIs und -SDKs und zudem Nebenläufigkeitsprobleme, Ressourcenlecks und korrekte Eingabevalidierungen identifizieren lassen. Wird beispielsweise AWS EC2 für Compute-Zwecke suboptimal genutzt, dann schlägt sich dies in höheren Gebühren nieder. Das gleiche gilt für die Nutzung ineffizienter Bibliotheken, übermäßiges Logging und viele andere Aspekte.
Nutzer können vorhandene Code-Repositorys in GitHub oder AWS CodeCommit mit CodeGuru verknüpfen, um mit der Überprüfung durch den Code Reviewer zu beginnen. Gleichzeitig kann das Tool eigene Regeln und Modelle für Best Practices erzeugen, wenn man es mit den entsprechenden Trainingsdaten füttert. Je größer diese Wissensbasis, desto genauer und hilfreicher die Ergebnisse.
Der CodeGuru Profiler wird ebenfalls von Amazon-Performance-Optimierern trainiert und für die interne Leistungsverbesserung genutzt. Dieses Tool, das laut AWS beim Nutzer nur minimale CPU-Belastung erzeugen soll, gibt die entsprechenden Tipps und kann mit der entsprechenden Starterlaubnis den Code Zeile für Zeile überarbeiten.
Das Feedback, das der Nutzer gibt, fließt wiederum in das Training des Reviewers und Profilers ein. Der Nutzer beginnt das App-Profiling üblicherweise damit, dass er einen kleinen Agenten installiert, den CodeGuru liefert und diesen in der CodeGuru-Konsole konfiguriert. Man sollte eine Ahnung haben, was man dabei tut.
„CodeGuru unterstützt derzeit Java-Applikationen, doch Unterstützung für weitere Sprachen wird folgen“, sagt Constantin Gonzalez. Es lasse sich komplett in den CI/CD-Prozess integrieren und arbeitet mit den AWS-Tools CodeBuild, CodeCommit und CodeDeploy zusammen. „Wir sind sehr große Unterstützer der Opensource-Gemeinde und an vielen OSS-Projekten beteiligt. Wir geben auch Code zurück an die Community.“ AWS strebe die Lösung von Opensource-Problemen an, so etwa das von Java-Lizenzen mithilfe des eigenen Services Amazon Coretto. „Das ist eine kostenlose Java-Distribution des Open JDK, die mit einem bestimmten Support-Zeitraum bereitgestellt wird.“
Das Preismodell orientiert sich an bedarfsabhängigen Monatspreisen, die auf der Anzahl der geprüften Codezeilen und Stichproben-Stunden pro Applikationsprofil beruhen. Ein Beispiel: Bei einer typischen Anfrage von 500 Codezeilen, würde die Anwendung von CodeReviewer darauf nur 3,75 US-Dollar (USD) kosten. Die ersten 90 Tage sind kostenlose Probezeit. Anschließend kostet CodeGuru (Stand Januar 2020) 0,005 USD pro Abtaststunde pro Anwendungsprofil und 0,75 USD pro 100 Codezeilen pro Monat. CodeGuru ist aktuell als Preview verfügbar, zwar noch nicht in der Region Frankfurt/Main wohl aber in der Region Irland.
Deep Java Library (DJL)
AWS hat kürzlich die Deep Java Library (DJL) bereitgestellt. Diese ist eine quelloffene Bibliothek für die Entwicklung, das Training und die Ausführung von Deep-Learning-Modellen in Java mithilfe von intuitiv programmierbaren APIs. Java-Nutzer, so der AWS-Entwickler Rakesh Vasudevan in seinem offiziellen Blog, lernen Deep Learning und Java-Entwickler können einfacher DL-Modelle trainieren, um dann Vorhersagemodelle auszuführen.
Die Notwendigkeit für die DJL begründet Vasudevan damit, dass es zwar eine Vielfalt von DL-Tools und Frameworks für andere Sprachen wie Python gebe, aber nur sehr wenige für Java. Dabei sei Java in Unternehmen die verbreitetste Programmiersprache. Dies soll sich nun mit der DJL ändern.
Die DJL setzt bekannte Java-Konzepte auf der Grundlage von DL-Frameworks (etwa PyTorch oder TensorFlow) und Hardware um. „Die einfachen APIs abstrahieren die Komplexität bei der Entwicklung von DL-Modellen“, so Vasudevan, „und man kann sie einfach erlernen und leicht anwenden.“ Im sog. „Model-Zoo“ bekommt der Nutzer eine Reihe von vortrainierten DL-Modellen geliefert. Diese könne der Nutzer dann einfach in seine Java-Applikationen einbauen und sie auf gewünschte Testdaten anwenden.
(ID:46313098)