Ang isang panloob na pagtingin sa proseso ng pag-unlad ng mobile app ng Facebook

May -Akda: Laura McKinney
Petsa Ng Paglikha: 4 Abril 2021
I -Update Ang Petsa: 1 Hulyo 2024
Anonim
15 Eco Friendly and Sustainable Houses | Green Living
Video.: 15 Eco Friendly and Sustainable Houses | Green Living

Nilalaman


Kamakailan lamang, binisita ko ang Punong-himpilan ng Facebook sa London upang malaman ang tungkol sa proseso ng pagbuo at pagpapanatili ng mobile na Facebook app. Marami pa ang napupunta dito kaysa sa malamang na napagtanto mo: ang ilan sa mga app ng Facebook ay hawakan dito sa kabuuan, tulad ng WhatsApp para sa desktop at ang app na nakatuon sa negosyo na lugar na pinagtatrabahuhan.

Ang mga tanggapan lamang ang iyong inaasahan mula sa imahe ng Facebook, kahit na marahil ay hindi masyadong sa antas ng Mga Social Network na labis. Ito ay isang lugar kung saan nagagawa ang malubhang trabaho, ngunit may isang naka-istilong, quirky, at nakakarelaks na kapaligiran. Ang mga empleyado ay maaaring magdala ng mga laptop upang magtrabaho saanman ang kanilang pipiliin, mayroong isang silid sa pag-print para sa paggawa ng mga poster (dahil lang), inatasan na likhang sining sa maraming mga pader, at isang higanteng Ninja Turtle - Hindi ako nakakuha ng sagot kung bakit.

Oh, at ang pagkain ay hindi kapani-paniwala. Nasa loob ako noong Chinese New Year at mayroon ako maramihang mga bellies ng baboy. Magandang beses.


Gayunpaman, wala ako doon upang tamasahin ang dekorasyon at lutuin, naroon ako upang malaman ang tungkol sa Facebook sa mobile. Mas partikular: kung paano sa Earth mo kahit na tungkol sa pagpapanatili ng isang proyekto na ito malaki at mapaghangad? Naghahain ang Facebook backend ng higit sa dalawang bilyong tao, at ang Android app lamang ang nakakakita ng isang bagong bersyon na inilabas bawat linggo.

Paano mo pinamamahalaan ang isang app na may tulad na isang mapaghangad na bilang ng mga tampok

Nakipag-usap ako kay Tal Kellner sa pamamagitan ng sariling sistema ng telepresence ng Facebook. Si Tal ay isang technical program manager, na namamahala sa Release Engineering Team na nakabase sa opisina ng engineering ng Tel Aviv. Siya ay higit pa sa masaya na ibahagi ang mga nakakatakot na detalye.


Si Tal at ang kanyang koponan ay nag-upload ng kanilang bersyon ng Lite ng Facebook sa iOS sa kauna-unahang pagkakataon

Ang natutunan ko ay medyo kamangha-manghang mula sa isang pananaw sa developer at bilang isang gumagamit. Narito ang nalaman ko.

Pamamahala ng proyekto sa Facebook - Bakit Kutsilyo> Waterfall

Kapag tinitingnan ang anumang malaking proyekto, kailangan mong isaalang-alang ang iyong diskarte sa pamamahala ng proyekto. Isa sa mga halimbawa na ito ay tinatawag na "waterfall" management management. Ito ay isang sunud-sunod at linear na diskarte kung saan nagtatrabaho ka sa isang tukoy na yugto naman, tulad ng pagpunta mula sa ideasyon hanggang sa pagpapatupad hanggang sa pagsubok upang palayain.

mga kumpanya tulad ng Facebook opt sa halip para sa isang mas modernong diskarte sa pamamahala ng proyekto na tinatawag na "scrum"

Sa kritikal, sa pamamaraang ito hindi mo sinisimulan ang susunod na yugto hanggang sa matapos ang nakaraang yugto. Ang system ay nagmula sa pagmamanupaktura, kung saan ang ilang mga yugto ay madalas na umaasa sa nakaraang yugto: kailangan mong mapagkukunan ng mga bricks bago ka makagawa ng isang pader!

