Вътрешен поглед върху процеса на разработване на мобилни приложения на Facebook

Автор: Laura McKinney
Дата На Създаване: 4 Lang L: none (month-011) 2021
Дата На Актуализиране: 1 Юли 2024
Anonim
Out of Band Server Management:  A Look at HP iLO
Видео: Out of Band Server Management: A Look at HP iLO

Съдържание


Наскоро посетих централата на Facebook в Лондон, за да науча за процеса на разработване и поддържане на мобилното му Facebook приложение. Тук се случва много повече, отколкото вероятно осъзнавате: някои приложения на Facebook се обработват тук изцяло, като WhatsApp за десктоп и приложението Workplace, ориентирано към бизнеса.

Офисите са точно това, което бихте очаквали от изображението на Facebook, макар че може би не е съвсем до нивата на Социалната мрежа. Това е място, където се работи сериозно, но въпреки това има модерна, причудлива и спокойна атмосфера. Служителите могат да носят лаптопи за работа, където и да решат, има печатница за изработка на плакати (само защото), поръчани произведения на изкуството на няколко стени и гигантска костенурка Нинджа - никога не съм получил отговор защо.

О, и храната е невероятна. Бях там през китайската Нова година и имах многократни свински коремчета. Добри времена.


Обаче не бях там, за да се наслаждавам на декора и кухнята, бях там, за да науча за Facebook на мобилни устройства. По-конкретно: как на Земята дори се захващате за поддържането на такъв мащабен и амбициозен проект? Входът във Facebook обслужва над два милиарда души, а самото приложение за Android вижда нова версия, излизаща всяка седмица.

Как управлявате приложение с толкова амбициозен брой функции

Разговарях с Тал Келнър чрез собствената система за телеприсъствие на Facebook. Тал е технически ръководител на програмата, отговарящ за екипа на Release Engineering, базиран в инженерния офис в Тел Авив. Тя беше повече от щастлива да сподели мрачните детайли.

Тал и нейният екип качват за първи път своята Lite версия на Facebook в iOS

Това, което научих, беше доста завладяващо и от гледна точка на разработчиците, и като потребител. Ето какво разбрах.


Управление на проекти във Facebook - Защо Scrum> Водопад

Когато разглеждате всеки голям проект, трябва да вземете подхода си за управление на проекти. Един такъв пример се нарича управление на проекти за водопад. Това е последователен и линеен подход, при който работите върху конкретна фаза от своя страна, като преминаване от идея към изпълнение до тестване до освобождаване.

компании като Facebook избират вместо това по-модерен подход за управление на проекти, наречен „scrum“

Важното е, че при този подход не започвате следващата фаза, докато предишната фаза не е завършена. Системата произхожда от производството, където някои етапи често разчитат на предишния етап: трябва да източите тухли, преди да можете да изградите стена!

Що се отнася до софтуера, този подход е ограничителен. В най-лошия случай една актуализация може да отнеме толкова дълго време, че е остаряла от момента на пристигането си. Херцог Нукем Завинаги някой?

По този начин някои софтуерни компании избират вместо това по-модерен подход, наречен „scrum“, който е гъвкава методология. Този метод дава приоритет на работата, която е най-важна и я разчупва на модулни парчета. Разчита на комуникация между вътрешни отдели и дори отделни агенти, работещи самостоятелно в собствените им кодове на кода.

Резултатът на теория е, че всеки може да работи върху най-належащото за тях през цялото време и че всяка друга част от бизнеса знае какво прави. За всеки инженер има високо ниво на собственост и всеки в крайна сметка е отговорен за собствената си работа. Това не само прави компанията по-пъргава, но също така се надява да увеличи удовлетвореността на работното място. Никой не е само зъбчатка в машината.

всеки от всяка точка на организацията може да предложи идея за нова функция

Бях много впечатлен, като чух, че всеки от всяка точка на организацията може да предложи идея за нова функция и след това да се заемем с работата, ако се даде възможност. Понякога това може дори да се превърне в свое отделно приложение! Facebook е много повече проект за съвместна работа, отколкото визия на няколко души (или един човек), на която често се изобразява.

Това позволява на Facebook да реализира изключително бърз цикъл на разработка, което позволява нова актуализация на мобилни устройства всяка седмица и хиляди комисии (предложени промени в кода) между тогава. Ако смятате, че това е впечатляващо, уеб версията (основата на която също обслужва мобилното приложение) се актуализира веднъж на всеки два до три часа!

