Wewnętrzne spojrzenie na proces tworzenia aplikacji mobilnych na Facebooku

Autor: Laura McKinney
Data Utworzenia: 4 Lang L: none (month-011) 2021
Data Aktualizacji: 1 Lipiec 2024
Anonim
Od zera do miliona pobrań. Proces tworzenia aplikacji mobilnej | Krzysztof Wojewodzic
Wideo: Od zera do miliona pobrań. Proces tworzenia aplikacji mobilnej | Krzysztof Wojewodzic

Zawartość


Niedawno odwiedziłem siedzibę Facebooka w Londynie, aby dowiedzieć się o procesie opracowywania i utrzymywania aplikacji mobilnej na Facebooku. Tutaj dzieje się znacznie więcej, niż się wydaje: niektóre aplikacje Facebooka są obsługiwane w całości, takie jak WhatsApp na komputery stacjonarne i biznesowa aplikacja Workplace.

Biura są dokładnie takie, jak można się spodziewać po wizerunku Facebooka, choć może nie do poziomu nadwyżki w sieci społecznościowej. To miejsce, w którym wykonuje się poważną pracę, ale mimo to panuje modna, dziwaczna i zrelaksowana atmosfera. Pracownicy mogą przenosić laptopy do pracy, gdziekolwiek zechcą, jest drukarnia do robienia plakatów (tylko dlatego), zlecone dzieła sztuki na kilku ścianach i gigantyczny Żółw Ninja - nigdy nie otrzymałem odpowiedzi na pytanie, dlaczego.

Aha, a jedzenie jest niesamowite. Byłem tam podczas chińskiego Nowego Roku i miałem wielokrotność boczki wieprzowe. Dobre czasy.


Jednak nie byłem tam, aby cieszyć się wystrojem i kuchnią, byłem tam, aby dowiedzieć się o Facebooku na telefonie komórkowym. Mówiąc ściślej: jak u diabła zajmujesz się utrzymaniem tak dużego i ambitnego projektu? Backend na Facebooku obsługuje ponad dwa miliardy ludzi, a sama aplikacja na Androida wypuszcza co tydzień nową wersję.

Jak zarządzasz aplikacją z tak ambitną liczbą funkcji

Rozmawiałem z Talem Kellnerem za pośrednictwem własnego systemu teleobecności na Facebooku. Tal jest kierownikiem programu technicznego, odpowiedzialnym za zespół inżynierów ds. Wydań z siedzibą w biurze inżynieryjnym w Tel Awiwie. Z przyjemnością podzieliła się drobiazgami.

Tal i jej zespół po raz pierwszy przesłali wersję Lite aplikacji Facebook na iOS


To, czego się nauczyłem, było dość fascynujące zarówno z perspektywy programisty, jak i jako użytkownika. Oto, co odkryłem.

Zarządzanie projektami na Facebooku - Dlaczego Scrum> Wodospad

Patrząc na każdy duży projekt, należy wziąć pod uwagę podejście do zarządzania projektami. Jednym z takich przykładów jest zarządzanie projektem „wodospad”. Jest to sekwencyjne i liniowe podejście, w którym kolejno pracujesz nad określoną fazą, od przejścia od ideacji do implementacji do testowania do wydania.

firmy takie jak Facebook wybierają zamiast tego bardziej nowoczesne podejście do zarządzania projektami o nazwie „scrum”

Co najważniejsze, w tym podejściu nie zaczynasz następnej fazy, dopóki poprzednia faza nie zostanie zakończona. System wywodzi się z produkcji, w której niektóre etapy często polegają na poprzednim etapie: musisz zbudować cegły, zanim zbudujesz ścianę!

Podejście do oprogramowania jest restrykcyjne. W najgorszym przypadku aktualizacja może potrwać tak długo, że jest już nieaktualna, zanim się pojawi. Duke Nukem na zawsze ktoś?

Dlatego niektóre firmy produkujące oprogramowanie wybierają zamiast tego bardziej nowoczesne podejście zwane „scrum”, które jest zwinną metodologią. Ta metoda nadaje priorytet pracy, która ma największe znaczenie, i dzieli ją na części modułowe. Opiera się na komunikacji między działami wewnętrznymi, a nawet poszczególnymi agentami pracującymi samotnie na własnych odcinkach kodu.