Pagdating sa software, ang pamamaraang ito ay mahigpit. Sa pinakamasamang kaso, ang pag-update ay maaaring tumagal nang mahabang panahon upang mapalabas, hindi na ginagamit sa oras na dumating. Duke Nukem Magpakailanman?

Kaya, ang ilang mga kumpanya ng software ay pumipili sa halip para sa isang mas modernong diskarte na tinatawag na "scrum," na isang madaling pamamaraan. Ang pamamaraang ito ay pinahahalagahan ang gawa na pinakamahalaga at pinutol ito sa mga modular chunks. Nakasalalay ito sa komunikasyon sa pagitan ng mga panloob na kagawaran at maging ang mga indibidwal na ahente na nagtatrabaho nang nag-iisa sa kanilang sariling mga sulok ng code.

Ang resulta, sa teorya, ay ang lahat ay maaaring gumana sa kung ano ang pinaka-pagpindot para sa kanila sa lahat ng oras, at na ang bawat iba pang bahagi ng negosyo ay alam kung ano ang kanilang ginagawa. Mayroong mataas na antas ng pagmamay-ari para sa bawat inhinyero, at lahat ay may pananagutan sa kanilang sariling gawain. Hindi lamang ito ang gumawa ng mas maliksi na kumpanya, ngunit inaasahan din nito ang pagtaas ng kasiyahan sa lugar ng trabaho. Walang sinumang cog lang sa makina.

sinuman mula sa kahit saan sa loob ng samahan ay maaaring magmungkahi ng isang ideya para sa isang bagong tampok

Napahanga ako nang marinig na ang sinumang nagmula sa kahit saan sa loob ng samahan ay maaaring magmungkahi ng isang ideya para sa isang bagong tampok, at pagkatapos ay makapagtrabaho na kung bibigyan ng pasulong. Minsan maaaring kahit na ito ay umunlad sa sarili nitong hiwalay na app! Ang Facebook ay higit na isang pakikipagtulungan na proyekto kaysa sa itaas na ipinatupad na pangitain ng ilang mga tao (o isang tao) ito ay madalas na inilalarawan bilang.

Pinapayagan nito ang Facebook na ipatupad ang isang napakabilis na ikot ng pag-unlad, na nagpapagana ng isang bagong pag-update ng mobile bawat linggo, at libu-libong mga komite (iminungkahing mga pagbabago sa code) sa pagitan noon. Kung sa tingin mo ay kahanga-hanga, ang bersyon ng web (ang backend na kung saan ay nagsisilbi din sa mobile app) ay nag-update nang isang beses bawat dalawa hanggang tatlong oras!

Ang Facebook ay karaniwang suportado ng mga bagong ideya at startup. Mayroon pa itong inisyatibo na tinatawag na LDN LAB na nakatuon sa pagsuporta sa mga bagong ideya at negosyo.

Paghahanap ng balanse

Kinuha mula sa sariling slide ni Tal

Siyempre, palaging may magiging isang limitasyon pagdating sa kung ano ang mahawakan ng isang kumpanya. Sa maraming code na ito ay laging may silid para sa pagpapabuti, ngunit kailangang dumating sa isang oras kung kailan ang bersyon ay itinuturing na "sapat na mabuti."

Iyon ay kung saan ang "gintong tatsulok" ay nilalaro. Ang tatlong puntos na tatsulok na ito ay kumakatawan sa mga tampok, kalidad, at oras. Ang bawat kumpanya ay may pagpipilian na magawa dito: pagdating sa oras ng pag-crunch, inuunahin mo ba ang mga bagong tampok sa gastos na mas matagal? Pinapayagan mo ba ang isang menor de edad na umiiral na bug na dumulas sa net kung nangangahulugang maaari kang magdagdag ng maraming mga tampok? Kapag hindi mo magawa ang lahat, napipilitan mong unahin.

Sa Facebook, ang mga prayoridad ay kalidad at oras. Kung ang isang pag-update ay bumabagsak sa likod ng inilaang window, ang isang tampok ay marahil ay itulak pabalik; sa halip na isang sulok na pinutol o naantala ang pag-update.

