Ein Einblick in den Entwicklungsprozess von Facebook für mobile Apps

Autor: Laura McKinney
Erstelldatum: 4 Lang L: none (month-011) 2021
Aktualisierungsdatum: 1 Juli 2024
Anonim
Ein Einblick in den Entwicklungsprozess von Facebook für mobile Apps - Apps
Ein Einblick in den Entwicklungsprozess von Facebook für mobile Apps - Apps

Inhalt


Kürzlich habe ich die Facebook-Zentrale in London besucht, um mehr über die Entwicklung und Wartung der mobilen Facebook-App zu erfahren. Hier geht viel mehr vor, als Sie wahrscheinlich glauben: Einige Facebook-Apps werden hier vollständig behandelt, wie WhatsApp for Desktop und die geschäftsorientierte Workplace-App.

Die Büros entsprechen genau den Erwartungen, die Sie an das Image von Facebook stellen, wenn auch möglicherweise nicht in einem Ausmaß, das über das soziale Netzwerk hinausgeht. Dies ist ein Ort, an dem ernsthafte Arbeit geleistet wird, aber dennoch eine trendige, schrullige und entspannte Atmosphäre herrscht. Mitarbeiter können Laptops mitnehmen, um dort zu arbeiten, wo sie möchten. Es gibt einen Druckraum, in dem Plakate hergestellt werden können (nur weil), aufgegebene Kunstwerke an mehreren Wänden und eine riesige Ninja-Schildkröte. Ich habe keine Antwort darauf, warum.

Oh, und das Essen ist unglaublich. Ich war dort während des chinesischen Neujahrs und ich hatte mehrere Schweinebäuche. Gute Zeiten.


Ich war jedoch nicht dort, um die Einrichtung und die Küche zu genießen, sondern um etwas über Facebook auf Mobilgeräten zu lernen. Genauer gesagt: Wie um alles in der Welt gehen Sie überhaupt vor, um ein so großes und ehrgeiziges Projekt aufrechtzuerhalten? Das Facebook-Backend bedient über zwei Milliarden Menschen, und allein für die Android-App wird jede Woche eine neue Version veröffentlicht.

Wie managen Sie eine App mit einer derart ambitionierten Anzahl von Funktionen?

Ich habe mit Tal Kellner über das Facebook-eigene Telepresence-System gesprochen. Tal ist technischer Programmmanager und verantwortlich für das Release Engineering Team im Ingenieurbüro in Tel Aviv. Sie war mehr als glücklich, die groben Details zu teilen.


Tal und ihr Team laden zum ersten Mal ihre Lite-Version von Facebook auf iOS hoch

Was ich gelernt habe, war sowohl aus Entwicklersicht als auch als Benutzer ziemlich faszinierend. Folgendes habe ich herausgefunden:

Projektmanagement bei Facebook - Warum Scrum> Waterfall

Bei der Betrachtung eines großen Projekts müssen Sie Ihren Projektmanagementansatz berücksichtigen. Ein solches Beispiel nennt sich „Wasserfall“ -Projektmanagement. Dies ist ein sequentieller und linearer Ansatz, bei dem Sie nacheinander an einer bestimmten Phase arbeiten, z. B. von der Idee über die Implementierung bis hin zum Testen und Freigeben.

Firmen wie Facebook entscheiden sich stattdessen für einen moderneren Ansatz für das Projektmanagement namens "Scrum".

Entscheidend ist, dass Sie bei diesem Ansatz erst mit der nächsten Phase beginnen, wenn die vorherige Phase abgeschlossen ist. Das System stammt aus der Fertigung, in der bestimmte Phasen häufig von der vorherigen Phase abhängen: Sie müssen Ziegel beschaffen, bevor Sie eine Mauer bauen können!

Bei Software ist dieser Ansatz restriktiv. Im schlimmsten Fall kann ein Update so lange dauern, bis es eintrifft. Duke Nukem Für immer jemand?

Daher entscheiden sich einige Softwareunternehmen für einen moderneren Ansatz namens „Scrum“, der eine agile Methodik darstellt. Diese Methode priorisiert die Arbeit, die am wichtigsten ist, und teilt sie in modulare Abschnitte auf. Es basiert auf der Kommunikation zwischen internen Abteilungen und sogar einzelnen Agenten, die alleine an ihren eigenen Code-Ecken arbeiten.

