Facebookのモバイルアプリ開発プロセスの内部

著者: Laura McKinney
作成日: 4 Lang L: none (month-011) 2021
更新日: 1 J 2024
Anonim
High Density 2022
ビデオ: High Density 2022

コンテンツ


最近、ロンドンのFacebook本社を訪れ、モバイルFacebookアプリの開発と保守のプロセスについて学びました。あなたがたぶん気づくよりもはるかに多くのことが行われています。デスクトップ用のWhatsAppやビジネス向けのWorkplaceアプリなど、Facebookのアプリの一部はここで完全に処理されます。

オフィスは、Facebookのイメージから期待するとおりのものですが、おそらくソーシャルネットワークレベルの過剰とは言えません。ここは真面目な仕事をする場所ですが、それでもトレンディで風変わりでリラックスした雰囲気があります。従業員はラップトップを持ち歩き、好きな場所で仕事をすることができます。ポスターを作成するための印刷室(いくつかの壁に委託されたアートワーク)、巨大なニンジャタートルがあります。

ああ、食べ物はすごい。私は旧正月にそこにいて、 複数 豚バラ肉。良い時間。

しかし、私は装飾や料理を楽しむためにそこにいませんでした。モバイルでFacebookについて学ぶためにそこにいました。より具体的には、この大規模で野心的なプロジェクトを地球上でどのように維持しますか? Facebookバックエンドは20億人以上にサービスを提供しており、Androidアプリだけでも毎週新しいバージョンがリリースされています。

野心的な数の機能を備えたアプリをどのように管理しますか

Facebookのテレプレゼンスシステムを介してTal Kellnerと話をしました。 Talは、テルアビブのエンジニアリングオフィスに拠点を置くリリースエンジニアリングチームを担当するテクニカルプログラムマネージャーです。彼女はザラザラした詳細を喜んで共有しました。


Talと彼女のチームは、LiteバージョンのFacebookを初めてiOSにアップロードします

私が学んだことは、開発者の観点からもユーザーとしても非常に魅力的でした。これが私が見つけたものです。

Facebookでのプロジェクト管理–スクラムを選ぶ理由>ウォーターフォール

大規模なプロジェクトを検討するときは、プロジェクト管理アプローチを検討する必要があります。そのような例の1つは、「ウォーターフォール」プロジェクト管理と呼ばれます。これは、構想から実装、テスト、リリースまでのように、特定のフェーズで順番に作業する連続的かつ線形のアプローチです。

Facebookのような企業は、代わりに「スクラム」と呼ばれるプロジェクト管理へのより現代的なアプローチを選択します

重要なことに、このアプローチでは、前のフェーズが完了するまで次のフェーズを開始しません。このシステムは、特定の段階が前の段階に依存することが多い製造業から始まります。壁を作る前にレンガを調達する必要があります!

ソフトウェアに関しては、このアプローチには制限があります。最悪の場合、更新の展開には非常に長い時間がかかることがあり、更新が到着するまでに廃止されます。デュークヌケム永遠に誰か?

そのため、一部のソフトウェア企業は、アジャイル手法である「スクラム」と呼ばれるより現代的なアプローチを代わりに採用しています。この方法は、最も重要な作業に優先順位を付けて、モジュール式のチャンクに分割します。これは、内部部門と、独自のコードコーナーで単独で作業する個々のエージェントとの間の通信に依存しています。

その結果、理論的には、誰もが常に最も切迫していることに取り組むことができ、ビジネスの他のすべての部分が自分のしていることを知っているということです。各エンジニアには高いレベルの所有権があり、最終的には全員が自分の仕事に責任を負います。これにより会社の機敏性が高まるだけでなく、職場の満足度も向上することを期待しています。誰もマシンの歯車ではありません。

組織内のどこからでも誰でも新しい機能のアイデアを提案できます

組織内のどこからでも誰でも新しい機能のアイデアを提案し、それが実現すればそれに取り組むことができると聞いて非常に感銘を受けました。時にはこれが独自のアプリに発展することさえあります! Facebookは、しばしば描かれている少数の人々(または1人)のトップダウンで強制されたビジョンというよりも、共同プロジェクトです。


これにより、Facebookは非常に高速な開発サイクルを実装し、毎週新しいモバイル更新を可能にし、その間に何千ものコミット(コード変更の提案)を可能にします。それが印象的だと思うなら、Webバージョン(バックエンドもモバイルアプリに対応しています)は2〜3時間ごとに更新されます!

Facebookは一般に、新しいアイデアやスタートアップを非常に支援しています。新しいアイデアやビジネスをサポートすることに専念するLDN LABと呼ばれるイニシアチブもあります。

