De mobiele Android-app van Sprout Social is een krachtige native applicatie waarmee onze klanten onderweg verbonden kunnen blijven met hun aanwezigheid op sociale media. Als onderdeel van onze Android-app onderhouden we meer dan 35 afhankelijkheden die worden beheerd door de open source-gemeenschap en die nuttige bouwstenen voor onze applicatie bieden.



Onze afhankelijkheden bieden talloze functionaliteiten, zoals raamwerken voor het maken van netwerkoproepen, het asynchroon laden van afbeeldingen, testtools en andere bestaande oplossingen die algemene Android-ontwikkelingsproblemen oplossen. Sommige van deze afhankelijkheden zijn nodig om de kern-Android-bibliotheken te kunnen benutten, terwijl andere helpen bij het oplossen van veelvoorkomende software-uitdagingen zonder dat je alle code helemaal opnieuw hoeft te schrijven. Elke afhankelijkheid stelt ons in staat functionaliteit te benutten zonder dat we het wiel opnieuw hoeven uit te vinden.



Tegelijkertijd heeft iedereen de verantwoordelijkheid om ze up-to-date te houden om ervoor te zorgen dat we op de hoogte zijn van nieuwe prestatie-, beveiligings- en functie-updates. Dit klinkt op papier geweldig, maar zoals elke mobiele ontwikkelaar weet kan het handmatig volgen van deze updates een hele last zijn.

Eén van onze waarden op Het technische team van Sprout is doelbewust en doelgericht handelen. In die geest hebben we besloten een slimmere oplossing te implementeren, zodat we meer tijd konden besteden aan het bouwen van impactvolle functies voor onze klanten. Om dit te bereiken hebben we de geautomatiseerde plug-in voor afhankelijkheidsbeheer, Dependabot, gebruikt. Dependabot vermindert het aantal verouderde afhankelijkheden, vereenvoudigt de inspanningen die nodig zijn om deze bij te werken en stroomlijnt ons algehele ontwikkelingsproces.

Afstappen van handmatig afhankelijkheidsonderhoud

Bij native Android-ontwikkeling worden afhankelijkheden gedeclareerd in een build.gradle-bestand. Door de afhankelijkheid op te geven die we nodig hebben met de versie ervan, zal Gradle deze vanuit een centrale opslagplaats oplossen en deze voor ons ophalen zodat we deze binnen de applicatie kunnen gebruiken. Als een Android-app uit meerdere modules bestaat, heeft elke module zijn eigen build.gradle-bestand waarin de afhankelijkheden voor die module worden aangegeven.

Het efficiënt onderhouden van deze afhankelijkheden is van cruciaal belang voor een soepel ontwikkelingsproces en om klanten te voorzien van een effectieve applicatie voor het beheer van sociale media die de snelheid van sociale media kan bijhouden. Maar het up-to-date houden van afhankelijkheden wordt een lastige taak die een beoordeling van het werk, versiecompatibiliteitscontroles, mogelijke codewijzigingen en testen vereist.

Vóór Dependabot hadden we een handmatig proces voor afhankelijkheidsbeheer. Naarmate de complexiteit van onze applicatie toenam, nam ook onze tijd aan afhankelijkheidsbeheer toe. Het kostte het team veel moeite om de noodzaak van een afhankelijkheid te identificeren en deze vervolgens via onze agile ontwikkelingsworkflows te verwerken om deze geprioriteerd en up-to-date te krijgen. We ontdekten vaak dat afhankelijkheden updates nodig hadden tijdens de ontwikkeling van functies, wat de altijd gevreesde projectscope-creep introduceerde. We hadden een betere manier nodig.



Even voorstellen: Dependabot

Afhankelijkheidsmanagement is geen nieuw concept. Gezien het feit dat het meeste werk dat nodig is om afhankelijkheden te beheren repetitief en eentonig is, dacht ons team dat dit de perfecte kandidaat zou zijn voor iets dat geautomatiseerd kon worden (zonder in de val te trappen dat we de automatisering zelf moesten schrijven).

We vonden dat Dependabot goed aan onze behoeften voldeed: het is een GitHub first-party tool die automatisch nieuwere versies van afhankelijkheden detecteert en rekening houdt met eventuele compatibiliteitsproblemen die kunnen worden veroorzaakt door het upgraden ervan. Het brengt alle versie-upgrades naar voren zodra deze beschikbaar komen en creëert pull-aanvragen (PR's) met informatie over de upgrade, die we naadloos konden integreren in onze normale engineeringworkflow. Plotseling hoefden we niet langer handmatig te controleren of alles actueel was.

Implementatie

Dependabot analyseert op intelligente wijze onze build.gradle-bestanden om onze afhankelijkheidsboom te bepalen en creëert PR's voor eventuele afhankelijkheden die moeten worden bijgewerkt. Om de implementatie tot een succes te maken, hadden we een manier nodig om elke PR zorgvuldig te beoordelen en de samenvoegingen van de PR's te stroomlijnen.



  Een afbeelding van de beslissingsboom die Dependabot gebruikt om eventuele afhankelijkheden te identificeren die moeten worden bijgewerkt.

Tijdens elke applicatierelease van onze Android-app wijzen we een releasemanager toe. We hebben besloten deze verantwoordelijkheid te integreren in het proces van de releasemanager, met de verwachting dat er tijdens elke releasecyclus maximaal vijf afhankelijkheidsupgrades moeten worden voltooid. De releasemanager beoordeelt de afhankelijkheidsupdates die door Dependabot zijn ontdekt, zorgt ervoor dat onze voortdurende integratietests op de PR slagen en dat er geen brekende bibliotheekwijzigingen zijn, beoordeelt vervolgens de upgrades die door deze versiebult worden geleverd en brengt de lijst met PR's ter goedkeuring naar het team samengevoegd worden.

De voordelen van automatisering

Geautomatiseerd afhankelijkheidsbeheer is een krachtig hulpmiddel dat ons ontwikkelingsproces en de levenskwaliteit van onze engineers aanzienlijk verbetert. Het biedt gebruikers ook hoogwaardige en de nieuwste functies binnen onze native mobiele applicatie. Met een tool als Dependabot hebben we het ophalen, integreren en versiebeheer van afhankelijkheden gestroomlijnd, waardoor de hoeveelheid handmatige inspanning die ingenieurs moeten besteden, is verminderd en de kans op conflicten in onze afhankelijkheidsboom is verkleind.

Omdat de complexiteit van Android-projecten blijft groeien, was het adopteren van geautomatiseerd afhankelijkheidsbeheer een waardevolle stap om een ​​ontwikkelingsproces van wereldklasse voor ons team en een Android-applicatie van wereldklasse voor onze klanten te garanderen.

Voor meer informatie over het technische team en de cultuur van Sprout, Bezoek onze carrièresite .

Deel Het Met Je Vrienden: