Een kijkje in het ontwikkelproces van Facebook voor mobiele apps

Schrijver: Laura McKinney
Datum Van Creatie: 4 Lang L: none (month-011) 2021
Updatedatum: 1 Juli- 2024
Anonim
De MyHeritage app - genealogisch onderzoek met uw mobiele device
Video: De MyHeritage app - genealogisch onderzoek met uw mobiele device

Inhoud


Onlangs bezocht ik het Facebook-hoofdkantoor in Londen om meer te weten te komen over het proces van het ontwikkelen en onderhouden van de mobiele Facebook-app. Er gebeurt hier veel meer dan u waarschijnlijk denkt: sommige apps van Facebook worden hier volledig afgehandeld, zoals WhatsApp voor desktop en de bedrijfsgerichte Workplace-app.

De kantoren zijn precies wat je zou verwachten van het imago van Facebook, maar misschien niet helemaal tot het niveau van het sociale netwerk. Dit is een plek waar serieus werk wordt gedaan, maar er is toch een trendy, eigenzinnige en ontspannen sfeer. Werknemers kunnen laptops meenemen naar het werk waar ze maar willen, er is een printkamer voor het maken van posters (alleen omdat), kunstwerken in opdracht op verschillende van de muren en een gigantische Ninja Turtle - ik heb nooit een antwoord gekregen waarom.

Oh, en het eten is ongelooflijk. Ik was er tijdens het Chinese Nieuwjaar en dat had ik meerdere Varkensbuikjes. Goede Tijden.


Ik was er echter niet om te genieten van het decor en de keuken, ik was er om te leren over Facebook op mobiel. Meer in het bijzonder: hoe ga je in vredesnaam om met zo'n groot en ambitieus project? De backend op Facebook bedient meer dan twee miljard mensen, en alleen de Android-app ziet elke week een nieuwe versie.

Hoe beheer je een app met zo'n ambitieus aantal functies

Ik sprak met Tal Kellner via het eigen telepresence-systeem van Facebook. Tal is technisch programmamanager, verantwoordelijk voor het Release Engineering Team in het ingenieursbureau van Tel Aviv. Ze was meer dan blij om de zanderige details te delen.

Tal en haar team uploaden voor het eerst hun Lite-versie van Facebook naar iOS

Wat ik heb geleerd, was behoorlijk fascinerend, zowel vanuit het perspectief van de ontwikkelaar als als gebruiker. Dit is wat ik heb ontdekt.


Projectmanagement op Facebook - Waarom Scrum> Waterfall

Wanneer u naar een groot project kijkt, moet u rekening houden met uw projectmanagementbenadering. Een voorbeeld hiervan wordt 'waterval'-projectbeheer genoemd. Dit is een sequentiële en lineaire aanpak waarbij je op zijn beurt aan een specifieke fase werkt, zoals van ideatie over implementatie naar testen om uit te geven.

bedrijven zoals Facebook kiezen in plaats daarvan voor een modernere benadering van projectmanagement genaamd "scrum"

Cruciaal is dat u in deze benadering niet aan de volgende fase begint voordat de vorige fase is voltooid. Het systeem is afkomstig van de productie, waarbij bepaalde fasen vaak afhankelijk zijn van de vorige fase: je moet stenen zoeken voordat je een muur kunt bouwen!

Als het gaat om software, is deze aanpak restrictief. In het ergste geval kan het zo lang duren voordat een update is uitgerold, die tegen de tijd dat deze arriveert, verouderd is. Duke Nukem Voor altijd iemand?

Daarom kiezen sommige softwarebedrijven in plaats daarvan voor een modernere aanpak die 'scrum' wordt genoemd, wat een agile methode is. Deze methode geeft prioriteit aan het werk dat het belangrijkst is en breekt het in modulaire brokken. Het is afhankelijk van communicatie tussen interne afdelingen en zelfs individuele agenten die alleen op hun eigen hoeken van code werken.

Het resultaat is, in theorie, dat iedereen kan werken aan wat voor hen het meest dringend is, en dat elk ander deel van het bedrijf weet wat ze doen. Er is een hoog eigendomsniveau voor elke ingenieur en iedereen is uiteindelijk verantwoordelijk voor zijn eigen werk. Dit maakt het bedrijf niet alleen flexibeler, maar verhoogt hopelijk ook de tevredenheid op de werkplek. Niemand is slechts een tandwiel in de machine.

iedereen van overal in de organisatie kan een idee voor een nieuwe functie voorstellen

Ik was erg onder de indruk van het feit dat iedereen van overal in de organisatie een idee voor een nieuwe functie kon voorstellen en daar vervolgens aan de slag kon gaan als het groen licht kreeg. Soms kan dit zelfs uitgroeien tot een eigen afzonderlijke app! Facebook is veel meer een samenwerkingsproject dan de top-down afgedwongen visie van een paar mensen (of één persoon) waarop het vaak wordt afgebeeld.

Dit stelt Facebook in staat om een ​​buitengewoon snelle ontwikkelingscyclus te implementeren, waardoor elke week een nieuwe mobiele update mogelijk is en tussen die tijd duizenden commits (voorgestelde codewijzigingen). Als je dat indrukwekkend vindt, wordt de webversie (waarvan de back-end ook de mobiele app dient) om de twee tot drie uur bijgewerkt!

Facebook is over het algemeen een groot voorstander van nieuwe ideeën en startups. Het heeft zelfs een initiatief genaamd LDN LAB gericht op het ondersteunen van nieuwe ideeën en bedrijven.

Evenwicht vinden

Genomen uit Tal's eigen dia's

Natuurlijk zal er altijd een limiet zijn als het gaat om wat een bedrijf aankan. Met zoveel code is er altijd ruimte voor verbetering, maar er moet een moment komen dat de versie als "goed genoeg" wordt beschouwd.

Dat is waar de "gouden driehoek" in het spel komt. De drie punten van deze driehoek vertegenwoordigen functies, kwaliteit en tijd. Elk bedrijf heeft hier de keuze: als het op crunch-tijd aankomt, geeft u voorrang aan nieuwe functies ten koste van iets langer duren? Laat je een kleine bestaande bug door het net glijden als dit betekent dat je meer functies kunt toevoegen? Als je niet alles kunt doen, moet je prioriteiten stellen.

Bij Facebook zijn de prioriteiten kwaliteit en tijd. Als een update achter het toegewezen venster valt, wordt een functie waarschijnlijk teruggeduwd; in plaats van dat een hoek wordt gesneden of de update wordt vertraagd.

Versiebeheer en jongleren met wijzigingen

Voor het verwerken van deze updates en wijzigingen in de code gebruikt Facebook zijn eigen aangepaste versie van Mercurial. Dat is in plaats van de veel gebruikte Git, die blijkbaar niet zo goed schaalde voor de doeleinden van het bedrijf. Phabricator is het equivalent van GitHub en gebruikt veel plug-ins om de workflow te stroomlijnen en soms gewoon om dingen een beetje leuker te maken (Facebook houdt blijkbaar van memes).

Voor de niet-programmeurs is Mercurial, net als Git, een versiebeheersysteem. Het stelt grote aantallen mensen in staat om aan een enkel stuk software te werken en wijzigingen en fixes aan te brengen zonder de hoofdversie van de app, de "master branch", in gevaar te brengen. Deze tools helpen codeconflicten te voorkomen en experimenteren mogelijk te maken. Pas als een wijziging grondig is goedgekeurd op een testtak, wordt deze vervolgens vastgelegd voor de master.

Stel je voor dat een slechte programmeur een typefout maakte die de hele code verbrak en er maar één versie was! Dat zou voor iedereen een slechte dag zijn.