Facebook като цяло е в голяма подкрепа за новите идеи и стартъпи. Той дори има инициатива, наречена LDN LAB, посветена на подкрепа за нови идеи и бизнес.

Намиране на баланс

Взета от собствените слайдове на Тал

Разбира се, все още винаги има лимит, що се отнася до това, което една компания може да се справи. При този много код винаги има място за подобрение, но трябва да дойде време, когато версията се счита за „достатъчно добра“.

Именно там започва да играе „златният триъгълник“. Трите точки на този триъгълник представляват характеристики, качество и време. Всяка компания има избор да направи тук: когато дойде време за разбиване, давате ли приоритет на новите функции за сметка на това да отнемете малко повече време? Позволявате ли на малка съществуваща грешка да се плъзне през мрежата, ако това означава, че можете да добавите още функции? Когато не можете да направите всичко, сте принудени да давате приоритет.

Във Facebook приоритетите са качество и време. Ако актуализация попадне зад определения прозорец, една функция вероятно ще бъде изтласкана назад; вместо да бъде отрязан ъгъл или да се забави актуализацията.

Контрол на версиите и промени в жонглирането

За да обработва тези актуализации и промени в кода, Facebook използва своя собствена модифицирана версия на Mercurial. Това е вместо широко използвания Git, който очевидно не е имал мащаб и за целите на компанията. Phabricator е еквивалент на GitHub и използва много плъгини, за да помогне за оптимизиране на работния процес, а понякога и просто, за да направи нещата малко по-забавни (Facebook явно харесва мемовете си).

За непрограмистите там, Mercurial, подобно на Git, е система за контрол на версиите. Тя позволява на голям брой хора да работят върху един софтуер и да правят промени и поправки, без да застрашават основната версия на приложението, наречена „главен клон“. Тези инструменти помагат за предотвратяване на конфликтите в кода и дават възможност за експериментиране. Само след като пробата бъде напълно одобрена в тестовия клон, тя ще бъде ангажирана с капитана.

Представете си, ако някой лош програмист направи грешка, която наруши целия код и имаше само една версия! Това би бил лош ден за всички.

Инструменти като Mercurial позволяват сравнително лесно да се приложи подхода на scrum, като позволяват на всеки да работи по конкретни функции и бъгове едновременно, преди да го обединят всички заедно в един голям съд.

Веднъж седмично кандидат за освобождаване ще бъде отрязан от главния и това ще премине през фазата на тестване. Кодерите, които са прекарали цяла седмица в работа за отстраняване на грешки или нови функции, в този момент ще кръстосват пръстите си, надявайки се, че работата им ще го направи в новата актуализация.

Всяка поправка в последния момент или промени, направени от членовете на екипа, ще изискват да бъдат „избрани череши“ за включване в новия клон от отговорните. Известно е, че е известно, че използват подкупи под формата на шоколадови бонбони и алкохол, надарени на лицата, вземащи решения.

За да компилира, Facebook използва друг инструмент, наречен Buck. Този единствен инструмент за изграждане може да изгради всичко, що се отнася до опаковането на приложението. При насочване към различни платформи няма нужда от отделни опции като Gradle или Ant.

Снимайте грешки навреме

Тъй като всички работят по различни неща и толкова много актуализации излизат редовно, много е важно компаниите да се уверят, че софтуерът им работи и няма сериозни грешки. В по-голямата си част Facebook има доста добър опит в поддържането на нещата.

За тази цел екипът разделя тестване на софтуер на нива, наричани C1, C2 и C3.

C1 е вътрешно тестване и всички служители ще изпълняват тази версия. По време на C2, версията преминава през 2 процента от широката публика, а C3 е производство. Ако бъде намерено нещо наистина сериозно, всеки служител ще има достъп до бутон за аварийно спиране, за да доведе до производството на мелене.

Доброволците, които се стремят да поддържат напредването на нивата, идват с наименованието „дървогласници“ (защото клоните) и правят това на върха на редовната си работа.

На мобилни устройства подобни нива се наричат ​​алфа, бета и прод. Алфа означава вътрешен тест, който всички служители ще проведат. Процесът на всяка компания, използваща свои собствени продукти по този начин, се нарича „dogfooding“ - от „яде собствена храна за кучета“.

Тестерите също разполагат с някои уникални и интересни инструменти за бързо съобщаване на грешки. Единият е „Rageshake“, където просто разклащане на устройството в безсилие ще даде възможност за доклад за грешки, например с Google Maps.

Тестерите също разполагат с някои уникални и интересни инструменти за бързо съобщаване на грешки

