[PYTHON] Vergleich von Apex und Lamvery

Vorwort

Für eine Weile habe ich ein Tool (OSS) namens Lamvery erstellt, mit dem sich AWS Lambda und [Introduced in Qiita](http: /) einfach bereitstellen und verwalten lassen. /qiita.com/marcy-terui/items/1617ab4e20e3339d1930) Ich durfte es tun, aber obwohl es recht bequem zu bedienen ist, ist es kürzlich als [Apex](https: // github) erschienen. .com / apex / apex) hat ein sehr hohes Maß an Aufmerksamkeit [^ 1] und ich war eifersüchtig, deshalb habe ich beschlossen, einen Vergleichsartikel zu schreiben.

Bitte überprüfen Sie hier für die Erklärung von "Lamvery". http://qiita.com/marcy-terui/items/1617ab4e20e3339d1930 https://github.com/marcy-terui/lamvery/blob/master/README.md

Wenn Sie sich das Wiki ansehen, können Sie ein Gefühl für "Apex" bekommen. https://github.com/apex/apex/wiki

Eine davon ist meine eigene Arbeit, daher möchte ich so fair wie möglich sein, aber bitte schauen Sie, wenn Sie auf der Lamvery-Seite sind. Darüber hinaus werde ich als Autor Erklärungen und Meinungen veröffentlichen. Für Ihre Information.

Apex beabsichtigt auch, verschiedene Dinge von der Opposition zu erfassen, aber es wäre hilfreich, wenn Sie auf Fehler hinweisen könnten.

Nachfolgend finden Sie einen Vergleich zum 29. Januar 2016.

Vergleich der Grundteile

Artikel Apex Lamvery
Implementierungssprache Go Python
Wie installiert man Binärer Download PyPi,rpm,deb
Unterstützte Laufzeit(Lambda) Go, Python, Node.js Python, Node.js
Gelang es Projekteinheit Funktionseinheit
Einstellungsdateiformat JSON YAML + jinja2

Kommentar und Ansichten

Implementierungssprache

Es ist Geschmackssache.

Wie installiert man

Apex Da die Installationsmethode Go ist, wird sie für jede Abhängigkeit binärisiert und ist "Apex" stark, nur um sie herunterzuladen und zu platzieren? Lamvery Sie müssen die Python + pip-Umgebung einrichten. Von dort aus können Sie mit pip alle Abhängigkeiten mit einem Befehl installieren. [^ 2] Wir bieten auch Yum- und Deb-Pakete an, mit denen Sie eine völlig unabhängige Umgebung einschließlich Python für die Verwendung in CI-Umgebungen erstellen können. https://github.com/marcy-terui/lamvery#installation

Unterstützte Laufzeit (Lambda)

Apex Das Merkmal von "Apex" ist, dass es "Golang" unterstützt, was Lambda offiziell nicht unterstützt. Außerdem scheint es einem AltJS-System wie Babel zu entsprechen [^ 3] Lamvery Lamvery beabsichtigt nicht , Go zu unterstützen, sofern nicht anders angefordert. [^ 4] Node.js ist vorerst experimentelle Unterstützung, da ich der Python-Main bin. [^ 4]

Ich denke, es ist nicht zu weit weg für den Beamten, um "Go" zu unterstützen, aber was ist mit? Ich frage mich, ob jeder eine so informelle Methode anwenden möchte ...?

Gelang es

Apex
Apex kann mehrere Lambda-Funktionen zusammen in einem Projekt verwalten, und es gibt Einstellungsdateien, die auf das Projekt angewendet werden, und Einstellungsdateien, die auf einzelne Funktionen angewendet werden. Lamvery Lamvery kann nur auf Funktionsbasis verwaltet werden. Hier denke ich darüber nach, was ich in Zukunft tun soll. Da es sich jedoch um eine Funktionseinheit handelt, ist sie auf Python beschränkt. Wenn Sie jedoch nur die von dieser Funktion verwendete Bibliothek in der virtuellen Umgebung "virtaulenv" [^ 5] installieren, wird sie unter Berücksichtigung der Speichereffizienz automatisch erfasst. Und ich versuche es hochzuladen. Dies liegt daran, dass Apex nur alles in einem bestimmten Verzeichnis hochlädt, sodass die Quellcodekapazität von Lambda begrenzt ist -lambda-Kapazität /) Ist das nicht ein großer Unterschied? Nur für Python. .. .. [^ 6]

Einstellungsdateiformat

Apex
Es ist nur "JSON". Lamvery
Obwohl es sich um "YAML" handelt, wird es mit der Template-Engine jinja2 abgedeckt. Das heißt, es unterstützt das Einbetten von Variablen und das dynamische Schreiben.

Funktionsvergleich

