Pandangan dari dalam pada proses pengembangan aplikasi seluler Facebook

Pengarang: Laura McKinney
Tanggal Pembuatan: 4 Lang L: none (month-011) 2021
Tanggal Pembaruan: 1 Juli 2024
Anonim
ReactJS vs Angular vs Vue: Best Javascript Framework For Your Project | Simplilearn
Video: ReactJS vs Angular vs Vue: Best Javascript Framework For Your Project | Simplilearn

Isi


Baru-baru ini, saya mengunjungi Markas Besar Facebook di London untuk belajar tentang proses mengembangkan dan memelihara aplikasi Facebook selulernya. Banyak hal yang terjadi di sini daripada yang mungkin Anda sadari: beberapa aplikasi Facebook ditangani di sini secara keseluruhan, seperti WhatsApp untuk desktop dan aplikasi Tempat Kerja yang berorientasi bisnis.

Kantor-kantor itu persis seperti yang Anda harapkan dari gambar Facebook, meskipun mungkin tidak terlalu berlebihan untuk Jejaring Sosial. Ini adalah tempat di mana pekerjaan serius dilakukan, tetapi tetap ada suasana yang trendi, unik, dan santai. Karyawan dapat membawa laptop untuk bekerja di mana pun mereka pilih, ada ruang pencetakan untuk membuat poster (hanya karena), karya seni yang ditugaskan di beberapa dinding, dan Ninja Turtle raksasa - saya tidak pernah mendapat jawaban mengapa.

Oh, dan makanannya luar biasa. Saya ada di sana selama Tahun Baru Imlek dan saya melakukannya berganda perut babi. Waktu yang baik


Namun, saya tidak ada di sana untuk menikmati dekorasi dan masakan, saya ada di sana untuk belajar tentang Facebook di ponsel. Lebih khusus: bagaimana Anda bisa mempertahankan proyek sebesar ini dan ambisius? Backend Facebook melayani lebih dari dua miliar orang, dan aplikasi Android sendiri melihat versi baru dirilis setiap minggu.

Bagaimana Anda mengelola aplikasi dengan sejumlah fitur yang ambisius

Saya berbicara dengan Tal Kellner melalui sistem telepresence Facebook sendiri. Tal adalah manajer program teknis, yang bertanggung jawab atas Tim Rekayasa Rilis yang berbasis di kantor teknik Tel Aviv. Dia lebih dari senang untuk berbagi rincian berpasir.

Tal dan timnya mengunggah versi Lite Facebook mereka ke iOS untuk pertama kalinya

Apa yang saya pelajari cukup menarik baik dari perspektif pengembang maupun sebagai pengguna. Inilah yang saya temukan.


Manajemen proyek di Facebook - Why Scrum> Waterfall

Saat melihat proyek besar, Anda perlu mempertimbangkan pendekatan manajemen proyek Anda. Salah satu contohnya disebut manajemen proyek "air terjun". Ini adalah pendekatan sekuensial dan linier di mana Anda bekerja pada fase tertentu pada gilirannya, seperti beralih dari ideasi ke implementasi ke pengujian ke rilis.

perusahaan seperti Facebook malah memilih pendekatan yang lebih modern untuk manajemen proyek yang disebut "scrum"

Yang terpenting, dalam pendekatan ini Anda tidak memulai fase berikutnya sampai fase sebelumnya selesai. Sistem ini berasal dari manufaktur, di mana tahap-tahap tertentu sering mengandalkan tahap sebelumnya: Anda perlu mencari batu bata sebelum Anda dapat membangun tembok!

Ketika datang ke perangkat lunak, pendekatan ini terbatas. Dalam kasus terburuk, pembaruan dapat memakan waktu lama untuk diluncurkan, itu usang pada saat tiba. Adipati Nukem Selamanya siapa pun?

Dengan demikian, beberapa perusahaan perangkat lunak memilih untuk pendekatan yang lebih modern yang disebut "scrum," yang merupakan metodologi tangkas. Metode ini memprioritaskan pekerjaan yang paling penting dan memecahnya menjadi potongan modular. Itu bergantung pada komunikasi antara departemen internal dan bahkan agen individu yang bekerja sendiri di sudut kode mereka sendiri.