Mga kontrol sa bersyon at pagbabago ng juggling

Para sa paghawak sa mga update na ito at mga pagbabago sa code, gumagamit ang Facebook ng sarili nitong binagong bersyon ng Mercurial. Iyon ay sa halip na malawak na ginagamit na Git, na tila hindi sukat din para sa mga layunin ng kumpanya. Ang Phabricator ay katumbas ng GitHub, at gumagamit ng maraming mga plugin upang matulungan ang streamline ng daloy ng trabaho at kung minsan lamang upang gumawa ng mga bagay na medyo mas masaya (gusto ng Facebook ang mga memes nito).

Para sa mga hindi taga-program doon, ang Mercurial, tulad ng Git, ay isang system control system. Pinapayagan nito ang malalaking bilang ng mga tao na gumana sa isang solong piraso ng software, at gumawa ng mga pagbabago at pag-aayos nang hindi pinipigilan ang pangunahing bersyon ng app, na tinawag na "master branch." Ang mga tool na ito ay makakatulong na maiwasan ang mga salungatan sa code at payagan ang pag-eksperimento. Minsan lamang ang isang pagbabago ay lubusang naaprubahan sa isang sangay ng pagsubok kung gayon ay bibigyan ito ng pangako.

Isipin kung ang ilang mga mahihirap na programista ay gumawa ng isang typo na sinira ang buong code at mayroon lamang isang bersyon! Iyon ay magiging isang masamang araw para sa lahat.

Ginagamit ng mga tool tulad ng Mercurial upang maipatupad ang diskarte sa scrum nang may kadalian na kadalian, hayaan ang bawat isa na gumana sa mga tukoy na tampok at mga bug nang sabay bago isama ang lahat ng ito sa isang malaking palayok.

Minsan sa isang linggo, ang isang kandidato sa pagpapalaya ay i-cut mula sa master at ito ay pagkatapos ay dumaan sa yugto ng pagsubok. Ang mga Coders na gumugol sa buong linggo na nagtatrabaho sa mga pag-aayos ng bug o mga bagong tampok ay sa puntong ito ay tumatawid sa kanilang mga daliri sa pag-asa na ang kanilang trabaho ay ginagawang bagong update.

Ang anumang mga huling pag-aayos o pagbabago na ginawa ng mga miyembro ng koponan ay mangangailangan ng "cherry pick" para sa pagsasama sa bagong sangay ng mga namamahala. Iniulat na, kilala silang gumamit ng suhol sa anyo ng mga tsokolate at alkohol na ipinagkaloob sa mga gumagawa ng desisyon.

Upang makatipon, gumagamit ang Facebook ng isa pang tool na tinatawag na Buck. Ang nag-iisang tool ng build na ito ay maaaring makabuo ng anuman pagdating sa packaging ng app. Hindi na kailangan para sa magkahiwalay na mga pagpipilian tulad ng Gradle o Ant kapag nagta-target ng iba't ibang mga platform.

Nakakahuli ng mga bug sa oras

Sa lahat ng nagtatrabaho sa iba't ibang mga bagay, at napakaraming mga update na regular na lumalabas, napakahalaga na tiyakin ng mga kumpanya na gumagana ang kanilang software at walang mga malubhang bug. Para sa karamihan, ang Facebook ay may isang magandang record ng track ng pagpapanatili ng mga bagay.

Sa puntong iyon, ang koponan ay naghahati ng pagsusuri ng software sa mga tier, na tinukoy bilang C1, C2, at C3.

Ang C1 ay panloob na pagsubok at lahat ng empleyado ay tatakbo sa bersyong iyon. Sa panahon ng C2, ang bersyon ay tumatakbo sa pamamagitan ng 2 porsyento ng pangkalahatang publiko, at ang C3 ay paggawa. Kung may isang bagay na tunay na seryoso na matatagpuan, ang bawat empleyado ay maaaring ma-access ang isang pindutan ng paghinto ng emerhensiya upang dalhin ang produksyon sa isang paggiling.