Theoretisch kann jeder die ganze Zeit an dem arbeiten, was für ihn am dringendsten ist, und jeder andere Teil des Unternehmens weiß, was er tut. Jeder Ingenieur hat ein hohes Maß an Eigenverantwortung, und letztendlich ist jeder für seine eigene Arbeit verantwortlich. Dies erhöht nicht nur die Agilität des Unternehmens, sondern hoffentlich auch die Zufriedenheit am Arbeitsplatz. Niemand ist nur ein Zahnrad in der Maschine.

Jeder innerhalb des Unternehmens kann eine Idee für eine neue Funktion vorschlagen

Ich war sehr beeindruckt zu hören, dass jeder aus der gesamten Organisation eine Idee für ein neues Feature vorschlagen und dann daran arbeiten konnte, wenn die Freigabe erteilt wurde. Manchmal kann sich daraus sogar eine eigene App entwickeln! Facebook ist viel mehr ein Gemeinschaftsprojekt als die von oben nach unten erzwungene Vision einiger weniger Personen (oder einer Person), als die es oft dargestellt wird.

Dadurch kann Facebook einen überaus schnellen Entwicklungszyklus implementieren und jede Woche ein neues Handy-Update sowie Tausende von Commits (vorgeschlagene Codeänderungen) zwischenzeitlich durchführen. Wenn Sie der Meinung sind, dass dies beeindruckend ist, wird die Webversion (deren Backend auch die mobile App enthält) alle zwei bis drei Stunden aktualisiert.

Facebook unterstützt in der Regel neue Ideen und Startups. Es gibt sogar eine Initiative namens LDN LAB, die sich der Unterstützung neuer Ideen und Unternehmen widmet.

Gleichgewicht finden

Entnommen aus Tals eigenen Dias

Natürlich wird es immer noch Grenzen geben, wenn es darum geht, wie ein Unternehmen damit umgehen kann. Bei so viel Code gibt es immer Raum für Verbesserungen, aber es muss eine Zeit kommen, in der die Version als "gut genug" gilt.

Hier kommt das "goldene Dreieck" ins Spiel. Die drei Punkte dieses Dreiecks stehen für Merkmale, Qualität und Zeit. Hier hat jedes Unternehmen die Wahl: Priorisieren Sie neue Funktionen, wenn es um die Crunch-Zeit geht, und nehmen Sie sich dafür etwas mehr Zeit? Erlauben Sie, dass ein kleinerer vorhandener Fehler durch das Netz rutscht, wenn Sie dadurch mehr Funktionen hinzufügen können? Wenn Sie nicht alles tun können, müssen Sie Prioritäten setzen.

Bei Facebook stehen Qualität und Zeit im Vordergrund. Wenn ein Update hinter das zugewiesene Fenster fällt, wird eine Funktion wahrscheinlich zurückgeschoben. anstatt eine Ecke zu schneiden oder das Update zu verzögern.

Versionskontrolle und Jonglieränderungen

Für die Bearbeitung dieser Aktualisierungen und Änderungen des Codes verwendet Facebook eine eigene modifizierte Version von Mercurial. Das ist anstelle des weit verbreiteten Git, der anscheinend für die Zwecke des Unternehmens nicht so gut skaliert wurde. Phabricator ist das Äquivalent zu GitHub und verwendet viele Plugins, um den Workflow zu optimieren und manchmal nur, um die Dinge ein bisschen lustiger zu machen (Facebook mag anscheinend seine Memes).

Für die Nicht-Programmierer da draußen ist Mercurial wie Git ein Versionskontrollsystem. Es ermöglicht einer großen Anzahl von Personen, an einer einzigen Software zu arbeiten und Änderungen und Korrekturen vorzunehmen, ohne die Haupt-App-Version, die als „Hauptzweig“ bezeichnet wird, zu gefährden. Diese Tools tragen dazu bei, Codekonflikte zu vermeiden und Experimente zu ermöglichen. Erst wenn eine Änderung in einem Testzweig vollständig genehmigt wurde, wird sie an den Master übergeben.

Stellen Sie sich vor, ein armer Programmierer hätte einen Tippfehler gemacht, der den gesamten Code gebrochen hat und es gab nur eine Version! Das wäre ein schlechter Tag für alle.

Tools wie Mercurial ermöglichen es, den Scrum-Ansatz relativ einfach zu implementieren, sodass alle gleichzeitig an bestimmten Features und Bugs arbeiten können, bevor sie alle in einem großen Topf zusammenführen.