Hasilnya, dalam teori, adalah bahwa setiap orang dapat mengerjakan apa yang paling mendesak untuk mereka sepanjang waktu, dan bahwa setiap bagian lain dari bisnis tahu apa yang mereka lakukan. Ada tingkat kepemilikan yang tinggi untuk setiap insinyur, dan semua orang pada akhirnya bertanggung jawab atas pekerjaan mereka sendiri. Ini tidak hanya membuat perusahaan lebih gesit, tetapi juga diharapkan meningkatkan kepuasan di tempat kerja. Tidak ada yang hanya gigi dalam mesin.

siapa pun dari mana saja di dalam organisasi dapat menyarankan ide untuk fitur baru

Saya sangat terkesan mendengar bahwa siapa pun dari mana saja di dalam organisasi dapat menyarankan ide untuk fitur baru, dan kemudian mulai mengatasinya jika diberi lampu hijau. Kadang-kadang ini bahkan mungkin berkembang menjadi aplikasi terpisah sendiri! Facebook jauh lebih merupakan proyek kolaboratif daripada visi atas ke bawah dari beberapa orang (atau satu orang) yang sering digambarkan sebagai.

Ini memungkinkan Facebook untuk menerapkan siklus pengembangan yang sangat cepat, memungkinkan pembaruan seluler baru setiap minggu, dan ribuan komitmen (perubahan kode yang diusulkan) di antaranya. Jika menurut Anda itu mengesankan, versi web (di bagian belakangnya juga melayani aplikasi seluler) diperbarui setiap dua atau tiga jam sekali!

Facebook umumnya sangat mendukung gagasan dan startup baru. Bahkan memiliki inisiatif yang disebut LDN LAB yang ditujukan untuk mendukung ide dan bisnis baru.

Menemukan keseimbangan

Diambil dari slide Tal sendiri

Tentu saja, masih ada batasnya dalam hal apa yang bisa ditangani perusahaan. Dengan kode sebanyak ini selalu ada ruang untuk perbaikan, tetapi harus ada waktu ketika versi dianggap "cukup baik."

Di situlah "segitiga emas" berperan. Tiga titik segitiga ini mewakili fitur, kualitas, dan waktu. Setiap perusahaan memiliki pilihan untuk dibuat di sini: ketika tiba saatnya, apakah Anda memprioritaskan fitur baru dengan mengorbankan waktu yang lebih lama? Apakah Anda mengizinkan bug kecil yang ada masuk melalui internet jika itu berarti Anda dapat menambahkan lebih banyak fitur? Ketika Anda tidak dapat melakukan semuanya, Anda terpaksa memprioritaskan.

Di Facebook, prioritasnya adalah kualitas dan waktu. Jika pembaruan jatuh di belakang jendela yang diberikan, fitur mungkin akan didorong kembali; alih-alih sudut terpotong atau pembaruan ditunda.

Kontrol versi dan perubahan juggling

Untuk menangani pembaruan dan perubahan pada kode ini, Facebook menggunakan versi Mercurial yang dimodifikasi sendiri. Itu bukan Git yang sangat banyak digunakan, yang tampaknya tidak skala juga untuk tujuan perusahaan. Phabricator adalah setara dengan GitHub, dan menggunakan banyak plugin untuk membantu merampingkan alur kerja dan kadang-kadang hanya untuk membuat hal-hal sedikit lebih menyenangkan (Facebook suka meme-nya tampaknya).

Untuk non-programmer di luar sana, Mercurial, seperti Git, adalah sistem kontrol versi. Ini memungkinkan sejumlah besar orang untuk bekerja pada satu perangkat lunak, dan untuk membuat perubahan dan perbaikan tanpa membahayakan versi aplikasi utama, yang disebut "cabang utama." Alat-alat ini membantu mencegah konflik kode dan memungkinkan untuk eksperimen. Hanya sekali perubahan telah disetujui secara menyeluruh pada cabang uji yang akan dikomit kepada master.

Bayangkan jika beberapa programmer miskin membuat kesalahan ketik yang memecah seluruh kode dan hanya ada satu versi! Itu akan menjadi hari yang buruk bagi semua orang.

Alat-alat seperti Mercurial memungkinkan untuk menerapkan pendekatan scrum dengan relatif mudah, membiarkan semua orang bekerja pada fitur dan bug tertentu secara bersamaan sebelum menggabungkan semuanya bersama-sama dalam satu panci besar.