Artikel Apex Lamvery
Deploy
Rollback
Beliebige Alias-Einstellungen
Lauf(Invoke)
Ausschlussliste
Übergabe vertraulicher Informationen
CloudWatch Events(Planen Sie die Ausführung) ☓[^8]
CloudWatch Logs(Ausführungsprotokoll anzeigen)
CloudWatch Metrics(Startzeit etc.) ☓ [^7]

Kommentar und Ansichten

Von den Merkmalen in beiden werden nur die Teile aufgelistet, die charakteristische Unterschiede aufweisen.

Deploy & Rollback Die speziellen Versionsspezifikationen von Lambda sind leicht zu verstehen, daher sollten Sie sie lesen ↓ http://dev.classmethod.jp/cloud/aws/lambda-versioning/

Apex
Die Versionierung [^ 9] ist erforderlich. Stellen Sie beim Bereitstellen den Alias "aktuell" ein und ersetzen Sie beim Zurücksetzen "aktuell" durch die neueste Vorgängerversion. Diese "Apex" -Methode bricht jedoch zusammen, wenn Alias durch etwas anderes als Bereitstellen und Zurücksetzen ersetzt wird. Das ist in Ordnung, aber selbst wenn Sie die Bereitstellung und das Rollback zweimal wiederholen, wird es kaputt gehen (siehe unten). apex_rollback.png Am Ende möchte ich, dass es zu "2" zurückkehrt, aber ich weiß, dass es fehlschlagen wird und zu "3" zurückkehren wird. Derzeit gibt es die Möglichkeit, beim Rollback eine beliebige Version anzugeben, aber ich halte es für Unsinn, dass sich Menschen die Versionsnummer merken müssen.

Lamvery
Aufgrund der oben genannten Probleme verwendet "Lamvery" eine andere Methode. Fügen Sie bei der Bereitstellung einfach einen weiteren Alias zur vorherigen Version hinzu und führen Sie einen Rollback durch. Dies dient zum Aktivieren von Vorgängen wie dem vorübergehenden Zurückspulen auf die vorherige Version zwei oder mehr.

Darüber hinaus gibt es eine Funktion zum Anhängen eines beliebigen Alias, sodass Sie Versionen flexibel verwalten können, indem Sie sie in Kombination verwenden. Wenn Sie es so einfach wie Apex verwenden möchten, verwenden Sie einfach Deploy und Rollback mit aktivierter Versionierung. Die Versionierung ist erforderlich, wenn Sie Rollback verwenden. Sie können sie jedoch in der Konfigurationsdatei deaktivieren, wenn Sie dies nicht tun. Sie können auch einen beliebigen Alias festlegen, der zur Bereitstellungszeit festgelegt wird. Dies ist auch angesichts der zuvor erwähnten Lambda-Kapazitätsgrenze eine notwendige Option. Ich glaube, es ist. Sie können es für kleinere Korrekturen deaktivieren und bei Bedarf einschalten, damit Sie es zurücksetzen können.

Aufrufen

Apex Es kann in einem einzigen Schuss gestartet werden, wobei Eingaben von Standardeingaben (Streaming) nacheinander akzeptiert und kontinuierlich synchron ausgeführt werden [^ 10]. Lamvery Nur einmalige Ausführung. Streaming möchte asynchron ausgeführt werden [^ 10] und ClooodWatch-Protokolle in Form eines Endes unterstützen.

Lieferung vertraulicher Informationen

Apex Geben Sie während der Bereitstellung eine Umgebungsvariable an. Es kann nicht in die Versionsverwaltung einbezogen werden [^ 11]. Wenn man sich die Quelle und das Wiki ansieht, scheint es, dass Python nicht unterstützt ...? Lamvery
Sie können KMS verwenden, um die Version [^ 10] zu verwalten, indem Sie die verschlüsselten vertraulichen Informationen in die Einstellungsdatei aufnehmen. ~~ Derzeit wird nur Python unterstützt, aber wir hoffen, Node.js in naher Zukunft unterstützen zu können. ~~ Node.js wird ebenfalls unterstützt (2015.02.03)

Impressionen und Zusammenfassung

Bisher gibt es meiner Meinung nach insgesamt Vor- und Nachteile. Ich denke jedoch, dass die Rollback-Spezifikationen und die Unterstützung von CloudWatch-Ereignissen einen großen Unterschied darstellen. Ich würde es begrüßen, wenn Sie nicht nur auf "Apex", sondern auch auf "Lamvery" achten könnten, wenn man bedenkt, dass japanische Unterstützung möglich ist [^ 12]. :-) [^ 13]

https://github.com/marcy-terui/lamvery