Einmal pro Woche wird ein Release-Kandidat vom Master entfernt und dieser durchläuft dann die Testphase. Programmierer, die die ganze Woche an Fehlerkorrekturen oder neuen Funktionen gearbeitet haben, drücken jetzt die Daumen und hoffen, dass ihre Arbeit in das neue Update aufgenommen wird.

Alle Last-Minute-Korrekturen oder -Änderungen, die von Teammitgliedern vorgenommen werden, müssen von den Verantwortlichen für die Aufnahme in den neuen Zweig ausgewählt werden. Berichten zufolge ist bekannt, dass sie Bestechungsgelder in Form von Pralinen und Alkohol verwenden, die den Entscheidungsträgern geschenkt werden.

Zum Kompilieren verwendet Facebook ein anderes Tool namens Buck. Dieses einzelne Build-Tool kann beim Packen der App alles erstellen. Für die Ausrichtung auf verschiedene Plattformen sind keine separaten Optionen wie Gradle oder Ant erforderlich.

Fehler rechtzeitig erkennen

Da jeder an verschiedenen Dingen arbeitet und so viele Updates regelmäßig veröffentlicht werden, ist es sehr wichtig, dass Unternehmen sicherstellen, dass ihre Software funktioniert und keine schwerwiegenden Fehler vorliegen. Zum größten Teil hat Facebook eine ziemlich gute Erfolgsbilanz, um Dinge am Laufen zu halten.

Zu diesem Zweck teilt das Team die Softwaretests in Ebenen auf, die als C1, C2 und C3 bezeichnet werden.

C1 ist ein interner Test und alle Mitarbeiter werden diese Version ausführen. Während C2 läuft die Version durch 2 Prozent der Öffentlichkeit und C3 ist Produktion. Sollte etwas wirklich Ernstes festgestellt werden, kann jeder Mitarbeiter auf einen Not-Aus-Schalter zugreifen, um die Produktion zum Stillstand zu bringen.

Die Freiwilligen, die sich dafür einsetzen, dass die Stufen weiterentwickelt werden, werden als „Baumhugger“ (weil Zweige) bezeichnet und tun dies zusätzlich zu ihrer regulären Arbeit.

Auf Mobilgeräten werden ähnliche Ebenen als Alpha, Beta und Prod bezeichnet. Alpha bedeutet einen internen Test, den alle Mitarbeiter durchführen. Der Prozess eines Unternehmens, das seine eigenen Produkte auf diese Weise verwendet, wird als „Hundefutter“ bezeichnet - vom „Fressen des eigenen Hundefutters“.

Testern stehen auch einige einzigartige und interessante Tools zur Verfügung, mit denen sie Fehler schnell melden können. Eine davon ist "Rageshake", bei dem durch einfaches frustriertes Schütteln des Geräts ein Fehlerbericht erstellt wird, wie bei Google Maps.

Testern stehen auch einige einzigartige und interessante Tools zur Verfügung, mit denen sie Fehler schnell melden können

Während der Alpha-Phase, die effektiv auf interne Tests verweist, verwendet Facebook auch automatische Tests, um die App auszuführen. Zum Beispiel funktioniert eine kürzlich erworbene Software namens „Sapienz“ im Wesentlichen, indem Sie auf jede Schaltfläche klicken und jede Funktion in einem zufälligen Angriff verwenden, bis sie einen Absturz auslöst. Anschließend wird der Stack-Trace protokolliert, die Aktion aufgezeichnet und ein Bericht erstellt.

Die Beta-App (die von der Öffentlichkeit getestete Version) durchläuft einen kleinen Unterabschnitt (~ 2 Prozent) der Öffentlichkeit. Dieses kleine Snippet wird das Update vorab erhalten und Facebook realistisches Feedback geben. Wenn alles gut zu sein scheint, wird das Update für die gesamte Bevölkerung durchgeführt und der Vorgang beginnt von neuem.

Leistungsstarke Tools für die Automatisierung und Kraftvervielfachung

Um diesen gesamten Prozess so schnell und reibungslos wie möglich zu gestalten, setzt Facebook eine Vielzahl unterschiedlicher Tools ein. Wir haben bereits gesehen, wie das Unternehmen Phabricator und Sapienz einsetzt, aber es verfügt über andere Tools und Plugins für andere Phasen.

Ein Tool namens Picknic sammelt alle Pull-Anforderungen (Änderungen, die Mitarbeiter vorgenommen haben) an einem Ort, um sie schnell und einfach zu überprüfen.

