In Cloud Computing und DevOps Letztes Updateated:
Teilen:
Jira-Software ist das Projektmanagement-Tool Nr. 1, das von agilen Teams zum Planen, Verfolgen, Freigeben und Unterstützen großartiger Software verwendet wird.

Ein Serverloser platform bietet die Möglichkeit, jedem Entwickler ein eigenes separates Formular zu gebenate Full-Stack-Umgebung auf einem AWS Konto, dass sie können leverAlter für Entwicklungs- und Testaktivitäten.

Dies ist ohne nennenswerte Kostensteigerung möglich und impactjemand anderen anrufen. Oder ohne das Risiko, dass das Setup des Entwicklers versehentlich geändert wirdally. 

Serverlose Architektur vermittelt einen anderen Blick auf die alten Probleme und ist in vielerlei Hinsicht positiv erfrischend. Der größte Vorteil besteht darin, dass Sie keine Administratoren mehr im Team benötigen, um bei vollem Einsatz keine Abstriche machen zu müssen processes. Der andere Vorteil – jetzt orientiert an der internal Das Problem, dass es dem Entwicklungsteam und nicht dem Unternehmen dient, besteht darin, dass es dem Entwicklungsteam unbegrenzte Bedingungen für seine Entwicklungsarbeit bieten kann. 

Was das genau bedeutet, erklären wir Ihnen hier, nämlich:

  • Wie erstellt manate eine unbegrenzte Entwicklungsumgebung ohne Server platForm.
  • Was sind die Vorteile eines solchen Setups für das Team?
  • Die wichtigsten Bereiche, auf die man bei einem solchen Setup achten muss, damit es im Laufe der Zeit nicht kaputt geht.
  • Demonstrationsbeispiel eines solchen Setups.

Ein Weg zum eigenständigen Umgebungs-Stack für jeden Entwickler

Sie können die Entwicklungsinfrastrukturen als evolutionär betrachten process im Laufe der Zeit.

Am Anfang war ein Licht…

Die übliche Methode zum Verwalten von Entwicklungskontoumgebungen ist die Erstellungate ein oder mehrere separateate Entwicklungsumgebungen. Im besseren Fall enthalten sie alle Komponenten der Produktionsumgebung. Auch das ist überhaupt nicht Standard. Oft ist die Entwicklungsumgebung auf einige der wichtigsten Dienste beschränkt und der Rest fehlt. 

NaturallyIn einem solchen Umfeld ist es schwieriger, eine zuverlässige Lösung zu entwickeln. Der impact auf die nicht präsentierenden Systemkomponenten fehlt einfach. Das Managementteam wird sagen, dass das Team dies herausfinden kann later in Testumgebungen beim Systemtest. Allerdings wird dies in den Augen der Entwickler niemals eine Empathie-Leistungstrophäe gewinnen.

Entwicklungsaktivitäten werden weniger genau seinate. Entwickler werden mehr Zeit für die Überarbeitung und Behebung von Problemen aufwenden und insgesamt ihre Motivation für die Entwicklung steigernate Ein perfekter Code wird untergehen. Darüber hinaus schaffen Sie mit einem solchen Setup bereits zu Beginn eine inkonsistente und instabile Umgebung.

Abhängig von der Größe des Teams können zur Abhilfe mehrere Entwicklungsumgebungen erforderlich seinate die kritischsten parallelen Arbeitskonflikte zwischen den Teams. Da sie sich die Entwicklungsumgebungen teilen, wird dies ein Entwickler tun impact der andere auf die eine oder andere Weise. Eine umfassende Kommunikation zwischen den Teammitgliedern ist ein Muss. 

Mehr Entwicklungsumgebungen bedeuten weniger Konflikte, aber der Sharing-Faktor ist immer noch vorhanden. Es könnte sein workable, aber es wird nie ein perfektes Setup sein. Am häufigsten erstellen die Entwickler etwas (das bereits in Konflikt steht) locally direkt auf den Laptop-Rechnern. Das könnte passierenate zusätzliche Probleme later beim Zusammenführen des Codes. Das Verhalten auf dem Laptop kann sich von dem in der Cloud unterscheiden. Das kann passierenate Probleme nach dem Zusammenführen des Codes mit den bereits von anderen durchgeführten Entwicklungen.

Aber dann kam jemandated die Welt…

Die offensichtliche Frage ist nun: Was ist es dann? Welches Setup würde den Sharing-Faktor beseitigen und nicht motivieren?ate Soll das Team Aktivitäten an anderer Stelle als dem Cloud-Konto durchführen?

Stellen Sie sich vor, jedes Teammitglied bekommt ein separates Mitgliedate Umgebungsstack, den sie für ihre eigenen Aktivitäten nutzen können. Es würde aus den gleichen Komponenten bestehen wie das Produktionssystem. Ohne die volle Datenlast, denn das ist etwas, was Sie nicht einmal wissenally Bedarf an Entwicklungsaktivitäten.

Oder gehen wir eine Ebene höher – wie wäre es, wenn Sie für jede Aufgabe, an der der Entwickler arbeitet, einen solchen Stack erstellen?

Teuer – denken Sie vielleicht.

Nicht wiederally - Ich würde sagen.

Wenn die Entwickler die Umgebungen und ihre Ressourcen aktiv nutzen, dann ist der Lastvergleich zwischen der parallelen Durchführung von allem in einer gemeinsam genutzten Umgebung und der Aufteilung in mehrere Umgebungen in Bezug auf die Kosten sehr wahrscheinlich gleich. Weil Sie eine serverlose Architektur haben und nur für die tatsächliche Nutzung bezahlen.

Wenn die Entwickler nicht aktiv sind und noch CreateFür diesen vollen Stapel (oder mehrere davon gleichzeitig) betragen die Kosten zero weil Sie eine serverlose Architektur haben. Nicht genutzte Diensteate keine Kosten.

Lassen Sie uns näher auf die Vorteile eingehen.

Vorteile, die nur das Entwicklungsteam schätzen kannate

Zunächst einmal ist eines ganz klar. Alle Vorteile, die dieses Setup bietet, können geschätzt werdenated nur durch das Entwicklungsteam esself. Kein Management oder Geschäftsanwender wird darin jemals einen Wert erkennen. Ich meine, sie könnten verstehen, wo der Wert liegt. Aber höchstwahrscheinlich werden sie nie zugeben, dass sie es unbedingt brauchen. Sie nutzen es nicht und sehen es auch nicht in ihrem Arbeitsalltag.

Aber wie schwer ist esally Ist es zu verstehen, dass die besten Entwicklungsergebnisse nur in den besten Arbeitsumgebungen erzielt werden können?

Hier also die Vorteile:

  1. Der Entwickler hat die Gewissheit, dass niemand sonst die Umgebung, an der er gerade arbeitet, ändern wird. Alle Komponenten sind Created neu nur für diese Aufgabe und Entwicklungsaktivität. 
  2. Die Entwicklungsumgebung ist eine exakte Kopie der Produktionsumgebung. Das bedeutet genauate Eine Simulation des Codeänderungsverhaltens ist möglich
  3. Das Team wird immer direkt im Cloud-Konto entwickeln, da es keinen Sinn mehr macht, dies vor Ort zu tunally.
  4. Angenommen, Sie haben gebaut DevOps Rohrleitungen für die Umwelt creation und update, man kann integrierenate sie mit Jira- oder ADO-Tools für Story- und Ticketmanagement und Creationate oder Terminate die Entwicklungsumgebung zusammen mit Story-Fortschritt und -Abschluss. Dadurch erhalten Sie eine separateate Entwicklungsumgebung für jede Story. Oder sogar eine Aufgabe innerhalb der Geschichte, die really ideal für Backtracking-Zwecke.
  5. Immer wenn der Entwickler eine Änderung am Code-Repository vornimmt, wird die Pipeline aktualisiertate die Umgebung mit dem latest-Repository-Code. Dies bedeutet eine Automatisierung der Bereitstellung beim Erstellen von neuem Code und schnellere Unit-Tests processzB.
  6. Es ist keine regelmäßige Wartung der Entwicklungsumgebungen erforderlichally notwendig. Jede Umgebung existiert nur für eine bestimmte kurze Zeit. Es ist Created immer von der latest Repository-Code state und latest-Daten-Snapshot. Das Wartungsproblem ist self-Lösung in diesem Fall.