По време на алфа - което ефективно се отнася до всяко вътрешно тестване - Facebook също използва автоматично тестване, за да стартира приложението. Например, едно наскоро придобито парче софтуер, наречен „Sapienz“, по същество работи, като щракне върху всеки бутон и използва всяка функция при произволно нападение, докато не задейства срив. След това регистрира следата на стека, записва действието и отчита обратно.

Бета приложението (тестваната от широката публика версия) преминава през малък подсекция (~ 2 процента) от широката публика. Този малък фрагмент ще получи актуализацията преди време, като предоставя на Facebook обратна връзка в реалния свят. Ако всичко изглежда добре, актуализацията излиза на цялото население и процесът започва наново.

Мощни инструменти за автоматизация и умножение на сила

За да поддържа целия този процес възможно най-бърз и гладък, Facebook използва голям брой различни инструменти. Вече видяхме как компанията използва Phabricator и Sapienz, но има други инструменти и плъгини за други етапи.

Инструмент, наречен Picknic, събира всички заявки за изтегляне (промени, които са направили служителите) на едно място за бърз и лесен преглед.

Когато тестването хвърля грешка, бот, наречен Nagbot, информира отговорните лица и внимателно ги подтиква да свършат работата. Използването на рудиментарен AI за справяне с този процес не само гарантира, че работата се свършва, но също така позволява на мениджъра да избягва да бъде „лошият човек“, като постоянно заяжда!

когато тестване хвърля грешка за някой, който да поправи, бот, наречен Nagbot, информира отговорните лица и внимателно ги подтиква да свършат работата

Crashbot е друг бот, отговорен за съобщаването на тези грешки, тъй като те се случват и е за предпочитане пред показателите от конзолата на Google, тъй като отчита в реално време. Crashbot ще подаде сигнал за проблем, след като проблемите надвишат „приемливия праг на срив“. Това може да се дължи на броя на хората, които са претърпели грешката, или на броя пъти, когато един потребител е срещнал една и съща грешка. Така или иначе Facebook ще има и показател, показващ броя на тъжните потребители.

За вътрешна комуникация Facebook използва нещо, наречено Workplace. Това на практика е версия на Facebook, предназначена за бизнеса, която предоставя полезен начин за получаване на информация за членовете на екипа и бърза комуникация с тези, които седят от другата страна на разпръснатия офис. Facebook също продава този софтуер на трети страни.

Разбира се, Facebook няма да губи време за качване на всяка нова версия на приложенията си в Play Store, App Store, Amazon и всички останали. Има и приложение за това, наречено Train Push Train.

Затварящи мисли

Актуализирането на приложение като Facebook е огромно начинание и компанията все още трябва да убеди потребителите да инсталират действително тези актуализации. Това е особено трудно в страни, където свързаността не е гарантирана. В Канада само един процент от потребителите все още управляват версия на Facebook над една година. В Етиопия този брой е по-близо до 50 процента!

Екипът във Facebook очевидно работи много усилено и използва множество инструменти и процеси, за да поддържа всичко възможно най-рационално. В края на деня екипът за развитие се стреми да спазва пет управляващи принципа:

  • Пазете господаря чист.
  • Имайте един екип с експертиза в областта на инженеринга за освобождаване.
  • Пускайте навреме често.
  • Продукти за кучешка храна.
  • Бъдете мили към потребителите.

Звучи просто, но както виждате, включва много въртящи се плочи. Дори поддържането на всички инструменти, използвани в процеса, сам по себе си е проект!

От своя страна, Facebook поддържа приятелска и лекомислена атмосфера в офиса в Лондон. Екипът обменя GIF и мемове чрез плъгини, те назовават стаи въз основа на „неща, които британците мразят“ и шекспировите каламбури, и те се гордеят с работата си. Във Facebook работят усилено и играят усилено и изглежда, че в по-голямата си част системата работи.

Следващия път, когато се появи нова актуализация за едно от по-големите ви приложения, спестете мисъл за цялата работа и организация, необходима, за да я получите.

Facebook стартира днес F8 2019, годишната си конференция за програмисти. По време на основния адрес компанията разкри няколко нови функции, идващи във Facebook Meenger, едно от най-популярните приложе...

Airtel влезе в арената на Amazon, като пусна конкурент на Fire TV tick, наречен Airtel Xtream tick. Компанията също обяви нова Android TV кутия, наречена кутия Airtel Xtream 4K Hybrid, наследник на по...

Очарователни Статии