Teoretycznie wynik jest taki, że każdy może cały czas pracować nad tym, co jest dla niego najważniejsze, i że każda inna część firmy wie, co robi. Każdy inżynier ma wysoki poziom własności i ostatecznie każdy jest odpowiedzialny za swoją pracę. To nie tylko sprawia, że ​​firma jest bardziej elastyczna, ale także, mam nadzieję, zwiększa satysfakcję z pracy. Nikt nie jest tylko trybikiem w maszynie.

każdy z dowolnego miejsca w organizacji może zaproponować pomysł na nową funkcję

Byłem pod wielkim wrażeniem, gdy usłyszałem, że każdy z dowolnego miejsca w organizacji może zasugerować pomysł na nową funkcję, a następnie zająć się tym, jeśli otrzyma zgodę. Czasami może nawet rozwinąć się w osobną aplikację! Facebook jest znacznie bardziej projektem opartym na współpracy niż wymuszona z góry na dół wizja kilku osób (lub jednej osoby), którą często przedstawia się jako.

Dzięki temu Facebook może wdrożyć niezwykle szybki cykl programowania, umożliwiając co tydzień nową aktualizację mobilną i tysiące zatwierdzeń (proponowane zmiany kodu) między nimi. Jeśli uważasz, że to imponujące, wersja internetowa (której zaplecze obsługuje również aplikację mobilną) aktualizuje się co dwie do trzech godzin!

Facebook ogólnie bardzo wspiera nowe pomysły i startupy. Ma nawet inicjatywę LDN LAB poświęconą wspieraniu nowych pomysłów i firm.

Znalezienie równowagi

Zaczerpnięte z własnych slajdów Tal

Oczywiście nadal będzie limit, jeśli chodzi o to, co firma może obsłużyć. Przy tak dużej ilości kodu zawsze jest miejsce na ulepszenia, ale musi nadejść czas, kiedy wersja zostanie uznana za „wystarczająco dobrą”.

Właśnie wtedy wchodzi w grę „złoty trójkąt”. Trzy punkty tego trójkąta reprezentują cechy, jakość i czas. Każda firma ma tutaj wybór: jeśli chodzi o czas kryzysu, czy priorytetem są nowe funkcje kosztem nieco dłuższego czasu? Czy pozwalasz, aby drobny istniejący błąd prześlizgnął się przez sieć, jeśli oznacza to, że możesz dodać więcej funkcji? Kiedy nie możesz zrobić wszystkiego, musisz ustalić priorytety.

Na Facebooku priorytetami są jakość i czas. Jeśli aktualizacja pozostanie poza przydzielonym oknem, funkcja prawdopodobnie zostanie wypchnięta; zamiast wycinania rogu lub opóźniania aktualizacji.

Kontrola wersji i zmiany żonglerki

Do obsługi tych aktualizacji i zmian w kodzie Facebook używa własnej zmodyfikowanej wersji Mercurial. To zamiast bardzo powszechnie używanego Gita, który najwyraźniej nie skalował się również do celów firmy. Phabricator jest odpowiednikiem GitHub i wykorzystuje wiele wtyczek, aby usprawnić przepływ pracy, a czasem po prostu sprawić, by było trochę więcej zabawy (Facebook lubi swoje memy).

Dla nie-programistów, Mercurial, podobnie jak Git, jest systemem kontroli wersji. Pozwala dużej liczbie osób pracować na jednym oprogramowaniu oraz wprowadzać zmiany i poprawki bez narażania głównej wersji aplikacji, zwanej „gałęzią główną”. Narzędzia te pomagają zapobiegać konfliktom kodów i pozwalają na eksperymentowanie. Dopiero po dokładnym zatwierdzeniu zmiany w gałęzi testowej, zostanie ona następnie zatwierdzona w systemie głównym.

Wyobraź sobie, że jakiś słaby programista popełnił literówkę, która złamała cały kod i była tylko jedna wersja! To byłby zły dzień dla wszystkich.

Narzędzia takie jak Mercurial pozwalają na względnie łatwą implementację podejścia scrum, pozwalając wszystkim pracować jednocześnie nad konkretnymi funkcjami i błędami przed połączeniem ich w jedną dużą pulę.

