
ハーバード大学はなぜ謎の Microsoft Azure プロジェクトについて話したがらないのでしょうか?

Microsoft Azure は、ハーバード大学の名門 CS50 コンピュータサイエンス クラスという知名度の高い顧客を獲得したようですが、誰もそのことについて話したがっているわけではありません。

4月に最初に投稿された、現在は削除されているMicrosoftのGitHubアカウントのウェブページには、MicrosoftのAzureチームと「米国の主要研究大学」との最近の共同作業の概要が記載されていました。このプロジェクトでは、GitHubとCodeshipの協力を得て、以前はAmazon Web Servicesと大学のハードウェアで実行されていた社内アプリケーションの一部をAzureに展開しました。
確かに、米国の多くの主要研究大学は最新の開発手法やクラウド コンピューティングに取り組んでいますが、URL に有名なコンピュータ サイエンスのクラス名 (CS50.html) が含まれている場合、誰について話しているのかを把握するのはそれほど難しくありません。
CS50はハーバード大学のコンピュータサイエンス入門クラスで、マーク・ザッカーバーグのようなゲスト講師を招いてきました。ザッカーバーグはハーバード大学を中退しながらも、それなりの収入を得ています。主任教授のデイビッド・マラン氏は著名な講演者で、「CS50」の商標登録を出願し、昨年ケンブリッジ大学で大きな話題となりました。
月曜日にGeekWireから、このコラボレーションを紹介するGitHubページについてメールを受け取ったMalan氏は、「実は今もAWSを使っていますが、毎年夏になると、翌年に向けてアプリのアーキテクチャを再評価する傾向があり、AWS、Azure、Googleなどが常に候補に挙がっています。今のところ計画はありませんが、夏の終わり頃に何か決定があれば、喜んでご連絡いたします!」と返信しました。
Microsoft の Github の投稿では、Azure の使用についてもう少し明確に述べられており、たとえば次のように述べられています。
スタッフは、ITインフラを拡張することなくクラスを拡張できる環境を求めています。既存のコンテナ環境をクラウドに拡張することで、多額の追加ハードウェアの購入や初期投資をすることなく成長したいと考えています。また、現在AWSでアプリケーションを稼働させていますが、プロバイダーが1社しかないことに伴うロックインやリスクを軽減したいと考えています。…
このプロジェクトは成功しました。大学の導入プロセスを効率化し、CodeshipユーザーにAzureをパイプラインに統合するための、十分に文書化されたソリューションを提供しました。目標達成までの手順を詳細に記録することで、Codeshipは自社サイトに新しいドキュメントを容易に作成できました。これにより、将来、同じDevOpsツールチェーンを使用してプロセスを自動化したいユーザーの作業負担を軽減できます。
月曜日の午後のメールのやり取りの後、GitHubのページは削除されましたが、URLは残っています。Googleのキャッシュでその全容が明らかになりました。抜粋はこの記事の下部をご覧ください。
マラン氏は火曜日、オフィスを離れていると述べ、問い合わせを上級指導教官のダグ・ロイド氏に回した。ロイド氏は、ハーバード大学とマイクロソフトの共同作業に関するGitHubの投稿を「熱心すぎる」と繰り返し批判した。しかし、ロイド氏は日々の開発プロセスには関与しておらず、ハーバード大学とマイクロソフト間のいかなる協議にも参加していないとも述べた。
マイクロソフトは私たちの問い合わせに対してコメントを拒否した。
ハーバード大学がなぜマイクロソフトとのプロジェクトを秘密にしておきたいのかは完全には明らかではない。CS50で発覚したばかりの不正行為スキャンダルよりも、議論の話題としては良いように思える。企業や組織の中には、利用しているテクノロジーベンダーについて語らないという方針を持つところもあるが、マラン氏とCS50はカンファレンスサーキットで積極的に活動しており、昨年はDockerConとAWS re:Inventで講演した。
以下は現在削除された投稿からの抜粋です(全体で 3,000 語以上あります)。
米国の大手研究大学がAzureとCodeshipを活用してパイプラインにCI/CDを適用した方法
2017年4月14日米国の主要研究大学は、Microsoft と提携して Microsoft Azure インフラストラクチャ、Web アプリ、DevOps のベストプラクティスを習得・導入し、教室のインフラストラクチャ アプリを Azure クラウド サービスに迅速かつ容易に、そして一貫して導入するというニーズに的確に対応しました。これには、ローカル ハードウェアで実行されている既存のアプリをクラウドに移行することも含まれています。
このプロジェクトは3週間かけて進められ、Azureに必要なすべてのインフラストラクチャを構築し、すべてを完全に自動化して、すべてのアプリケーションをGitHubリポジトリに接続するだけでデプロイできるようにすることを前提としていました。教授の言葉を借りれば、「GitHub、Codeship、Azureを連携させ、すべてを接続してほしい」とのことでした。
顧客プロフィール
この米国の大学は世界クラスの大学であり、その研究と卒業生で広く知られています。現時点では匿名を希望しているため、本文書では「大学」と表記します。受講者数が最も多いコースの一つは、コンピュータサイエンスとプログラミングの技術に関する入門コースです。このコースでは、アルゴリズム的な思考法と効率的な問題解決法を学生に教えます。トピックには、抽象化、アルゴリズム、データ構造、カプセル化、リソース管理、セキュリティ、ソフトウェアエンジニアリング、Web開発などが含まれます。
このクラスでは、学生向けに40種類以上のアプリケーションとサービスを提供しています。オンプレミスでホストされているものもあれば、Amazon Web Services (AWS) クラウドプラットフォームで提供されるものもあります。アプリケーションとサービスの提供には多様な言語が使用されているため、学生は独自のアプリケーションを、指導する原理をリアルタイムで実践する例として活用できます。
問題提起:
スタッフは、ITインフラを拡張することなく、クラスを拡張したいと考えています。既存のコンテナ環境をクラウドに拡張することで、多額の追加ハードウェアの購入や初期投資をすることなく、成長を実現したいと考えています。また、現在AWSでアプリケーションを稼働させていますが、プロバイダーが1社しかないことに伴うロックインやリスクを軽減したいと考えています。プロジェクトはドキュメント化されるため、TAの追加は最小限のトレーニングで行えます。大学側は、他のアプリケーションの移植のベースとして使用できるシンプルなアプリを1つ立ち上げる支援を私たちに求めています。CI/CDを含め、Azure(任意の言語)へのデプロイで展開できるはずです。教授はCI/CDにCodeshipを希望していましたが、必須ではありませんでした。コードリポジトリとしてGitHubを使用することが必須でした。
教授は既に DevOps のツールとプラクティスに精通しており、その適用方法も熟知しているため、このプロジェクトにマイクロソフトを起用することを希望しました(教授は現在のプロセスを社外に公開することに抵抗がありました)。アプリケーション開発パイプラインを段階的に説明するために、私たちは完全に最適化された環境がどのようなものかを示しました。これにより、教授は TA が最小限の無駄、リードタイム、処理時間で成功するアプリケーションを開発するための優れた教材を得ることができました。コード開発に専従する従業員がいないこの教育現場では、TA がスケジュールに沿って作業を進める際に、多くの無駄やリードタイム/ラグタイムが発生する可能性がありました。最適化された新しい環境では、個々の TA は時間があるときにいつでも作業することができ、それは多くの場合ほぼ毎日です。
私たちが定義し、提供したプロジェクトは、まさに彼らが求めていたものでした。
スタッフが新しいプロセスを本番環境で運用できるようになるまでには数ヶ月かかる見込みです。この規模の授業の途中で大幅な変更を加えることは現実的ではないため、完全な導入と移行は夏まで待つことになります。ソリューションが完全に導入されると、授業期間中のアプリやサービスの導入に関する制限は最小限に抑えられ、多くの場合は完全に解消されます。これはスタッフと大学にとって非常に大きな価値をもたらすでしょう。教授は、私たちが構築し、提供したプロセスと実践に満足していました。また、AWSからAzureへの移行が容易になったことにも満足していました。授業期間中のため、今すぐ移行を開始することはできませんが、夏にはAzureを積極的に活用する予定です。
ソリューション、手順、配信
教授は、TA(テクニカルアシスタント)に直接作業させるのではなく、Microsoftにすべての作業を任せることを選択しました。彼は、ドキュメントを通して、教授とチームにすべての仕組みを説明させたいと考えていました。このアプローチにより、スタッフは最初のデプロイメントを進める際にドキュメントを精査することができました。TAの昇進や異動に伴い開発スタッフが定期的に交代する環境に最適なソリューションでした。また、このプロジェクトに携わるMicrosoftエンジニアにとって、単一のプロジェクトでコーディングスキルとドキュメント作成スキルを試す絶好の機会でもありました。オープンソースとCodeshipとの直接的なコラボレーションを通じて、ドキュメントを広く公開することで、私たちはさらに大きな価値を見出しました。
クラスでは既に一部のアプリをオンプレミスからAWSに移行していましたが、そのソリューションには課題と限界があることに気付きました。例えば、GitHub、Codeship、AWSを使用した際、アプリは動作しましたが、いくつかの問題(「VMごとに1つのコンテナ」など)が見られました。私たちの使命は、これらの「問題」や限界を一切排除し、正しく移行することでした。これにより、クラスはアプリケーションにかかるコストを削減し、AzureとAWS間の移行を簡素化することができました。
結論
このプロジェクトは成功しました。大学の導入プロセスを効率化し、CodeshipユーザーにAzureをパイプラインに統合するための、十分に文書化されたソリューションを提供しました。目標達成までの手順を詳細に記録することで、Codeshipは自社サイトに新しいドキュメントを容易に作成できました。これにより、将来、同じDevOpsツールチェーンを使用してプロセスを自動化したいユーザーの作業負担を軽減できます。
公式コードシップドキュメント
このプロジェクトは、大学が既に DevOps プラクティス (コンテナを使用) を適用していたとしても、それらのプラクティスを掘り下げて無駄を探し、遅延や無駄の原因となっている穴を埋めることに大きな価値があることを示して、DevOps の取り組みを「前進」させる能力を大学に提供しました。大学は今、自分たちのやり方をざっと見直すだけでは十分ではないことを理解しています。無駄がどこに存在するかを評価し、それを排除する方法を模索することで、何が可能かを検討することがはるかに重要です。単に「DevOps プラクティスを適用する」だけでは十分ではありません。私たちは、無駄がさまざまな形で発生することを示しました。新しい TA が立ち上げるまでの時間、現在のプラクティスへの一貫性の適用、そしてデプロイメント方法とツールの最適化による実際のコスト削減という点で、無駄の問題を発見し解決しました。
Codeship、Docker、Azure Container Service、Linux VMを活用したCI/CDを活用したソリューションが提供されました。これらのテクノロジーとプロセスにより、時間とコストの削減が実現します。
課題と解決策
私たちが直面した課題とその解決方法は次のとおりです。
TA の立ち上げ時間は以前は数週間または数か月でしたが、今では数時間です。
コンテナごとに 1 つの VM を実行するのは無駄でしたが、現在では 1 つの VM で複数のコンテナを実行できます。
インフラストラクチャ (VM) の管理は困難でしたが、Azure Container Service を実行することでこの課題は完全に解消されました。
このプロジェクトの将来的な強化は、開発パイプライン全体を精査に公開することで実現できます。大学は、より良い結果を得るために、現在のプロセスをより深く調査する方法を習得しました。次に、Azure上で稼働するシステムの監視およびアラート機能の拡張にさらに取り組む予定です。