エムティーアイ エンジニアブログ

株式会社エムティーアイのエンジニア達による技術ブログ

Microsoft のHackfest に参加してきました!

はじめに

こんにちは。新卒エンジニアの髙橋です。

先日、1/21〜1/25の5日間でMicrosoft が主催するHackfest に参加してきました。

その概要と感想をお伝えします!

①Hackfest とは

Hackfest とは、テーマを決めて、それに対する課題を共有し、Microsoft のエンジニアの方々と一緒に解決していくというなんとも贅沢なイベントです。

課題に対して、Azure のどんなサービスを使ったら良いか、どのようにサービスを組み合わせたら良いかをディスカッション形式で進めていき、実際に構築するといった内容となります。

今回は、弊社で新たにデータ取り込みシステムをAzure を使って構築するため、そのアーキテクチャを一緒に考えながら作成しました。

作成するシステムは、社内外のさまざまなデータを取り込み、アプリケーションで用いるだけでなく、AI による分析や、社外へのデータの受け渡し等が想定されていました。

また、データの種類によっては、取り込みの速度や料金も考慮に入れる必要がありました。

それを踏まえた上で情報共有を行い、Hackfest がスタートしました。

f:id:mti-techblog-writer:20190205172213j:plain

②行ったこと

先述の通り、今回のテーマは、

「社内外のさまざまなデータを取り込む」

となっています。

事前の打ち合わせで、Data Factory からDatabricks を呼び出し、Cosmos DB に格納することは決まっていたため、はじめにData Factory チームとDatabricks チームに分かれて作業を開始しました。

それぞれのチームでディスカッションをしてすり合わせの繰り返しです。

取り込むデータの形式は、txt 形式やcsv 形式、netCDF 形式等、複数存在していました。

また、取り込みの頻度や速度要件もデータの種類ごとに異なっていたため、 ディスカッションをして、以下のような二つのパターンの設計をしたほうが良いという結論になりました。 

  • コールドパス: 取り込み速度にリアルタイム性が不要(1~5分程度で反映で良い)なデータ
  • ホットパス: リアルタイムな取り込み速度が求められるデータ

今回はそのうち、コールドパスのみを実装しました。

使ったAzure のサービスは以下の通りです。

  • Data Factory
  • Databricks
  • Data Lake Storage Gen2
  • Files
  • Cosmos DB
  • Function App

最終的な設計は、以下のようになりました。

  1. 1~5分間隔および手動でData Factory のPipeline をトリガーする

  2. Files に置かれた複数のファイルをData Lake Storage Gen2 にコピーする

  3. Function App を用いてコピー元のFiles のファイルを削除する(tar やgzip の解凍処理が必要な場合はここで行う)

  4. コピーしたファイルの名前のリストを取得する

  5. Data Lake Storage Gen2 がマウントされているDatabricks に名前のリストを渡して、加工した後、Cosmos DB に格納

その他、Microsoft の方に、Azure DevOps 上でのCI / CD にDocker を使う方法や、Cosmos DB に大量データを入れる際に一時的にRU を上げる設計などを教えていただきましたが、時間の都合上実装までは至りませんでした。

f:id:mti-techblog-writer:20190205172220j:plain

③感想

英語スキルの重要性

「やべえ...英語聞き取れねえ...」

Hackfest 初日に最初に思ったことです。

今回は、海外からもエバンジェリストの方が来てくれていたのですが、恥ずかしながら自分の耳では英語が半分くらいしか聞き取れず...。

現代社会では英語を使ってやり取りすることも、もはや当たり前となっていますが、エンジニアにとって英語の能力は必須スキルだということを痛感しました。

今後はエムティーアイ社内で行われている英語研修なども活用して、英語スキルを身につけていきたいと思います。

新しいサービスを使う価値

今回、Hackfest 開催時にはまだプレビュー段階のData Lake Storage Gen2 を実験的に使っています。

新しいサービスを実際に使ってみる価値として、他サービスとの比較・検討ができるという点が大きいと感じました。

何か解決したい課題があったときに、既存の技術・サービスで解決できる方法を検討し、採用するのは悪いことではないと思います。

しかし、クラウド技術はどんどん向上し、既存の技術・サービスより "安く" "簡単に" 課題解決できるサービスが多く生まれ続けています。

そのため、エンジニアにとって、新しい技術・サービスを使ってみることは、よりローコストで課題解決ができる選択肢を増やすことに繋がると感じました。

Microsoft の方と一緒にものづくりをするということ

Hackfest の一番の魅力は、Microsoft のエンジニアと一緒にものづくりができるというところにあると思います。

Azure はドキュメントも豊富にあるため、自ら調査してサービスを設計・構築することは難しくありません。

しかし、一つの課題を解決するためのソリューションは無限に存在し、より良い設計・構築をするのには時間がかかります。

その最もスピーディな解決策が、実際にAzure を開発しているMicrosoft に聞くということだと思います。

実際に、MicrosoftのエンジニアにHackfest 前に構築した内容を見ていただき、良いところと改善すべきところを指摘していただきました。

また、わからない技術についても、丁寧に教えてくださるので、非常に助かりました。

今後も、よりよいものづくりをするため、ぜひ一緒になって開発をしていきたいと思いました。

おわりに

これからもどんどん進化していくAzure のサービスをしっかりキャッチアップして、現場で使っていこうと思いました。

改めて、このような貴重な経験をさせていただいたMicrosoft のエンジニアの皆さん、チームの皆さん、ありがとうございました!

f:id:mti-techblog-writer:20190205165940j:plain