Raz w tygodniu kandydat do wydania zostanie odcięty od mistrza, a następnie przejdzie on przez fazę testowania. Koderzy, którzy spędzili cały tydzień pracując nad poprawkami błędów lub nowymi funkcjami, będą w tym momencie kciuki, mając nadzieję, że ich praca znajdzie się w nowej aktualizacji.

Wszelkie poprawki lub zmiany wprowadzone w ostatniej chwili przez członków zespołu będą wymagały „wybrania przez wiarę” w celu włączenia ich do nowego oddziału przez osoby odpowiedzialne. Podobno wiadomo, że używają łapówek w postaci czekoladek i alkoholu obdarowywanych decydentów.

Do kompilacji Facebook używa innego narzędzia o nazwie Buck. To pojedyncze narzędzie do budowania może zbudować wszystko, jeśli chodzi o pakowanie aplikacji. Nie trzeba osobnych opcji, takich jak Gradle lub Ant, podczas kierowania na różne platformy.

Łapanie błędów w czasie

Ponieważ wszyscy pracują nad różnymi rzeczami, a tak wiele aktualizacji jest regularnie publikowanych, bardzo ważne jest, aby firmy upewniły się, że ich oprogramowanie działa i nie ma żadnych poważnych błędów. W przeważającej części Facebook ma całkiem niezłe osiągnięcia.

W tym celu zespół dzieli testowanie oprogramowania na poziomy, zwane C1, C2 i C3.

C1 to testy wewnętrzne i wszyscy pracownicy będą uruchamiać tę wersję. Podczas C2 wersja przechodzi przez 2 procent ogółu społeczeństwa, a C3 zajmuje się produkcją. W przypadku znalezienia czegoś naprawdę poważnego każdy pracownik będzie mógł uzyskać dostęp do przycisku zatrzymania awaryjnego, aby zatrzymać produkcję.

Wolontariusze, którzy postarali się utrzymać postępy, nazywają się „huggersami drzew” (ponieważ gałęzie) i robią to oprócz swoich regularnych zadań.

Na urządzeniach mobilnych podobne poziomy nazywane są alfa, beta i prod. Alpha oznacza test wewnętrzny, który przeprowadzą wszyscy pracownicy. Proces każdej firmy wykorzystującej w ten sposób własne produkty nazywa się „karmą dla psów” - od „jedzenia własnej karmy dla psów”.

Testerzy dysponują również unikalnymi i interesującymi narzędziami do szybkiego zgłaszania błędów. Jednym z nich jest „Rageshake”, w którym po prostu frustrujące potrząsanie urządzeniem umożliwi zgłoszenie błędu, podobnie jak w Mapach Google.

Testerzy dysponują również unikalnymi i interesującymi narzędziami do szybkiego zgłaszania błędów

Podczas alfa - co skutecznie odnosi się do wszelkich testów wewnętrznych - Facebook używa również testów automatycznych w celu uruchomienia aplikacji. Na przykład jedno niedawno nabyte oprogramowanie o nazwie „Sapienz” działa zasadniczo poprzez kliknięcie każdego przycisku i użycie każdej funkcji w losowym ataku, dopóki nie spowoduje awarii. Następnie rejestruje ślad stosu, rejestruje akcję i raportuje z powrotem.

Aplikacja beta (wersja przetestowana przez ogół społeczeństwa) przechodzi przez niewielki podsekcja (~ 2 procent) ogółu społeczeństwa. Ten niewielki fragment otrzyma aktualizację z wyprzedzeniem, zapewniając Facebookowi informacje zwrotne w prawdziwym świecie. Jeśli wszystko wydaje się dobre, aktualizacja trafia do całej populacji i proces rozpoczyna się od nowa.

Potężne narzędzia do automatyzacji i mnożenia siły

Aby cały ten proces był możliwie szybki i płynny, Facebook używa wielu różnych narzędzi. Widzieliśmy już, jak firma korzysta z Phabricatora i Sapienza, ale ma też inne narzędzia i wtyczki do innych etapów.

