Engineering

GitHub における大規模なモノリポのパフォーマンスの向上

GitHub は、大規模なモノリポを使用する一部の顧客から、プッシュ操作が失敗するといったパフォーマンスの問題が発生しているというフィードバックを受けました。 github/github は GitHub のモノリポですが、私達自身も時々プッシュに失敗することがありました。そこで、モノリポのプッシュパフォーマンスを改善するために様々なアプローチを行い、これらを組み合わせることで、プッシュトラフィックを処理する能力が少なくとも一桁向上しました。

Image of Scott Arbeit

Git clone: データで見るクローンの仕組み

Git cloneにはいくつかの選択肢がありますが、実際に Git のパフォーマンスにどのような影響を与えるのでしょうか?あなたのクライアントではどの選択肢が一番速いのでしょうか?あなたのビルドマシンではどの選択肢が一番速いのでしょうか?これらの選択肢はサーバーのパフォーマンスにどのような影響を与えるのでしょうか?異なるクローンオプションとフェッチオプションの間で、いくつかのパフォーマンスの変化があることを説明します。

Image of Solmaz Abbaspoursani

パーシャルクローンとシャロークローンを活用しよう

Git のリポジトリが大きくなると、新しい開発者がクローンして作業を始めるのが難しくなります。Git は 分散 バージョン管理システムとして設計されています。つまり、リポジトリとのやりとりを管理する中央サーバーに接続しなくても、自分のマシンで作業ができるということです。これが完全に実現できるのは、すべての到達可能なデータがローカルリポジトリにある場合だけです。

Image of derrickstolee

コミットはスナップショットであり差分ではない

Git は紛らわしいという評判です。用語や言い回しが意味するものと、そこから想像する挙動が違ってユーザーが混乱すると言われます。これは、git cherry-pick や git rebase のような「履歴を書き換える」コマンドに最も顕著です。私の経験では、この混乱の根本的な原因は、コミットは 差分 であり順番を入れ替えることができるという解釈にあります。しかし、コミットはスナップショットであって、差分ではありません!

Image of derrickstolee

セキュリティを重視した開発手法ベストプラクティス

モバイルアプリケーションから大規模な金融機関のインフラストラクチャーまで、ソフトウェアの構築方法は急速に進化しており、セキュリティは開発者が最初から考慮するものとなりました。開発のペースが速まると、セキュリティ侵害のリスクが大きくなります。セキュリティに気を使っている大企業でさえ、公開されているソースコードにパスワードを残したり、お客様の個人データを漏洩したり、明らかに脆弱性があるのに重要なアプリケーションを本稼働させたり、といったことは珍しくありません。多くの企業が新しいソフトウェアをいち早くリリースしようと懸命になり、ソフトウェアの安全性を保つことに苦労しています。

Image of admin

GitHub Enterprise Cloud (github.com) は脆弱性対応のパッチを適用済みです

GitHub.comおよびそれに関連するサービスに脆弱性は存在しません。 GitHub.comは脆弱性情報が公開される前に必要対策を実施しました。GitHubは規定のレスポンスプロセスを実行し、脆弱性が攻撃されないよう対応済みです。 本脆弱性に関するCVEが公開されていますので、こちらも合わせてご確認ください。 CRITICAL 悪意を持ったリクエストを作成することで任意のファイルを読み出し、内容を漏洩させることができてしまう。 本件に関する詳細はRailsのCVEであるこちらをご確認ください: CVE-2019-5418 HIGH 悪意を持ったリクエストによってCPUに高負荷をかけ、DOS攻撃を成立させることができる。 本件に関する詳細はRailsのCVEであるこちらをご確認ください: CVE-2019-5419

Image of admin