バランスを見つける

タル自身のスライドから取得

もちろん、会社が処理できることに関しては、常に限界があります。このように多くのコードを使用すると、常に改善の余地がありますが、バージョンが「十分」であると見なされるときが来る必要があります。

それが「黄金の三角形」の出番です。この三角形の3つのポイントは、機能、品質、時間を表しています。すべての企業がここで選択することができます。クランチ時間に関しては、少し時間がかかることを犠牲にして新機能を優先しますか?機能を追加できるという意味であれば、小さな既存のバグがネットをすり抜けることを許可しますか?すべてを行うことができない場合、優先順位を付けざるを得ません。

Facebookでは、優先事項は品質と時間です。更新が割り当てられたウィンドウより遅れている場合、機能はおそらくプッシュバックされます。コーナーがカットされたり、更新が遅れたりすることはありません。

バージョン管理とジャグリングの変更

これらの更新とコードの変更を処理するために、FacebookはMercurialの独自の修正バージョンを使用します。これは非常に広く使用されているGitの代わりであり、Gitは明らかに会社の目的に合わせてスケーリングしませんでした。 PhabricatorはGitHubに相当し、多くのプラグインを使用してワークフローを合理化し、時には物事をもう少し楽しくするために使用します(Facebookはミームが好きなようです)。

プログラマーでない人にとっては、GitのようなMercurialはバージョン管理システムです。これにより、多数の人が1つのソフトウェアで作業し、「マスターブランチ」と呼ばれるアプリのメインバージョンを危険にさらすことなく変更や修正を行うことができます。これらのツールは、コードの競合を防ぎ、実験を可能にします。テストブランチで変更が完全に承認されると、マスターにコミットされます。

貧しいプログラマーがコード全体を壊すタイプミスを犯し、バージョンが1つしかなかったとします。それは誰にとっても悪い日になるでしょう。

Mercurialなどのツールを使用すると、スクラムアプローチを比較的簡単に実装でき、特定の機能とバグを全員が同時に操作してから1つの大きなポットにマージできます。

1週間に1回、リリース候補がマスターから切り離され、テストフェーズが実行されます。バグ修正や新機能の開発に1週間を費やしたコーダーは、この時点で作業が新しいアップデートに反映されることを望んでいます。

チームメンバーによって行われた最後の修正や変更には、担当者が新しいブランチに含めるために「チェリーピック」が必要です。伝えられるところでは、彼らは意思決定者に贈られたチョコレートやアルコールの形で賄briを使用することが知られています。

コンパイルするために、FacebookはBuckと呼ばれる別のツールを使用します。この単一のビルドツールは、アプリのパッケージ化に関しては何でもビルドできます。異なるプラットフォームを対象とする場合、GradleやAntなどの個別のオプションは必要ありません。

時間内にバグをキャッチ

誰もがさまざまなことに取り組んでおり、非常に多くの更新が定期的に行われているため、企業がソフトウェアが機能し、重大なバグがないことを確認することが非常に重要です。ほとんどの場合、Facebookには、物事を実行し続けるというかなりの実績があります。

そのために、チームはソフトウェアテストをC1、C2、およびC3と呼ばれる層に分割します。

C1は内部テストであり、すべての従業員がそのバージョンを実行します。 C2の間、バージョンは一般大衆の2%を使用し、C3は本番です。真に重大な問題が見つかった場合、すべての従業員が緊急停止ボタンにアクセスして、生産を中断することができます。

階層の進行を維持するために努力したボランティアは、「ツリーハガー」という名前で(ブランチがあるため)、通常の仕事に加えてこれを行います。

モバイルでは、同様の層はアルファ、ベータ、および製品と呼ばれます。アルファは、すべての従業員が実行する内部テストを意味します。このように自社製品を使用する企業のプロセスは、「ドッグフードを食べる」ことから「ドッグフード」と呼ばれます。

また、テスターに​​は、バグを迅速に報告するための独自の興味深いツールが用意されています。 1つは「Rageshake」です。フラストレーションをたててデバイスを振るだけで、Googleマップのようにバグレポートが有効になります。

テスターに​​は、バグを迅速に報告するための独自の興味深いツールも用意されています

アルファ(内部テストを事実上参照)中、Facebookはアプリを実行するために自動テストも使用します。たとえば、最近取得した「Sapienz」というソフトウェアは、すべてのボタンをクリックし、クラッシュを引き起こすまでランダムな攻撃ですべての機能を使用することで機能します。次に、スタックトレースを記録し、アクションを記録して、レポートを返します。