Narzędzie o nazwie Picknic gromadzi wszystkie żądania ściągania (zmiany wprowadzone przez pracowników) w jednym miejscu w celu szybkiego i łatwego przeglądu.

Podczas testowania pojawia się błąd, bot o nazwie Nagbot informuje osoby odpowiedzialne i delikatnie nakłania ich do wykonania pracy. Wykorzystanie podstawowej sztucznej inteligencji do obsługi tego procesu nie tylko zapewnia wykonanie pracy, ale także pozwala menedżerowi uniknąć bycia „złym facetem” poprzez ciągłe dokuczanie!

gdy testowanie powoduje błąd, który należy naprawić, bot o nazwie Nagbot informuje osoby odpowiedzialne i delikatnie nakłania ich do wykonania pracy

Crashbot jest kolejnym botem odpowiedzialnym za zgłaszanie tych błędów w miarę ich występowania i jest lepszy niż dane z Konsoli Google, ponieważ raportuje w czasie rzeczywistym. Crashbot zgłosi problem, gdy problemy przekroczą „akceptowalny próg awarii”. Może to wynikać z liczby osób napotykających błąd lub liczby przypadków, w których pojedynczy użytkownik napotkał ten sam błąd. Tak czy inaczej, Facebook będzie miał również wskaźnik pokazujący liczbę smutnych użytkowników.

Do komunikacji wewnętrznej Facebook używa czegoś o nazwie Miejsce pracy. Jest to w rzeczywistości wersja Facebooka przeznaczona dla firm, która zapewnia użyteczny sposób na uzyskanie informacji o członkach zespołu i szybką komunikację z osobami siedzącymi po drugiej stronie rozległego biura. Facebook sprzedaje również to oprogramowanie stronom trzecim.

Oczywiście Facebook nie będzie tracić czasu na przesyłanie każdej nowej wersji swoich aplikacji do Play Store, App Store, Amazon i całej reszty. Istnieje również aplikacja o nazwie Mobile Push Train.

Zamykanie myśli

Aktualizowanie aplikacji takich jak Facebook to ogromne przedsięwzięcie, a firma wciąż musi przekonać użytkowników do zainstalowania tych aktualizacji. Jest to szczególnie trudne w krajach, w których łączność nie jest gwarantowana. W Kanadzie tylko jeden procent użytkowników nadal obsługuje wersję Facebooka ponad rok. W Etiopii liczba ta jest bliska 50 procent!

Zespół na Facebooku wyraźnie pracuje bardzo ciężko i używa mnóstwa narzędzi i procesów, aby wszystko było jak najbardziej usprawnione. Ostatecznie zespół programistów dąży do przestrzegania pięciu zasad rządzących:

  • Utrzymuj mistrza w czystości.
  • Posiadaj jeden zespół z doświadczeniem w inżynierii wydań.
  • Zwolnij często.
  • Produkty dla psów.
  • Bądź miły dla użytkowników.

Brzmi prosto, ale jak widać, wymaga wielu obracających się talerzy. Nawet utrzymanie wszystkich narzędzi używanych w tym procesie to projekt sam w sobie!

Ze swojej strony Facebook utrzymuje przyjazną i beztroską atmosferę w biurze w Londynie. Zespół wymienia GIF-y i memy za pomocą wtyczek, nazywają pokoje na podstawie „rzeczy, których Brytyjczycy nienawidzą” i gra słów Szekspira, i są bardzo dumni ze swojej pracy. Na Facebooku ciężko pracują i ciężko się bawią, i wydaje się, że w większości system działa.

Następnym razem, gdy pojawi się nowa aktualizacja dla jednej z twoich większych aplikacji, poświęć chwilę na zastanowienie się nad całą pracą i organizacją potrzebną do jej uzyskania.

Rzeczywitość wirtualna i miezana (XR) jet obecnie w dziwnym miejcu. Itnieją treści konumenckie i przęt, ale produkty te pozotają mocno w nizy, która jezcze nie zykała popularności. Qualcomm uważa...

W zezłym tygodniu Google twierdził, że obliczenia kwantowe wrezcie przekroczył najmocniejzy uperkomputer na ziemi. Może wykonać obliczenia w ciągu trzech minut i 20 ekund, które zajęłyby dziiejze...

Pamiętaj, Aby Przeczytać