Aller Anfang ist leicht: Unsere erste App
Unsere erste inhouse entwickelte App „glückskind“ bestand aus einem übersichtlichen Use Case und einer kleinen Anzahl an beteiligten Teams. Das zentrale Feature bildete das Couponing unseres glückskind-Kundenprogramms. So konnten wir die App mit einer Hand voll nativer Entwickler in nur wenigen Monaten für Android sowie iOS entwickeln und veröffentlichen.
E-Commerce – der nächste große Use Case
Unser Onlineshop erfreute sich immer größer werdender Beliebtheit, daher war es naheliegend, diesen auch über eine App anzubieten. Die dm-App sollte aus dem Onlineshop bekannte, aber auch gänzlich neue Services zu den Kunden bringen. Hier wurde schnell deutlich, dass unser bisheriger Ansatz für die App-Entwicklung nicht ausreichend skaliert war.
)
)
Verschiedene Skalierungsoptionen
Wir mussten uns für eine der folgenden Optionen entscheiden:
Den Funktionsumfang der App gering halten.
Mehr native App-Entwickler in das Projekt holen.
Den bestehenden Produktteams ermöglichen, ihre Features selbstständig in die App zu integrieren.
Es erschien naheliegend, die letzte Option zu wählen und die bestehenden Produktteams in die Entwicklung der App miteinzubeziehen, da diese ihre Features am besten kennen und dadurch auch am besten in der Lage sind, diese zu pflegen.
Technologische Vielfalt als zentrale Herausforderung
Die technische Umsetzung bildete dabei die größte Hürde. Denn die in der App-Entwicklung gängigen Technologien unterscheiden sich stark von denen, die in unserem Onlineshop zum Einsatz kommen. Während sich letzterer auf das UI Framework React sowie die Scriptsprache JavaScript stützt, werden native Apps mit anderen Frameworks und Programmiersprachen implementiert, z. B. Kotlin für Android und Swift für iOS. Deshalb ist es nicht einfach, sich als Entwickler in beiden Welten zurechtzufinden.
Brücken bauen mit React Native
Während es sowohl für die Webentwicklung als auch für native Apps verschiedenste Frameworks gibt, fiel uns besonders „React Native“ ins Auge. Hierdurch wurde es uns möglich, eine Plattform in der App zu schaffen, in die unsere Produktteams ihre Features in einer ihnen bekannten Technologie implementieren konnten. Zugleich konnten wir den Kern der App nativ belassen, sodass auch native Features in die App integriert werden konnten. Diesen Ansatz nennt man „Hybrid-App“.
Was wir gelernt haben
Mittlerweile können wir auf mehrere Jahre der Entwicklung einer hybriden App zurückblicken. Daran sind mittlerweile sogar zehn Teams beteiligt. Unsere spannendsten Learnings sind bisher:
Die Wartung einer hybriden App hat ihren Preis – jedes Update der unterliegenden Frameworks (z. B. React Native) verursacht Aufwand.
Der Abstimmungsaufwand zwischen den Teams steigt, da neue Versionen einer App einen starren Release-Prozess durchlaufen müssen, bis sie in den jeweiligen App Stores erscheinen.
Zukünftige Herausforderungen
Wir sind mit unserem Ansatz, der Zusammenarbeit verschiedener Teams an einer hybriden App, weit gekommen. Um auch in Zukunft schnell auf neue Anforderungen reagieren zu können, ist es jedoch notwendig, die im Laufe der Jahre gewachsene App-Architektur zu modernisieren. So kann für alle Beteiligten weiterhin eine gute Zusammenarbeit ermöglicht werden. Eine kontinuierliche Pflege der hybriden App als Plattform ist also ebenso wichtig wie die Entwicklung neuer Features.