Was sind die Nachteile?

Ja, es gibt einige Vorbehalte, die Sie beachten sollten. Ich würde sie nicht explizit als Nachteile bezeichnen. Wenn Sie den folgenden Dingen jedoch nicht die nötige Aufmerksamkeit schenken, ist es sehr wahrscheinlich, dass dies im Laufe der Zeit der Fall sein wird grow in Ihre Gründe für Infrastruktur-Refactoring-Maßnahmen.

# 1. Achten Sie auf AWS-Limits

Hier ist das Ding. Wenn Sie Create ein separaterate Erstellen Sie einen Umgebungsstapel für jede Person und Aktivität, dann werden Sie erstellenate viele AWS-Objekte.

Denken S3 Eimer, Richtlinien, Rollen, Benutzer, Datenbanken, VPCs usw. 

Dies ist ein Muss für Sie, um zu überwachen und monitor. Wenn die Umgebungen nur Created und Entwickler werden immer mehr davon hinzufügen, ohne die alten oder jene ordnungsgemäß zu löschen related zu bereits abgeschlossenen Geschichten, früher oder later, werden Sie beim Erreichen verschiedener AWS-Grenzwerte auf Probleme stoßen.

Einige von ihnen sind leicht zu erhöhen. Andere können Sie über den AWS-Support anfordern. Und dann gibt es noch ein paar harte Limits, an denen man nichts ändern kann, wenn man sie einmal erreicht hat.

In diesem Spiel geht es darum, die Gesamtzahl der verwendeten AWS-Objekte pro Objekttyp zu kontrollieren. Es geht darum, sicherzustellen, dass Sie nicht ständig am Rande tanzen. Man möchte sich nicht die meiste Zeit im oberen Bereich der Grenzen befinden. Das würde effektiv bedeuten, dass vor jeder neuen Umgebung creation, Sie müssen sich zuerst mit der Reinigung befassen processes, manuell oder automatisch. 

In jedem Fall wird dies nur dazu führen, dass die Entwicklungsaktivitäten insgesamt verlangsamt werden. Das Entwicklungsteam wird ständig in einigen sein process Es besteht die Möglichkeit, zunächst bestehende Umgebungen aufzulösen, bevor eine neue erstellt wird.

Stattdessen, was ist really Entscheidend ist, alle Limits proaktiv durch eine ständige Hintergrundverwaltung unter Kontrolle zu halten. Ideeally, in einem automateSo können Entwickler das nächste Mal, wenn sie eine frische neue Umgebung benötigen, diese erstellenate es sofort und ohne weitere Verzögerungen.

# 2. Halten Sie die Ausführungszeit der DevOps-Pipeline niedrig

Es klingt großartig zu sagen, dass jede neue Entwicklungsumgebung kreativ sein wirdated automatischally Sobald Sie mit der Arbeit an einer Geschichte beginnen.

Es klingt schrecklich, wenn das in Wirklichkeit bedeutet, dass der Entwickler mehrere Stunden auf eine solche Umgebung warten muss. Und dann nicht nur für die creation aber für jedes nachfolgende Updateate der Umgebung (direkt nach jedem Repository-Commit).

Fügen Sie es in eine zusammenfassende Formel ein und sehen Sie, wie viel Leerlaufzeit entstehen würdeate so eine Situation. Es ist nicht really Es ist für einen Entwickler möglich, jedes Mal zu „etwas anderem“ zu springen, wenn er warten muss, bis die Umgebung bereit ist. 

Das wäre, als würde man von Ihnen erwarten, dass Sie einkaufen gehen, während Sie beim Arzt auf Ihren Arzt warten planned-Check-ups. Es wird einfach nicht passieren. Du sitzt da und wartest, denn es könnte jede nächste Minute kommen.

# 3. Regelmäßig aktualisiertate Stammdatensatz

