Yac 2013は GitHubのJason Rudolph
が訪問しました。
APIに関する彼のレポートは、会議で最も興味深いものの1つだったと思います。 Yandexはネットワークにレコードを投稿することを約束したので、見たことのない人は誰でも自由に見られるようにアドバイスします。
しかし、それはレポートではありません。 写真は、GitHubの
本番リリーススケジュール
を示しています。
その姿を聞いたとき、私は自分の耳を信じることができませんでした。 GitHubには、毎週数百の更新があります。 チームには、単一のQAではなく、約40人の開発者がいます。
幸いなことに、レポートの後、ジェイソンはまだしばらくの間ステージの隣にいましたが、私は彼がどうやってそれをするかについて中毒で彼に尋ねることができました。
Hubotは
GitHubに住んでい
ます 。 最初はjust4funチャットボットでした。 時間が経つにつれて、彼はオフィスの扉を開き、生産の計算を開始することを学びました。 GitHubでは、あらゆる機能ブランドの開発者が簡単なチャットメッセージで計算を開始できます。 私は頻繁にリリース管理をします。 この展開パターンについて聞いたとき、手の毛が思わず動きました。 実際、「壊れた」リリースを投稿することはできません。 計算は次のとおりです。
- 見知らぬ人がマスターと提携していない場合-彼を保持
- テストを実行する
- 移行を実行する
- スタッフ専用モードでの変更の投稿
- すべてうまくいけば、「パブリックモード」を有効にします
- ログやTwitterでエラーをチェック/ WTFツイート
- マスターの機能を制御するのに問題がない場合
データベースの移行
GitHubデータベースは十分な大きさであり、移行には長い時間がかかる場合があります。 したがって、更新を投稿する前に、それらは個別に実行されます。 ジェイソンは常に、ロールバックする必要があることを覚えていません。 それにもかかわらず、開発者は常に逆マイグレーションを作成します。
テスト
JasonがGitHubに来たとき、多くのテストがあり、約2分間実行されました。 今ではたくさんありますが、50秒で完了します。 GitHubは、並列化によりこれを実現できました。 すべてのテストは64コアで実行されます。 各実行後、環境はどのテストパックが他のテストパックよりも長く実行されたかを分析し、テストがほぼ同時に実行されるようにテストを自動的に再配布します。 GitHubはSeleniumを使用していませんが、単体テスト、統合テスト、およびシステムのエンドツーエンドテストがあります。 一般に、独立したDevOps部門がこのキッチン全体の自動化を担当するため、開発者は機能に集中できます。
スタッフのみ
すべての新機能は、最初にいわゆるスタッフ専用モードに分類されます。 GitHubの従業員はそれらに触れることができます。他の人にとっては、機能はそうではない「ふり」をします。 スタッフのみは、GitHub自体のコードで実装されます。 FacebookのiOS部門でも同じ考え方が使用されています。 それらはすべてトグルスイッチのオン/オフ機能を備えています。 これにより、「何らかの変更を元に戻す」必要がある場合でも、リリースをリリースできます。
Twitter
ジェイソンは、GitHubには最高のテスターチーム、つまり顧客がいると冗談を言っています。 Twitterの「何かがうまくいかなかった」とすぐに異常なアクティビティが表示されます。 このYacにより、私はtwitterを別の視点で見ることができました。このサービスは、「お母さん、私はめちゃくちゃ」よりも便利なものに使用できるようです。
職業倫理
GitHubで作業するのは簡単なことではありません。 チームの誰かが推薦したとしても、各候補者は偏見を持って研究されます。 GitHubの利点は、候補者がアカウントを持っている場合、応募者に関する多くの情報を取得できることです。 コードの品質だけでなく、その人が自分のプロジェクトをサポートしているかどうか、バグ報告にどれだけ迅速に対応しているか、コミュニティと協力しているかどうかにも注意が払われます。 多くの基準がありますが、要するに、GitHubはクールな製品をリリースすることを主な目標とする人々を採用しています。 最もクールなコード、設計、UI、アルゴリズム、つまり「製品」ではありません。 人が時間通りに効率的に新しい機能を提供することは重要です。 これはおそらく、最も「外国人」の開発者と同胞とを区別するものです。 製品のオリエンテーションはクールであり、欧米の同僚からこれを学ぶ必要があると深く確信しています。