Die mobile Android-App von Sprout Social ist eine leistungsstarke native Anwendung, mit der unsere Kunden auch unterwegs mit ihrer Social-Media-Präsenz verbunden bleiben. Als Teil unserer Android-App verwalten wir über 35 Abhängigkeiten, die von der Open-Source-Community verwaltet werden und nützliche Bausteine ​​für unsere Anwendung bereitstellen.




18 zahl bedeutung

Unsere Abhängigkeiten bieten unzählige Funktionen wie Frameworks für Netzwerkaufrufe, asynchrones Laden von Bildern, Testtools und andere bestehende Lösungen, die häufige Android-Entwicklungsherausforderungen lösen. Einige dieser Abhängigkeiten sind erforderlich, um die Kernbibliotheken von Android zu nutzen, während andere dazu beitragen, häufige Softwareherausforderungen zu lösen, ohne den gesamten Code von Grund auf neu schreiben zu müssen. Jede Abhängigkeit ermöglicht es uns, die Funktionalität zu nutzen, ohne das Rad neu erfinden zu müssen.



Gleichzeitig ist jeder dafür verantwortlich, sie auf dem neuesten Stand zu halten, um sicherzustellen, dass wir über neue Leistungs-, Sicherheits- und Funktionsupdates informiert sind. Auf dem Papier klingt das großartig, aber wie jeder mobile Entwickler weiß, kann die manuelle Verfolgung dieser Updates eine echte Belastung sein.

Einer unserer Werte Das Ingenieurteam von Sprout ist zielstrebiges und zielgerichtetes Handeln. In diesem Sinne haben wir uns entschieden, eine intelligentere Lösung zu implementieren, damit wir mehr Zeit damit verbringen können, wirkungsvolle Funktionen für unsere Kunden zu entwickeln. Um dies zu erreichen, haben wir das First-Party-Plugin für automatisiertes Abhängigkeitsmanagement, Dependabot, verwendet. Dependabot reduziert unser Volumen an veralteten Abhängigkeiten, vereinfacht den Aufwand für deren Aktualisierung und rationalisiert unseren gesamten Entwicklungsprozess.

Abkehr von der manuellen Abhängigkeitspflege

Bei der nativen Android-Entwicklung werden Abhängigkeiten in einer build.gradle-Datei deklariert. Durch Angabe der Abhängigkeit, die wir mit seiner Version benötigen, löst Gradle sie aus einem zentralen Repository auf und ruft sie ab, damit wir sie in der Anwendung verwenden können. Wenn eine Android-App aus mehreren Modulen besteht, verfügt jedes Modul über eine eigene build.gradle-Datei, die die Abhängigkeiten für dieses Modul deklariert.

Die effiziente Pflege dieser Abhängigkeiten ist entscheidend für einen reibungslosen Entwicklungsprozess und die Bereitstellung einer effektiven Social-Media-Management-Anwendung für Kunden, die mit der Geschwindigkeit der sozialen Medien mithalten kann. Aber Abhängigkeiten auf dem neuesten Stand zu halten, wird zu einer entmutigenden Aufgabe, die eine Bewertung der Arbeit, Versionskompatibilitätsprüfungen, mögliche Codeänderungen und Tests erfordert.

Vor Dependabot hatten wir einen manuellen Abhängigkeitsmanagementprozess. Mit zunehmender Komplexität unserer Anwendung nahm auch unser Zeitaufwand für das Abhängigkeitsmanagement zu. Das Team musste erhebliche Anstrengungen unternehmen, um die Notwendigkeit einer Abhängigkeit zu erkennen und sie dann durch unsere agilen Entwicklungsworkflows zu verarbeiten, um sie zu priorisieren und auf den neuesten Stand zu bringen. Wir stellten oft fest, dass Abhängigkeiten während der Feature-Entwicklung aktualisiert werden mussten, was zu der immer gefürchteten Projektumfangsklausel führte. Wir brauchten einen besseren Weg.



Wir stellen vor: Dependabot

Abhängigkeitsmanagement ist kein neues Konzept. Angesichts der Tatsache, dass der Großteil der für die Verwaltung von Abhängigkeiten erforderlichen Arbeit repetitiv und eintönig ist, dachte unser Team, dass dies der perfekte Kandidat für etwas wäre, das automatisiert werden könnte (ohne in die Falle zu tappen, die Automatisierung selbst schreiben zu müssen).

Wir haben festgestellt, dass Dependabot unseren Anforderungen gut entspricht – es ist ein GitHub-First-Party-Tool, das automatisch neuere Versionen von Abhängigkeiten erkennt und etwaige Kompatibilitätsprobleme berücksichtigt, die durch ein Upgrade dieser Versionen verursacht werden können. Es zeigt alle Versions-Upgrades an, sobald diese verfügbar sind, und erstellt Pull Requests (PRs) mit Informationen zum Upgrade, die wir nahtlos in unseren normalen Engineering-Workflow integrieren konnten. Plötzlich mussten wir nicht mehr stundenlang manuell sicherstellen, dass alles auf dem neuesten Stand war.

Implementierung

Dependabot analysiert unsere build.gradle-Dateien intelligent, um unseren Abhängigkeitsbaum zu bestimmen und erstellt PRs für alle Abhängigkeiten, die aktualisiert werden müssen. Damit die Implementierung erfolgreich war, brauchten wir eine Möglichkeit, jede PR sorgfältig zu überprüfen und die Zusammenführung der PRs zu optimieren.



  Eine Grafik des Entscheidungsbaums, den Dependabot verwendet, um alle Abhängigkeiten zu identifizieren, die aktualisiert werden müssen.

Bei jeder Anwendungsfreigabe unserer Android-App weisen wir einen Release-Manager zu. Wir haben beschlossen, diese Verantwortung in den Prozess des Release-Managers zu integrieren, mit der Erwartung, dass während jedes Release-Zyklus bis zu fünf Abhängigkeits-Upgrades abgeschlossen werden. Der Release-Manager überprüft die von Dependabot aufgedeckten Abhängigkeitsaktualisierungen, stellt sicher, dass unsere kontinuierlichen Integrationstests für die PR erfolgreich sind und es keine bahnbrechenden Bibliotheksänderungen gibt, überprüft dann die durch diesen Versionssprung bereitgestellten Upgrades und legt dem Team die Liste der PRs zur Genehmigung vor zusammengeführt werden.

Die Vorteile der Automatisierung

Das automatisierte Abhängigkeitsmanagement ist ein leistungsstarkes Tool, das unseren Entwicklungsprozess und die Lebensqualität unserer Ingenieure erheblich verbessert. Es bietet Benutzern außerdem hochwertige und neueste Funktionen innerhalb unserer nativen mobilen Anwendung. Mit einem Tool wie Dependabot haben wir das Abrufen, Integrieren und Versionieren von Abhängigkeiten optimiert, wodurch der manuelle Aufwand für Ingenieure reduziert und die Wahrscheinlichkeit von Konflikten in unserem Abhängigkeitsbaum verringert wurde.

Da die Komplexität von Android-Projekten immer weiter zunimmt, war die Einführung eines automatisierten Abhängigkeitsmanagements ein wertvoller Schritt, um einen erstklassigen Entwicklungsprozess für unser Team und eine erstklassige Android-Anwendung für unsere Kunden sicherzustellen.

Um mehr über das Ingenieurteam und die Kultur von Sprout zu erfahren, Besuchen Sie unsere Karriereseite .

Teile Mit Deinen Freunden: