私たちLaterでは、通信事業者向けの請求書を作成しています。 Habréのブログでは、システムの機能とその開発の詳細( フォールトトレランスの確保など )だけでなく、他社がITインフラストラクチャと連携する方法に関する資料も公開しています。 本日、AzureのチーフデベロッパーであるJeff Wilcoxによる、プロジェクトチームの2,000人を超えるメンバーがGitHubに移籍したことについてのメモの翻訳版をご紹介します。過去4年間で、Azureはオープンソースコミュニティから多くを奪ってきたため、作業アプローチを再考し、大規模なGitHub組織を維持するために必要な手動操作の数を最小限に抑える必要がありました。 一部のAzureサービス(App Service、Active Directory、Azure Storage)、GitHub API、およびその他の自由に分散されたソリューションを使用するオープンソースWebアプリケーションを作成することにより、ほとんどの管理機能を自動化しました。
この投稿では、GitHubを使用するためのポータルを紹介します。GitHubのソースコードは現在
そこにあります。 アプリケーションの機能、機能、メインソフトウェアブロックについて説明し、GitHubが開発にどのように貢献したかについてのストーリーも共有します。 最後に、追加情報を入手できるリンクを追加します。 また、プロジェクトの詳細を明らかにする別の
投稿を準備しました。それがどのように始まり、どこに来たのか。
あらゆる規模の開発者と組織は、ポータルがどれほど便利かをすぐに実感できます。AzureActive Directoryは、エンジニアリングチームがGitHubを操作するためのツールにアクセスできるようにします。
Azure、GitHub API、およびNode.jsを使用して作成されたWebポータルを使用すると、GitHubとの作業を自動化し、新しい従業員の適応を加速できます。 GitHub用のオープンソースAzureポータル
誰かをGitHub組織に招待するには、管理者はGitHubのユーザー名を示すことで招待状を送信する必要があります。GitHubのユーザー名は、会社名や電子メールアドレスとは関係ありません。
GitHubは、小規模から中規模のチーム向けの優れたサービスです。ほとんどの場合、GitHubが提供するシンプルなソリューションが機能します。 しかし、私たちはそれを大きくしました-単純なものではなく、自動化が必要でした。これは、日常的な操作の実行に時間を浪費せず、重要なタスクに集中するためです。
GitHub Enterpriseにはいくつかの統合機能がありますが、GitHub.comの場合、オープンソースソフトウェアの世界とやり取りするため、各従業員には公式アカウントが必要です。
GitHubのAzureポータルは、組織とチームを手動で管理することの難しさの問題に対する新しいソリューションを提供する必要があるときに、ハッカソンプロジェクトとして始まりました。 ユーザーに個人アカウントと企業アカウントの両方で認証する機能を提供し、チームへの参加プロセスを自動化することで、GitHubでの作業を大幅に簡素化し、オープンソースソフトウェアのコースを受講し、弁護士を満足させることができます。
時間が経つにつれて、GitHubによる
変更に適応し、社内の他のシステムとの統合を設定しました。 Microsoftもこれを経験しました。
新しいツールとワークフローのシンプルな編成により、デリゲートはタスク(管理者ではないプロジェクトに直接関与する専門家)の一部を委任でき、エンジニアの生産性が向上し、エンジニアにとって都合の良いペースで作業できるようになりました。
プロジェクトの開発に興味があったにもかかわらず、GitHubの開発により、ポータルの機能の一部を削減できることを願っています。 GitHubは信頼できるパートナーであり、一緒に開発できてうれしいです。
ポータルのいくつかの簡単なシナリオと機能を見てみましょう。
新入社員の即時紹介
組織の規模に応じて、管理者の数を増やす必要がありますが、これは最適なソリューションではありません。 管理者は、読み取り/書き込み、リポジトリの重要な領域へのアクセス、コマンドおよび組織管理のすべての権限を持っているため、おそらく新しいメンバーをグループに手動で招待するよりも重要なタスクがあります。 従業員が多すぎる場合、重要な質問をする必要があります。「このユーザーはマイクロソフトの従業員ですか? 彼が誰なのか知っていますか? この少女はまだ私たちと働いていますか、それともずっと前に辞めましたか?」
ポータルは
GitHub APIを使用して、管理者に代わって一部の操作を許可し
ます 。 OAuthオープン認証プロトコルを使用して、ユーザーに招待状を送信し、遅延なくリクエストを受け入れ、2要素認証が有効になっているかどうかを確認できます(これは標準に完全に準拠するために必要です)。 その後、彼らが働くチームに参加する機会を提供します。
別のポータルは、経験を共有し、利用可能なトレーニング資料とガイドラインへのリンクを配布する機会を提供します。 一部のエンジニアはGitHubを初めて使用するため、トレーニングは非常に重要な側面です。
複数の組織のサポート
ポータルは多くの組織をサポートしています。 ユーザーは一度に複数に参加できます。 人事異動が発生した場合、すべての組織からすべての元従業員を除外したことを確認できます。 管理者はそれぞれ独自の資格情報を持つため、1つの組織にのみ割り当てることができます。
管理者間の役割の分配
Azure Githubファミリーの組織には通常のユーザーである管理者はいません。すべての管理者アカウントは特別に保護され、ロールに割り当てられています。 これにより、エラーの可能性が減り、リポジトリへのコミットの偶発的なプッシュがなくなります。
各組織には、個々のユーザーにsudo権限を付与する特別なチームがあります。管理者が何らかの理由で利用できない場合や、緊急事態に役立ちます。
GitHubユーザー名にマップされた従業員リスト
従業員とそのGitHubデータのリストは、グループメンバーとアテンダントの追加、チームへの参加リクエストの表示、新しいリポジトリの作成リクエストの表示など、ポータルでの操作の実行中に近くに表示されます。 これにより、GitHubでユーザー名を追加で学習する必要がなくなるため、従業員をチームに参加させるプロセスが簡素化されます。
このアプリケーションは、Microsoftが使用する他のオープンソースツール(
Azure CLAボットを含む)がデータウェアハウスとやり取りできるようにするいくつかのフックとREST APIも提供します。
付随するタスクの転送
私たちはエンジニアを信頼しているため、重要な決定の一部は管理者ではなく、
チームのメンテナーによって行われます。 それらには独自のアクセス権があります。 各組織には、リポジトリの作成を承認することがタスクである特別なチームがあります。
同行者はわずかに大きな権限を持ち、リポジトリを公開したり、新しいチームメンバーを追加したり、アクセス権を管理したり、Webフックを作成したり、フリーランスの従業員を仕事につなげたりできます。
2015年10月まで、私たちのポータルにはチームの所有者のような「位置」がありました。 これらの人々は、新しいメンバーを募集し、リポジトリを管理できます。 GitHubが組織の更新をリリースした後、新しいモデルに切り替えました。
GitHubのタスクを使用したクエリの承認
入場を管理し、リポジトリを作成するためのデータベースの代わりに、軽量のNoSQLデータベースをGitHubのタスクと組み合わせて使用します。 チームへの参加リクエストがプライベートリポジトリに到着すると、すべてのチームメンバーがアクセスできるタスクが開き、このリクエストを処理するために使用できるリンクを含むチームに通知が送信されます。 このアプローチにより、新しい透明度とシンプルさを実現しました。
Azure Cloud Infrastructureを使用する
ポータルは、特にオープンソースソフトウェアを使用し、次のAzureサービスを使用します。
- アプリケーションホスティング、高可用性、継続的な展開および構成-これらはすべて、 Azure App Serviceのおかげで可能です。 CI / CDは、開発とテストのプロセスを簡素化し、スピードアップするために調整されています。 展開スロットを使用すると、Git prepブランチを使用してその場で更新をリリースできます。 極端な場合、リアルタイムで機能する診断ログストリームサービスは問題を迅速かつ簡単に診断でき、アプリケーション設定は既存のAPIまたはポータルの問題を通知します。
- Azure Active DirectoryとMicrosoft従業員のリストを使用して、アプリケーションは従業員を認証および承認できます。
- ユーザープロファイルへの仮想リンクは、ストレージサービス項目であるAzure Table Storageに保存されます。 これは、高速で安価な信頼性の高い分散ストレージ(地理冗長ストレージ)です。
- Azure Redis Cacheは、GitHub API、ストレージ、その他の重要な運用データの負荷を軽減することを目的としたマネージドキャッシュです。 これにより、必要な数のアプリケーションを、任意の数のリージョンまたはインスタンスに共通のキャッシュでデプロイできます。
- Visual Studio Application InsightsとNode.js NPMモジュールを使用して、Webクライアントのパフォーマンスを追跡し、サーバー側の応答時間を監視し、世界中のどこからでも可用性テストを実行します。
これがAzureポータルの外観です。 スタートページで、ポータルに関する基本データと情報を修正しました。 ここでは、アプリケーションの分析データ、応答時間グラフ、およびget / set Redisリクエストの数の時間グラフを見つけることができます。 ここから他のAzureサービスにすばやく切り替えて、App Serviceの現在の展開プロセスを監視することもできます。優れたオープンソースツール
プロジェクトで使用されるフロントエンドコンポーネントには、Bootstrap、jQuery、およびその他のいくつかの小さなプラグインがあります。 ポータル自体は、次のNPNモジュールを使用するNode.jsアプリケーションです:applicationinsights、async、azure-storage、express、jade、moment、node-uuid、octonode、passport、passport-azure-ad、passport-github、redis。 このアプリケーションは、Mac、Windows、およびLinuxプラットフォームで利用できます。
開発プロセスでは、GitHub組織管理サービス用の多数の追加API呼び出しを実装することにより
、 Pavan Kumar Sunkara-
pksunkaraの オクトノードの作成に参加しました。
コードはパブリックドメインであり、誰もが貢献できるので、多くの人が私たちの仕事から利益を得て、あなたの考えを私たちと共有できることを願っています。 Azureは、オープンソースソフトウェアの配布を担当するMicrosoftオフィスと業務を調整し、企業のオープンソースツールセットの一部としてポータルを提供します。
GitHub上のAzure:4年後
2011年の終わりに最初の組織を作成したとき、
2012年6月より前に予定されていた開発計画が既にあり、GitHubはその一部でした。 それはすべて、GitHubに支払うために企業のクレジットカードを引き出し、すぐに組織の管理者の地位のために20人を雇ったという事実から始まりました。
「全員から密かに」プロジェクトを開発する代わりに、チームで働く機会を得て、GitHubで多くのオープンプロジェクトを作成しました。 初期段階でフィードバックを収集し、プログラマのコミュニティがコードをチェックしたことは、製品の品質にプラスの影響を与えました。 膨大な数のAzureユーザーがGitHubを使用していることがわかりました。彼らとの共同作業は非常にエキサイティングでした。
今日、私たちのGitHub組織には、マイクロソフトのすべてのコーナーから2,000人以上が参加しています。 同時に、少量のレポートドキュメント、GitHub営業部門との合意、組織の業務への高い関与、新たな機会を享受する多くのエンジニアがいます。
意思決定タスクの一部は、開発プロセスの複雑さを理解している人々の伴奏に任されていました。 エンジニアリングチームは、リソーステンプレート(GitHubから直接クラウドに信頼性の高いMongoDBクラスターを
デプロイする )から、Azure Webサイト、SDK、サービスの試用版に関するより良いドキュメントまで、さまざまな問題についてオープンソースコミュニティと相談します。 次に何が起こるか見てみたいです。
追加資料
GitHubのオープンソースポータル
- Jeff Wilcoxがオープンソースポータルの歴史を詳しく説明し、そのアーキテクチャについて説明しているブログ 。
- GitHub上のGitHubのAzure ポータル -clone()を使用したり、fork()したり、見たりすることができます。
- AzureエンジニアリングチームがMicrosoftのGitバージョン管理の使用を開始した方法をご覧ください 。
AzureのNode.js
Azureサービスとクラウドインフラストラクチャ