[^ 1]: Anzahl der Sterne auf GitHub, Apex Japanese Article und [Lamverys Qiita-Artikel](http: // qiita). com / marcy-terui / items / 1617ab4e20e3339d1930) Vergleichen Sie die Anzahl der Enden. .. .. [^ 2]: pip ist gem in Ruby und npm in Node.js. Wenn Sie Python mit pyenv installieren, ist es standardmäßig enthalten, und wenn es sich um ein Linux-System handelt, wird es häufig vom Standardpaketmanager hinzugefügt. [^ 3]: Es wird unterstützt, indem Go-Binärdateien von Node.js als untergeordneter Prozess gestartet und über die Standardeingabe / -ausgabe ausgetauscht werden. [^ 4]: Ich mache mir Sorgen, weil es nicht viele Benutzer gibt. .. .. [^ 5]: Python-Bibliothek, die eine unabhängige Python-Ausführungsumgebung erstellen kann, die keine Bibliotheken usw. gemeinsam nutzt. [^ 6]: Da ich es hauptsächlich für Python verwende, möchte ich antworten, wenn mir jemand, der mit Node.js vertraut ist, nur eine Idee geben kann. [^ 7]: Bald erhältlich [^ 8]: Wird es unterstützt? Zur Diskussion unter Ausgabe [^ 9]: Die Option "Veröffentlichen" für Lambda

Recommended Posts

Vergleich von Apex und Lamvery
Vergleich von Edelstein, Bündler und Pip, Venv
Vergleich von Klassenvererbung und Konstruktorbeschreibung
Vergleich von L1-Regularisierung und Leaky Relu
Geschwindigkeitsvergleich von murmurhash3, md5 und sha1
Vergleichen Sie die Implementierungsbeispiele für scikit-learn und pyclustering k-means
Vergleich von Python und Ruby (Environment / Grammar / Literal Edition)
Vergleich von Online-Klassifikatoren
Vergleich der Anpassungsprogramme
Ein schneller Vergleich der Testbibliotheken von Python und node.js.
DNN (Deep Learning) Library: Vergleich von Chainer und TensorFlow (1)
Vergleich von Windows Server und freiem Linux und kommerziellem Linux
Vergleichstabelle häufig verwendeter Prozesse von Python und Clojure
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Mechanismus von Pyenv und Virtualenv
Vor- und Nachbearbeitung von Pytest
Kombination von rekursiv und Generator
Kombination von anyenv und direnv
Erklärung und Implementierung von SocialFoceModel
Differenzierung der Sortierung und Verallgemeinerung der Sortierung
Vergleich von 4 Arten von Python-Webframeworks
Koexistenz von Pyenv und Autojump
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Verwendung und Integration von "Shodan"
Das Problem der Lügner und der Ehrlichkeit
Vergleich des ungarischen Rechts und der Allzwecklöser für Zuordnungsprobleme
Auftreten und Auflösung von tensorflow.python.framework.errors_impl.FailedPreconditionError
Python 3 Sortier- und Vergleichsfunktionen
Quellinstallation und Installation von Python
Einführung und Tipps von mlflow.Tracking
Geschwindigkeitsvergleich der Volltextverarbeitung von Wiktionary mit F # und Python
Vergleich der Vorhersage von Zeitreihendaten zwischen dem SARIMA-Modell und dem Prophet-Modell
Geschichte des Geschwindigkeitsvergleichs der Art des numerischen Werts und der Zeichenkette (unvollendet))
Zusammenfassung der Unterschiede zwischen Python und PHP (Vergleichstabelle der Hauptelemente)
[Python] Grundlegendes Muster und Verwendung der if-Anweisung (Vergleichsoperator und Boolescher Operator)
Umgebungskonstruktion von Python und OpenCV
Grundkenntnisse in Linux und Grundbefehle
Reihenfolge der Argumente für RegularGridInterpolator und interp2d
Die Geschichte von Python und die Geschichte von NaN
Einführung und Implementierung von JoCoR-Loss (CVPR2020)
Vergleich der grundlegenden Grammatik zwischen Java und Python
Erklärung und Implementierung des ESIM-Algorithmus
Mischgefahr! Ndarray und Matrix
Installation von SciPy und matplotlib (Python)
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
Einführung und Implementierung der Aktivierungsfunktion
Memorandum zum Speichern und Laden des Modells
Erklärung und Implementierung von einfachem Perzeptron
Berechnung der selbst erstellten Klasse und der vorhandenen Klasse
Dies und das von Python-Eigenschaften
Geschwindigkeitsvergleich zwischen CPython und PyPy
Geschwindigkeitsvergleich der Python-XML-Perspektive
Vergleich der eigenständigen DB-Migrationstools für 2020
Merkmale der symbolischen und harten Verbindung
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Zusammenfassung der Python-Indizes und -Slices
Aggregation und Visualisierung akkumulierter Zahlen