Ang mga boluntaryo na naglalagay ng kanilang sarili para sa pagpapanatili ng mga pag-unlad ng mga tier ay pinangalanan ang pangalan na "mga hugas ng puno" (dahil mga sanga), at ginagawa ito sa itaas ng kanilang regular na trabaho.

Sa Mobile, ang mga katulad na tier ay tinatawag na alpha, beta, at prod. Ang ibig sabihin ng Alpha ay isang panloob na pagsubok, na tatakbo ang lahat ng mga empleyado. Ang proseso ng anumang kumpanya na gumagamit ng sarili nitong mga produkto sa ganitong paraan ay tinatawag na "dogfooding" - mula sa "pagkain ng iyong sariling pagkain sa aso."

Ang mga pagsubok ay mayroon ding ilang mga natatanging at kagiliw-giliw na mga tool sa kanilang pagtatapon para sa mabilis na pag-uulat ng mga bug. Ang isa ay "Rageshake," kung saan ang pag-iling lamang ng aparato sa pagkabigo ay magbibigay-daan sa isang ulat ng bug, tulad ng sa Google Maps.

Ang mga pagsubok ay mayroon ding ilang mga natatanging at kagiliw-giliw na mga tool sa kanilang pagtatapon para sa mabilis na pag-uulat ng mga bug

Sa panahon ng alpha - na epektibong tumutukoy sa anumang panloob na pagsubok - gumagamit din ang Facebook ng awtomatikong pagsubok upang patakbuhin ang app. Halimbawa, ang isang kamakailang nakuha na piraso ng software na tinatawag na "Sapienz" ay mahalagang gumagana sa pamamagitan ng pag-click sa bawat pindutan at paggamit ng bawat tampok sa isang random na pag-atake hanggang sa ito ay nag-trigger ng isang pag-crash. Pagkatapos ay nai-log ang bakas ng stack, naitala ang pagkilos, at naiulat ang mga ulat.

Ang beta app (ang bersyon na sinubukan ng pangkalahatang publiko) ay dumaan sa isang maliit na subseksyon (~ 2 porsyento) ng pangkalahatang publiko. Ang maliit na snippet na ito ay makakatanggap ng pag-update nang mas maaga, na nagbibigay ng feedback sa Facebook sa tunay na mundo. Kung ang lahat ay tila maganda, ang pag-update ay lumabas sa buong populasyon, at ang proseso ay nagsisimula muli.

Napakahusay na tool para sa automation at force multiplikasyon

Upang mapanatili ang buong prosesong ito nang mabilis at bilang makinis hangga't maaari, gumagamit ang Facebook ng isang malaking bilang ng iba't ibang mga tool. Nakita na namin kung paano gumagamit ang kumpanya ng Phabricator at Sapienz, ngunit mayroon itong iba pang mga tool at plugin para sa iba pang mga yugto.

Ang isang tool na tinatawag na Picknic ay nagtitipon ng lahat ng mga kahilingan sa paghila (mga pagbabago na ginawa ng mga empleyado) sa isang lugar para sa mabilis at madaling pagsusuri.

Kapag ang pagsubok ay naghahagis ng isang error, ang isang bot na tinatawag na Nagbot ay nagpapaalam sa mga responsable at malumanay na ipinaalis ang mga ito sa paggawa. Ang paggamit ng isang hindi kasiya-siyang AI upang mahawakan ang prosesong ito hindi lamang tinitiyak na magagawa ang gawain, ngunit pinapayagan din ang manager na maiwasan ang pagiging "masamang tao" sa pamamagitan ng patuloy na pag-aalsa!

kapag ang pagsubok ay naghahagis ng isang error para sa isang tao na ayusin, isang bot na tinawag na Nagbot na nagpapaalam sa mga responsable at malumanay na ipinaalis ang mga ito sa paggawa