ベータ版アプリ(一般ユーザーがテストしたバージョン)は、一般ユーザーの小さなサブセクション(約2%)を通過します。この小さなスニペットは事前に更新を受信し、Facebookに実際のフィードバックを提供します。すべてが正常であると思われる場合、更新は全人口に適用され、プロセスが新たに始まります。

自動化と力の乗算のための強力なツール

このプロセス全体を可能な限り迅速かつスムーズに保つために、Facebookはさまざまなツールを多数使用しています。同社がどのようにPhabricatorとSapienzを使用しているかは既に見てきましたが、他のステージ用の他のツールとプラグインがあります。

Picknicと呼ばれるツールは、すべてのプル要求(従業員が行った変更)を1か所に集めて、すばやく簡単にレビューできるようにします。

テストでエラーがスローされると、Nagbotというボットが責任者に通知し、やさしく作業を完了させます。初歩的なAIを使用してこのプロセスを処理することで、作業が確実に行われるだけでなく、マネージャーが絶えずしつこくして「悪者」にならないようにすることができます。

テストが修正する誰かのためにエラーを投げたとき、Nagbotと呼ばれるボットは責任者に通知し、仕事を成し遂げるようにそっと突きます

Crashbotは、エラーが発生したときにそれらを報告する別のボットであり、リアルタイムで報告するという点で、Googleコンソールからのメトリックよりも望ましいです。問題が「許容できるクラッシュのしきい値」を超えると、Crashbotは問題にフラグを立てます。これは、エラーが発生したユーザーの数、または1人のユーザーが同じエラーに遭遇した回数が原因である可能性があります。いずれにせよ、Facebookには悲しいユーザーの数を示す指標もあります。

内部コミュニケーションのために、FacebookはWorkplaceと呼ばれるものを使用します。これは事実上、ビジネス向けのFacebookのバージョンであり、チームのメンバーに関する情報を取得し、広大なオフィスの反対側に座っている人々と迅速に通信するための便利な方法を提供します。 Facebookは、このソフトウェアを第三者に販売しています。

もちろん、Facebookは、各アプリの新しいバージョンをPlayストア、App Store、Amazon、その他すべてにアップロードする時間を無駄にしません。モバイルプッシュトレインと呼ばれるアプリもあります。

おわりに

Facebookのようなアプリを最新の状態に保つことは計り知れない仕事であり、同社はユーザーにこれらのアップデートを実際にインストールするよう説得する必要があります。これは、接続が保証されていない国では特に困難です。カナダでは、1年以上前のバージョンのFacebookをまだ実行しているユーザーは1%だけです。エチオピアでは、その数は50パーセントに近い!

Facebookのチームは明らかに一生懸命働いており、大量のツールとプロセスを使用して、すべてを可能な限り合理化しています。 1日の終わりに、開発チームは5つの支配原則を順守することを目指しています。

  • マスターを清潔に保ちます。
  • リリースエンジニアリングの専門知識を持つチームを1つ持つ。
  • 頻繁に時間通りにリリースしてください。
  • ドッグフード製品。
  • ユーザーに親切にしてください。

簡単に聞こえますが、ご覧のとおり、多数の回転プレートが含まれています。プロセスで使用されるすべてのツールを保守すること自体がプロジェクトです!

Facebookは、ロンドンのオフィスで友好的で明るい雰囲気を維持しています。チームは、プラグインを介してGIFやミームを交換し、「イギリス人が嫌いなもの」とシェークスピアのしゃれに基づいて部屋の名前を付け、仕事に多くの誇りを持っています。 Facebookでは、彼らは一生懸命働き、一生懸命にプレーしますが、ほとんどの場合、システムは機能しているようです。

次回、より大きなアプリの1つに新しい更新プログラムが公開された場合、そこに到達するためにかかったすべての作業と組織に余裕を持たせてください。

の第274版へようこそ!先週の大きな見出しは次のとおりです。今週、Google Aitantに厄介なニュースがありました。人々があなたのGoogleアシスタントの録音を聞いていることがわかります。数週間前にアマゾンが録音を削除しないことについて話しましたので、この夏にはすでにテーマがあります。ありがたいことに、すべての音声ではありません。ただし、文字起こしは、文字起こしの目的でスニペットを聞きま...

ファーウェイ・コンシューマー・ビジネス・グループのCEO、リチャード・ユは最近、折り畳み式のファーウェイ・メイトX(これまでリリースされていない)を使用して空港で捕まった。まだ発売されていないデバイスの使用を隠すのではなく、カメラのために喜んでハミングアップし、匿名の写真家が電話のクローズアップショットをつかむことさえ可能にしました。...

必ず読んでください