Sekali seminggu, kandidat rilis akan dipotong dari master dan ini akan melewati tahap pengujian. Coder yang telah menghabiskan sepanjang minggu mengerjakan perbaikan bug atau fitur baru pada saat ini akan saling membantu berharap pekerjaan mereka membuatnya menjadi pembaruan baru.

Setiap perbaikan menit terakhir atau perubahan yang dilakukan oleh anggota tim akan membutuhkan "cherry pick" untuk dimasukkan dalam cabang baru oleh yang bertanggung jawab. Dikabarkan, mereka diketahui menggunakan suap dalam bentuk cokelat dan alkohol yang diberikan kepada para pembuat keputusan.

Untuk mengkompilasi, Facebook menggunakan alat lain yang disebut Buck. Alat bangun tunggal ini dapat membangun apa saja ketika datang untuk mengemas aplikasi. Tidak perlu opsi terpisah seperti Gradle atau Ant ketika menargetkan platform yang berbeda.

Menangkap serangga tepat waktu

Dengan semua orang mengerjakan hal-hal yang berbeda, dan begitu banyak pembaruan dilakukan secara berkala, sangat penting bagi perusahaan untuk memastikan perangkat lunak mereka berfungsi dan tidak memiliki bug serius. Sebagian besar, Facebook memiliki rekam jejak yang cukup bagus untuk menjaga segala sesuatu tetap berjalan.

Untuk itu, tim membagi pengujian perangkat lunak ke dalam tingkatan, yang disebut sebagai C1, C2, dan C3.

C1 adalah pengujian internal dan semua karyawan akan menjalankan versi itu. Selama C2, versi berjalan melalui 2 persen dari masyarakat umum, dan C3 adalah produksi. Jika sesuatu yang benar-benar serius ditemukan, setiap karyawan akan dapat mengakses tombol berhenti darurat untuk menghentikan produksi.

Para sukarelawan yang mengedepankan diri untuk menjaga tingkat terus maju pergi dengan nama "pengemis pohon" (karena cabang), dan melakukan ini di atas pekerjaan rutin mereka.

Di Seluler, tingkatan serupa disebut alfa, beta, dan prod. Alpha berarti tes internal, yang akan dijalankan oleh semua karyawan. Proses dari perusahaan mana pun yang menggunakan produknya sendiri dengan cara ini disebut "dogfooding" - dari "makan makanan anjing Anda sendiri."

Penguji juga memiliki beberapa alat unik dan menarik yang siap digunakan untuk melaporkan bug dengan cepat. Salah satunya adalah "Rageshake," di mana dengan hanya menggoyangkan perangkat karena frustrasi akan memungkinkan laporan bug, seperti dengan Google Maps.

Penguji juga memiliki beberapa alat unik dan menarik yang siap digunakan untuk melaporkan bug dengan cepat

Selama alpha - yang secara efektif merujuk pada pengujian internal apa pun - Facebook juga menggunakan pengujian otomatis untuk menjalankan aplikasi. Sebagai contoh, satu perangkat lunak yang baru saja diperoleh yang disebut "Sapienz" pada dasarnya bekerja dengan mengklik setiap tombol dan menggunakan setiap fitur dalam serangan acak hingga memicu crash. Ini kemudian mencatat jejak stack, mencatat tindakan, dan melaporkan kembali.

Aplikasi beta (versi yang diuji oleh masyarakat umum) melewati sebagian kecil (~ 2 persen) dari masyarakat umum. Cuplikan kecil ini akan menerima pembaruan sebelumnya, memberikan Facebook dengan umpan balik dunia nyata. Jika semuanya tampak baik, pembaruan akan keluar ke seluruh populasi, dan prosesnya dimulai lagi.

Alat yang ampuh untuk otomatisasi dan perkalian gaya

Untuk menjaga seluruh proses ini secepat dan sehalus mungkin, Facebook menggunakan sejumlah besar alat yang berbeda. Kami telah melihat bagaimana perusahaan menggunakan Phabricator dan Sapienz, tetapi ia memiliki alat dan plugin lain untuk tahapan lainnya.

Alat yang disebut Picknic mengumpulkan semua permintaan tarikan (perubahan yang dibuat karyawan) di satu tempat untuk peninjauan yang cepat dan mudah.