Ang Crashbot ay isa pang bot na may pananagutan sa pag-uulat ng mga pagkakamali na nangyari, at mas kanais-nais sa mga sukatan mula sa Google Console, sa pag-uulat nito sa totoong oras. I-flag up ng Crashbot ang isang isyu sa sandaling ang mga problema ay lumampas sa isang "katanggap-tanggap na pag-crash ng threshold." Maaari itong mangyari sa bilang ng mga taong nakakaranas ng pagkakamali, o ang bilang ng mga beses na nakatagpo ng isang solong gumagamit ang parehong error. Alinmang paraan, ang Facebook ay magkakaroon din ng isang sukatan na nagpapakita ng bilang ng mga malungkot na gumagamit.

Para sa panloob na komunikasyon, ang Facebook ay gumagamit ng isang bagay na tinatawag na Lugar ng Trabaho. Ito ay mabisang isang bersyon ng Facebook na inilaan para sa mga negosyo, na nagbibigay ng isang kapaki-pakinabang na paraan upang makakuha ng impormasyon tungkol sa mga miyembro ng koponan, at makipag-usap nang mabilis sa mga nakaupo sa kabilang panig ng kumakalat na tanggapan. Nagbebenta din ang Facebook ng software na ito sa mga third party.

Siyempre hindi mawawalan ng oras ang Facebook sa pag-upload ng bawat bagong bersyon ng mga apps nito sa Play Store, App Store, Amazon, at lahat ng iba pa. Mayroon ding isang app para sa tinatawag na Mobile Push Train.

Ang pagsasara ng mga saloobin

Ang pagpapanatiling isang app tulad ng Facebook hanggang sa kasalukuyan ay isang napakahalagang pagsasagawa, at ang kumpanya ay kailangan pa ring kumbinsihin ang mga gumagamit na aktwal na mai-install ang mga pag-update na iyon. Ito ay partikular na mahirap sa mga bansa kung saan hindi ginagarantiyahan ang koneksyon. Sa Canada, isang porsyento lamang ng mga gumagamit ang nagpapatakbo ng isang bersyon ng Facebook sa loob ng isang taong gulang. Sa Ethiopia, ang bilang na iyon ay malapit sa 50 porsyento!

Ang koponan sa Facebook ay malinaw na gumagana nang husto at gumagamit ng isang tonelada ng mga tool at mga proseso upang mapanatili ang lahat bilang streamline hangga't maaari. Sa pagtatapos ng araw, ang pangkat ng pag-unlad ay naglalayong sumunod sa limang naghaharing prinsipyo:

  • Panatilihing malinis ang master.
  • Magkaroon ng isang koponan na may kadalubhasaan sa pagpapalabas ng engineering.
  • Paglabas sa oras na madalas.
  • Mga produktong dogfood.
  • Maging mabait sa mga gumagamit.

Ito ay tunog simple, ngunit tulad ng nakikita mo ay nagsasangkot ito ng maraming mga spinning plate. Kahit na ang pagpapanatili ng lahat ng mga tool na ginamit sa proseso ay isang proyekto sa sarili!

Para sa bahagi nito, pinapanatili ng Facebook ang isang palakaibigan at magaan na kapaligiran sa opisina sa London. Ipinagpapalit ng koponan ang mga GIF at memes sa pamamagitan ng mga plugins, pinangalanan nila ang mga silid batay sa "mga bagay na kinamumuhian ng British" at mga puns Shakespearean, at marami silang pagmamalaki sa kanilang gawain. Sa Facebook, nagsusumikap silang mabuti at naglalaro, at tila para sa karamihan, gumagana ang system.

Sa susunod na pag-update ng isang bagong pag-update para sa isa sa iyong mga mas malaking apps, mag-ekstrang isang pag-iisip para sa lahat ng gawain at samahan na kinuha upang makarating doon.

Ang aming pang-araw-araw na buhay ay naging ma galit na galit kaya dati. Ang pagkabalia, tre, at burnout ay lahat ng malalaking panganib a iang mabili na tulin ng buhay. Hindi lamang makakatulong a iy...

Ilang ora lamang bago umali ang Minecraft a kaiyahan ng pinalaki na katotohanan tulad ng mayroon nang iba pang mga mobile na laro, tulad ng Pokémon Go. Ngayon, ayon a iang bagong trailer ng teaer...

Mga Sikat Na Post