Tools zoals Mercurial maken het mogelijk om de scrumbenadering relatief eenvoudig te implementeren, waardoor iedereen tegelijkertijd aan specifieke functies en bugs kan werken voordat het allemaal in één grote pot wordt samengevoegd.

Een keer per week wordt een release-kandidaat uit de master verwijderd en gaat deze door de testfase. Codeerders die de hele week aan bugfixes of nieuwe functies hebben gewerkt, kruisen nu hun hoop in de hoop dat hun werk de nieuwe update haalt.

Eventuele fixes of wijzigingen die door teamleden worden aangebracht, moeten door de verantwoordelijken worden "geplukt" voor opname in de nieuwe vestiging. Naar verluidt gebruiken ze steekpenningen in de vorm van chocolaatjes en alcohol die aan de besluitvormers zijn geschonken.

Om te compileren, gebruikt Facebook een ander hulpmiddel genaamd Buck. Deze enkele build-tool kan alles bouwen als het gaat om het verpakken van de app. Er zijn geen afzonderlijke opties zoals Gradle of Ant nodig wanneer u zich op verschillende platforms richt.

Op tijd bugs vangen

Omdat iedereen aan verschillende dingen werkt en er regelmatig zoveel updates uitkomen, is het erg belangrijk dat bedrijven ervoor zorgen dat hun software werkt en geen serieuze bugs bevat. Voor het grootste deel heeft Facebook een behoorlijk goede staat van dienst om dingen draaiende te houden.

Daartoe splitst het team softwaretests op in niveaus, die C1, C2 en C3 worden genoemd.

C1 is intern aan het testen en alle werknemers zullen die versie uitvoeren. Tijdens C2 loopt de versie door 2 procent van het grote publiek en is C3 productie. Als er iets echt serieus wordt gevonden, heeft elke werknemer toegang tot een noodstopknop om de productie tot een einde te brengen.

De vrijwilligers die zich aandienen omdat ze de rijen vooruit hielden, heten "boomknuffelaars" (omdat takken), en doen dit bovenop hun reguliere taken.

Op mobiel worden vergelijkbare lagen alfa, bèta en prod genoemd. Alpha betekent een interne test, die alle medewerkers zullen uitvoeren. Het proces van elk bedrijf dat zijn eigen producten op deze manier gebruikt, wordt 'hondenvoer' genoemd - van 'uw eigen hondenvoer eten'.

Testers hebben ook enkele unieke en interessante tools tot hun beschikking om snel bugs te melden. Een daarvan is "Rageshake", waarbij eenvoudigweg het apparaat in frustratie schudden een bugrapport zal activeren, zoals bij Google Maps.

Testers hebben ook enkele unieke en interessante tools tot hun beschikking om snel bugs te melden

Tijdens alpha - wat eigenlijk verwijst naar interne tests - maakt Facebook ook gebruik van automatische tests om de app uit te voeren. Een recent verworven stuk software genaamd "Sapienz" werkt bijvoorbeeld in wezen door op elke knop te klikken en elke functie in een willekeurige aanval te gebruiken totdat deze een crash veroorzaakt. Vervolgens worden de stacktracering vastgelegd, de actie vastgelegd en gerapporteerd.

De bèta-app (de door het grote publiek geteste versie) doorloopt een kleine subsectie (~ 2 procent) van het grote publiek. Dit kleine fragment ontvangt de update van tevoren en geeft Facebook realistische feedback. Als alles goed lijkt, gaat de update naar de hele bevolking en begint het proces opnieuw.

Krachtige tools voor automatisering en krachtvermenigvuldiging

Om dit hele proces zo snel en zo soepel mogelijk te houden, gebruikt Facebook een groot aantal verschillende tools. We hebben al gezien hoe het bedrijf Phabricator en Sapienz gebruikt, maar het heeft andere tools en plug-ins voor andere fasen.

Een tool genaamd Picknic verzamelt alle pull-aanvragen (wijzigingen die werknemers hebben aangebracht) op één plek voor snelle en eenvoudige beoordeling.