Saat pengujian memunculkan kesalahan, bot bernama Nagbot memberi tahu mereka yang bertanggung jawab dan dengan lembut mendorong mereka agar menyelesaikan pekerjaan. Menggunakan AI yang belum sempurna untuk menangani proses ini tidak hanya memastikan pekerjaan selesai, tetapi juga memungkinkan manajer untuk menghindari menjadi "orang jahat" dengan terus-menerus mengomel!

saat pengujian memunculkan kesalahan yang harus diperbaiki seseorang, bot bernama Nagbot memberi tahu mereka yang bertanggung jawab dan dengan lembut mendorong mereka agar menyelesaikan pekerjaan

Crashbot adalah bot lain yang bertanggung jawab untuk melaporkan kesalahan tersebut saat terjadi, dan lebih disukai daripada metrik dari Google Console, karena ia melaporkan secara real time. Crashbot akan menandai masalah setelah masalah melebihi "ambang batas yang dapat diterima." Ini bisa disebabkan oleh jumlah orang yang mengalami kesalahan, atau berapa kali seorang pengguna mengalami kesalahan yang sama. Either way, Facebook juga akan memiliki metrik yang menunjukkan jumlah pengguna yang sedih.

Untuk komunikasi internal, Facebook menggunakan sesuatu yang disebut Workplace. Ini adalah versi Facebook yang ditujukan untuk bisnis secara efektif, yang menyediakan cara yang berguna untuk mendapatkan informasi tentang anggota tim, dan berkomunikasi dengan cepat dengan mereka yang duduk di sisi lain kantor yang luas. Facebook juga menjual perangkat lunak ini kepada pihak ketiga.

Tentu saja Facebook tidak akan membuang waktu mengunggah setiap versi aplikasi baru ke Play Store, App Store, Amazon, dan yang lainnya. Ada juga aplikasi untuk yang disebut Mobile Push Train.

Pikiran penutup

Menjaga aplikasi seperti Facebook tetap terbaru adalah tugas yang sangat besar, dan perusahaan masih perlu meyakinkan pengguna untuk benar-benar menginstal pembaruan tersebut. Ini khususnya sulit di negara-negara di mana konektivitas tidak dijamin. Di Kanada, hanya satu persen pengguna yang menjalankan versi Facebook lebih dari setahun. Di Ethiopia, jumlah itu mendekati 50 persen!

Tim di Facebook jelas bekerja sangat keras dan menggunakan banyak alat dan proses untuk menjaga segala sesederhana mungkin. Pada akhirnya, tim pengembangan bertujuan untuk mematuhi lima prinsip yang berkuasa:

  • Jaga kebersihan master.
  • Memiliki satu tim dengan keahlian dalam rekayasa rilis.
  • Rilis tepat waktu sering.
  • Produk Dogfood.
  • Berbaik hati kepada pengguna.

Kedengarannya sederhana, tetapi seperti yang Anda lihat itu melibatkan banyak pelat berputar. Bahkan memelihara semua alat yang digunakan dalam proses itu adalah proyek itu sendiri!

Untuk bagiannya, Facebook mempertahankan suasana yang ramah dan menyenangkan di kantor di London. Tim ini menukar GIF dan meme melalui plugin, mereka menamai kamar berdasarkan "hal-hal yang dibenci Inggris" dan permainan kata-kata Shakespeare, dan mereka sangat bangga dengan pekerjaan mereka. Di Facebook, mereka bekerja keras dan bermain keras, dan tampaknya sebagian besar, sistem bekerja.

Lain kali pembaruan baru diluncurkan untuk salah satu aplikasi Anda yang lebih besar, harap pikirkan semua pekerjaan dan organisasi yang diperlukan untuk mendapatkannya di sana.

Apa yang Anda cari aat berbelanja untuk dompet? Kemungkinannya adalah Anda hanya menginginkan euatu yang melakukan tuganya dengan baik; tapi di ini di kami tidak pua dengan produk duniawi. Voyager mar...

ekarang kamu bia teluuri dengan aman dan aman dengan VPN.Aia untuk ebagian kecil dari harga eceran.VPN menyembunyikan aktivita online Anda dan mengenkripi koneki Anda, yang mengarah ke a ejumlah manfa...

Pilihan Pembaca