Wenn das Testen einen Fehler auslöst, informiert ein Bot namens Nagbot die Verantwortlichen und treibt sie sanft an, die Arbeit zu erledigen. Die Verwendung einer rudimentären KI zur Abwicklung dieses Prozesses stellt nicht nur sicher, dass die Arbeit erledigt wird, sondern ermöglicht es dem Manager auch, durch ständiges Nörgeln zu vermeiden, der „Bösewicht“ zu sein!

Wenn das Testen einen Fehler auslöst, den jemand beheben kann, informiert ein Bot namens Nagbot die Verantwortlichen und treibt sie sanft an, die Arbeit zu erledigen

Crashbot ist ein weiterer Bot, der dafür verantwortlich ist, diese Fehler zu melden, sobald sie auftreten. Er ist Metriken aus der Google-Konsole vorzuziehen, da er in Echtzeit meldet. Crashbot zeigt ein Problem an, sobald die Probleme eine „akzeptable Absturzschwelle“ überschreiten. Dies kann an der Anzahl der Personen liegen, bei denen der Fehler auftritt, oder an der Häufigkeit, mit der ein einzelner Benutzer auf denselben Fehler gestoßen ist. In jedem Fall wird Facebook auch eine Metrik haben, die die Anzahl der traurigen Nutzer anzeigt.

Facebook nutzt für die interne Kommunikation den sogenannten Workplace. Hierbei handelt es sich im Grunde genommen um eine Facebook-Version, die für Unternehmen gedacht ist und eine nützliche Möglichkeit bietet, Informationen über die Mitglieder des Teams abzurufen und schnell mit denen zu kommunizieren, die auf der anderen Seite des weitläufigen Büros sitzen. Facebook verkauft diese Software auch an Dritte.

Natürlich wird Facebook keine Zeit damit verschwenden, jede neue Version seiner Apps in den Play Store, den App Store, Amazon und den Rest der Welt hochzuladen. Es gibt auch eine App namens "Mobile Push Train".

Gedanken schließen

Es ist ein immenses Unterfangen, eine App wie Facebook auf dem neuesten Stand zu halten, und das Unternehmen muss die Benutzer immer noch davon überzeugen, diese Updates tatsächlich zu installieren. Dies ist besonders schwierig in Ländern, in denen die Konnektivität nicht garantiert ist. In Kanada betreibt nur noch ein Prozent der Nutzer eine Version von Facebook, die älter als ein Jahr ist. In Äthiopien sind es fast 50 Prozent!

Das Team bei Facebook arbeitet offensichtlich sehr hart und verwendet eine Vielzahl von Tools und Prozessen, um alles so rational wie möglich zu gestalten. Letztendlich möchte das Entwicklungsteam fünf Prinzipien einhalten:

  • Halten Sie den Master sauber.
  • Haben Sie ein Team mit Fachwissen in Release-Engineering.
  • Oft pünktlich freigeben.
  • Dogfood-Produkte.
  • Seien Sie freundlich zu den Nutzern.

Es hört sich einfach an, aber wie Sie sehen, sind viele Spinnplatten erforderlich. Auch die Wartung aller im Prozess verwendeten Tools ist ein Projekt für sich!

Facebook sorgt für eine freundliche und unbeschwerte Atmosphäre im Büro in London. Das Team tauscht GIFs und Meme über Plugins aus, benennt Räume basierend auf "Dingen, die die Briten hassen" und Wortspielen von Shakespeare und sie sind sehr stolz auf ihre Arbeit. Bei Facebook arbeiten sie hart und spielen hart, und es scheint, dass das System größtenteils funktioniert.

Wenn das nächste Mal ein neues Update für eine Ihrer größeren Apps veröffentlicht wird, sollten Sie sich überlegen, wie viel Arbeit und Organisation erforderlich sind, um das Update zu installieren.

amung und LG ind zwei monolithiche Unternehmen in ihrer Heimat üdkorea. Beide Unternehmen haben ihre Flaggchiff-Handy für da erte Halbjahr 2019 vorgetellt, zunächt amung mit dem Galaxy ...

Da amung Galaxy 10 wird mit ziemlicher icherheit eine der meitverkauften Handy de Jahre 2019 ein. E wird auch eine der teuerten ein, aber wa wäre, wenn e ein Premium-martphone geben würde, d...

Beliebt Auf Dem Portal