Jede neue Umgebung creation muss über einen Verweisquelldatensatz verfügen. Dies dient dazu, die Daten in den Just-Cre zu kopierenated Umgebungsstapel. Der Datensatz muss regelmäßig aktualisiert werdenated (grundlegendally nach jeder Produktionsfreigabe). Dadurch wird sichergestellt, dass die Umgebung sauber istated mit dem latest-Datensatzstruktur. 

Es muss kein vollständiger Datenbank-Snapshot aus der Produktion enthalten sein, obwohl dies üblich istally der einfachste Weg, es zu tun. Das Datenmodell muss jedoch immer auf dem neuesten Stand seinate damit jede neue Entwicklungsaktivität am richtigen Ausgangspunkt beginnt.

# 4. Bringen Sie Ihrem Team bei, „umweltbewusst“ zu sein

Umweltfreundlichkeit ist heute ein großes Thema und wird von allen großen Unternehmen erwartet. Ähnliche Erwartungen gelten auch für das Entwicklungsteam.

Wenn ein Entwickler mehrere Umgebungen parallel benötigt, weil dies die Effektivität deutlich erhöht, dann sei es so. Aber wenn der Entwickler andererseits mehrere Umgebungen parallel geöffnet hält, nur weil er faul ist, sie zu schließen, dann ist das so schnell wie möglich zu heilen. 

Das Privileg zu haben, an einem privaten Ort zu arbeitenate sandbox wird mit einem adäquaten kommenate Maß an Verantwortung. Wir erwarten nichts weniger als einen verantwortungsvollen und solidarischen Umgang mit diesem Vorteil.

Beispiel-Setup

Wenn Sie nun alles zusammenfassen, ist hier, was Sie von einem solchen serverlosen Setup mit mehreren Umgebungen erwarten können.

  • Sie können die DevOps-Pipeline verwenden, um neue Umgebungen zu automatisieren creation, aktualisiertateund Kündigung.
  • Dann wird der Entwickler daran arbeiten und aktualisierenate die Entwicklungsumgebung, während er in der Entwicklung voranschreitet.
  • Sobald der Entwickler mit Codeänderungen fertig ist und Unit-Test, schließen Sie die Aktivität in dieser Umgebung ab, indem Sie den Code mit dem Master-Repository-Zweig zusammenführen.
  • Da viele Entwickler dies gleichzeitig tun könnenneoNormalerweise sind Code-Merging-Aktivitäten erforderlich, um die Übertragung aller Änderungen aus den Entwicklungsumgebungen an den einzigen wahren Ort – den Master-Zweig – sicherzustellen.
  • Update Die zentrale Testumgebung mit diesem Master-Branch-Repository state sodass die Systemtestaktivitäten über den zusammengeführten Code aller Entwickler durchgeführt werden können.
  • Verwenden Sie ein Dedicated Bug Fix Umgebung zu resolve alle laufenden Probleme. Diese Umgebung kann Cre seinated Verwendung derselben DevOps-Pipelines, die bereits vorhanden sind (behandeln Sie sie einfach als eine weitere temporäre Entwicklungsumgebung).
  • Finally, Fahren Sie mit dem QS-Test und der Produktionsfreigabe fort.

Wie Sie sehen, können Sie durch die Wiederverwendung derselben DevOps-Pipeline auf verschiedenen Phasen der Architektur schnell eine flexible serverlose Lösung aufbauen platFormular mit so vielen eigenständigen Entwicklungs- oder Testumgebungen wie nötig. Das Beste daran ist, dass alle Vorteile nicht mit Kosten verbunden sind.

Das könnte Sie auch interessieren Serverless Computing platFormen um Ihren Code auszuführen.

Teilen:
  • Michal Vojtech
    Autor
    Lieferorientierter Architekt mit Implementierungserfahrung in Daten-/Data-Warehouse-Lösungen für die Telekommunikations-, Abrechnungs-, Automobil-, Banken-, Gesundheits- und Versorgungsbranche. Zertifiziert für AWS Database Specialty und AWS Solution Architect…

Danke an unsere Sponsoren

Weitere großartige Lektüren zum Thema Cloud Computing

Treiben Sie Ihr Geschäft an

Einige der Tools und Services, die Ihrem Unternehmen helfen grow.