Wanneer testen een fout oplevert, informeert een bot genaamd Nagbot de verantwoordelijken en prikt hen voorzichtig om het werk gedaan te krijgen. Het gebruik van een rudimentaire AI om dit proces af te handelen zorgt er niet alleen voor dat het werk gedaan wordt, maar stelt de manager ook in staat om de "slechterik" te vermijden door constant te zeuren!

wanneer het testen een fout oplevert voor iemand om op te lossen, informeert een bot genaamd Nagbot de verantwoordelijken en prikt hen voorzichtig om het werk gedaan te krijgen

Crashbot is een andere bot die verantwoordelijk is voor het melden van die fouten wanneer deze zich voordoen, en verdient de voorkeur boven statistieken van de Google Console, omdat het in realtime rapporteert. Crashbot zal een probleem signaleren zodra de problemen een "acceptabele crashdrempel" overschrijden. Dit kan te wijten zijn aan het aantal mensen dat de fout ervaart, of het aantal keren dat een enkele gebruiker dezelfde fout is tegengekomen. Hoe dan ook, Facebook heeft ook een meetwaarde die het aantal trieste gebruikers laat zien.

Voor interne communicatie gebruikt Facebook iets dat Workplace wordt genoemd. Dit is in feite een versie van Facebook bedoeld voor bedrijven, die een handige manier is om informatie over leden van het team te krijgen en snel te communiceren met degenen die aan de andere kant van het uitgestrekte kantoor zitten. Facebook verkoopt deze software ook aan derden.

Facebook gaat natuurlijk geen tijd verspillen met het uploaden van elke nieuwe versie van zijn apps naar de Play Store, App Store, Amazon en al het andere. Er is ook een app voor die de mobiele duwtrein wordt genoemd.

Slotgedachten

Een app zoals Facebook up-to-date houden is een enorme onderneming en het bedrijf moet gebruikers nog steeds overtuigen om die updates daadwerkelijk te installeren. Dit is met name moeilijk in landen waar connectiviteit niet is gegarandeerd. In Canada gebruikt slechts één procent van de gebruikers nog steeds een versie van Facebook van meer dan een jaar oud. In Ethiopië ligt dat aantal dichter bij 50 procent!

Het team van Facebook werkt duidelijk heel hard en gebruikt heel veel tools en processen om alles zo gestroomlijnd mogelijk te houden. Uiteindelijk wil het ontwikkelteam zich houden aan vijf heersende principes:

  • Houd de master schoon.
  • Heb één team met expertise in release engineering.
  • Release vaak op tijd.
  • Dogfood producten.
  • Wees vriendelijk voor gebruikers.

Het klinkt eenvoudig, maar zoals je kunt zien zijn er veel draaiende platen bij betrokken. Zelfs het onderhouden van alle tools die in het proces worden gebruikt, is een project op zich!

Facebook heeft op haar beurt een vriendelijke en luchtige sfeer op kantoor in Londen. Het team wisselt GIF's en memes uit via plug-ins, ze noemen kamers op basis van 'dingen die de Britten haten' en Shakespearese woordspelingen, en ze zijn erg trots op hun werk. Bij Facebook werken ze hard en spelen ze hard, en het lijkt erop dat het systeem grotendeels werkt.

De volgende keer dat een nieuwe update voor een van uw grotere apps wordt uitgerold, moet u goed nadenken over al het werk en de organisatie die ervoor nodig was.

Xiaomi haalde het nieuw toen het vorig jaar een limiet van vijf procent op de wint aankondigde (hoewel dat met een paar kanttekeningen komt). Je zou denken dat het bedrijf hierdoor niet veel wint zou ...

Conumenten met een trikt budget kunnen niet verkeerd gaan met de Redmi-erie, met de Redmi 6 en 6A die een boeiende propoitie bieden voor ongeveer $ 95 tot $ 130. Xiaomi verpilt echter geen tijd aan ee...

Opgedaan Vandaag