Upgrade to Pro — share decks privately, control downloads, hide ads and more …

月4000円でできる?LogicAppsとFunctionsで実現するサーバレスで低コストな自動化

 月4000円でできる?LogicAppsとFunctionsで実現するサーバレスで低コストな自動化

2019/4/27 Global Azure Bootcamp 2019@Tokyoでの瀧田の講演資料になります

Recruit Technologies

April 27, 2019
Tweet

More Decks by Recruit Technologies

Other Decks in Technology

Transcript

  1. ⽬次 • ⾃⼰紹介 • リクルートグループと商⽤インフラ • インフラ運⽤の障害通知 • 改善案と課題 •

    LogicAppsとFunctions • ⾃動化システムの紹介 2 (C) Recruit Technologies Co., Ltd. All rights reserved.
  2. ⾃⼰紹介 瀧⽥ 直⽃ 株式会社リクルートテクノロジーズ ITインテグレーション本部 サイトリライアビリティエンジニアリング2部 経歴 2011〜2016 製薬業界様向けIT会社 -

    営業⽀援システムのインフラ全般構築担当 2016/9〜 リクルートテクノロジーズ⼊社 - 商⽤インフラと社内インフラを担当 最近の技術興味 ・Linuxカーネル、Docker、Kubernetes、GoLang ・データ操作、ログまわりが好き Elasticsearch、fluentd/embulk、Neo4j、SQL、Cypher・・・ 3 (C) Recruit Technologies Co., Ltd. All rights reserved. ※スライドは弊社コーポレートサイトで後⽇公開予定です。
  3. リクルートグループについて 4 (C) Recruit Technologies Co., Ltd. All rights reserved.

    創業 1960年3⽉31⽇ 「⼤学新聞広告社」としてスタート グループ 従業員数 40,152名 (2018年3⽉31⽇時点) 連結売上⾼ 21,733億円 (2017年4⽉1⽇〜2018年3⽉31⽇) 連結経常利益 1,917億円 (2017年4⽉1⽇〜2018年3⽉31⽇) グループ 関連企業数 361社 (連結対象⼦会社、2018年3⽉31⽇時点) ⽬指す世界観 「あなた」を⽀える存在でありたい
  4. リクルートの事業内容について 5 ライフイベント領域 進学 就職 結婚 転職 住宅購⼊ ⾞購⼊ 出産/育児

    旅⾏ ビジネス⽀援 ⽣活/地域情報 グルメ・美容 ライフスタイル領域 選択・意思決定を⽀援する情報サービスを提供し、 「まだ、ここにない、出会い。」を実現する。
  5. リクルートのビジネスモデルについて 6 リクルートには、ユーザーとクライアントという2つのお客様が存在します。 企業と⼈(B to C)、企業と企業(B to B)、⼈と⼈(C to C)、すべての間に⽴ち、

    双⽅にとって最適なマッチングを図る「場」を提供しています。 ユーザーとクライアントを新しい接点で結び、 「まだ、ここにない、出会い。」の場を創造する。
  6. リクルートテクノロジーズは、リクルートグループのIT・ネットマーケティング領域 のテクノロジー開発を担う会社です。 リクルートテクノロジーズについて 7 リクルート ホールディングス リクルートキャリア リクルート住まいカンパニー リクルートライフスタイル リクルートジョブズ

    リクルートマーケティングパートナーズ リクルートテクノロジーズ リクルートスタッフィング スタッフサービス・ホールディングス リクルートコミュニケーションズ メディア & ソリューション事業 (株)リクルート ⼈材派遣事業 Recruit Global Staffing B.V. HRテクノロジ― 事業 RGF OHR USA, Inc. その他海外派遣グループ会社 Indeed,Inc.
  7. リクルートテクノロジーズの役割について 8 (C) Recruit Technologies Co., Ltd. All rights reserved.

    技術・ソリューションを磨き続け、リクルートの各サービスがもつ価値を最⼤限に発揮 できるようビジネスへ実装。 ITの側⾯からサービスを進化させることを通じて、世の中に新しい価値を提供していき ます。
  8. リクルートテクノロジーズの事業内容について 9 (C) Recruit Technologies Co., Ltd. All rights reserved.

    将来のニーズを⾒据え、新しい技術のR&D・ソリューションの開拓を実現。 検証を続け、いち早く活⽤できるレベルに引きあげることで、中⻑期的なビジネス競争 優位を構築していきます。
  9. リクルートテクノロジーズの事業内容について 10 (C) Recruit Technologies Co., Ltd. All rights reserved.

    将来のニーズを⾒据え、新しい技術のR&D・ソリューションの開拓を実現。 検証を続け、いち早く活⽤できるレベルに引きあげることで、中⻑期的なビジネス競争 優位を構築していきます。 ຊ೔͸ ঎༻Πϯϑϥͷ ൣғͷ࿩
  10. 当初の改善案と課題 当初の改善案 そもそも、今の監視システム⾃体がなんかイケてないんじゃないか? もっとモダンに全部置き換えてしまおう!と考え、製品選定&検証したり ⾃作で構築をしようと試みた。 15 (C) Recruit Technologies Co.,

    Ltd. All rights reserved. 監視センター 運⽤チームC 運⽤チームB 運⽤チームA モダンで、イケてて、カッコイイ!! そんなイケメン監視システムに してみせる・・・!!!
  11. 当初の改善案と課題 改善案の課題 数百台のサーバーの監視システムをそう簡単に変えられない。 すべてを置き換える場合、開発⼯数も運⽤⼯数も膨⼤になる・・・ と気がついた。 16 (C) Recruit Technologies Co.,

    Ltd. All rights reserved. 有償製品だと ライセンス数が 膨⼤・・・! 当時⾒ていたOSSを使うと機 能が⾜りず追加開発が必要 品質を担保しなが らどうやって変更 していくか? ⼤規模な開発・・・? そもそも当時プログラミング スキルに明るくなかった・・・ 変更する⼯数が 膨⼤・・・! 新しい仕組みの 運⽤⼯数は?
  12. Azure Logic Appsとは Azure LogicAppsとは システムやサービス、アプリケーション間をつなぐAzure上のサービス。 GUIで設定可能で、ノンプログラミングでアプリケーションを構築できる。 サーバーレスなのでサーバメンテナンスなどの運⽤は発⽣しない。 21 +

    Office365やSalesforceなどの200を超 えるコネクタがあり、それぞれイベント をトリガーとして実⾏できる。 またスケジュール実⾏やHTTPで受信し たら実⾏することもできる。 Azure Functionを実⾏、SQL Serverか らレコードを取得するといったアクショ ンの他、条件⽂やswitch⽂、ループなど のフォロー制御もできる。 処理結果をSlackへ通知したり、メール を送信したり、DBへレコードを追加した りなどを⾏う。 (C) Recruit Technologies Co., Ltd. All rights reserved.
  13. 22 (C) Recruit Technologies Co., Ltd. All rights reserved. Azure

    LogicAppsの作り⽅ 基本的にGUIで処理の流れを設定していく。 ॲཧͷྲྀΕΛ GUIͰઃఆ͍͖ͯ͠ɾɾɾ Azure Logic Appsとは
  14. 23 (C) Recruit Technologies Co., Ltd. All rights reserved. Azure

    LogicAppsの作り⽅ 基本的にGUIで処理の流れを設定していく。 ॲཧͷ৚݅ΛGUIͰઃఆ͠ ͍ͯ͘ɻ Azure Logic Appsとは
  15. 24 (C) Recruit Technologies Co., Ltd. All rights reserved. Azure

    LogicAppsの作り⽅ 基本的にGUIで処理の流れを設定していく。 αʔϏε࿈ܞ͸ ༧Ί༻ҙ͞Ε͍ͯΔίωΫλ͕͋Ε͹ ؆୯ʹॲཧΛઃఆͰ͖Δɻ ্ྲྀͷϑϩʔͰॲཧͨ͠ύϥϝʔλʔ ͕࢖͑Δͷ͕ϙΠϯτʂ Azure Logic Appsとは
  16. Azure Functionsとは 25 (C) Recruit Technologies Co., Ltd. All rights

    reserved. Azure Functionsとは いきなりコード開発が始められてコード以外のことは考えなくて良い。 イベントをトリガーとして実⾏され、実⾏時間だけの課⾦形態も選べる。 サーバーレスなのでサーバメンテナンスなどの運⽤は発⽣しない。 ίʔυ ࣮ߦϩά ೖྗ ग़ྗ Functionsの開発画⾯ 実はWebブラウザだけ で開発できる機能が 揃っており、気軽に始 めることができる。 この環境を作るまで1分 もかからない・・・!
  17. Azure Functionsとは 26 (C) Recruit Technologies Co., Ltd. All rights

    reserved. Azure Functionsのトリガー HTTPの要求を受信したら実⾏やスケジュール実⾏など、様々なトリガー 条件を指定できる。
  18. Azure Functionsとは 27 (C) Recruit Technologies Co., Ltd. All rights

    reserved. Azure Functionsのトリガー HTTPの要求を受信したら実⾏やスケジュール実⾏など、様々なトリガー 条件を指定できる。 今回はHTTPでパラメータを受信して 結果を返すトリガーを利⽤!
  19. 切り分け⾃動化の構成 28 (C) Recruit Technologies Co., Ltd. All rights reserved.

    出来上がった⾃動化システム GUIの設定とFunctionsを使って完成。 ※システムロゴは弊社メンバーが作成 したものでAzureでは作れません。 通称『アルくん』と呼ばれています。
  20. 切り分け⾃動化の構成 29 (C) Recruit Technologies Co., Ltd. All rights reserved.

    出来上がった⾃動化システム 内容を少し紹介させていただきます。
  21. 切り分け⾃動化の構成 30 (C) Recruit Technologies Co., Ltd. All rights reserved.

    Office365ʹಧ͍ͨ ো֐ϝʔϧΛ ForจͰ1݅ͣͭ ॲཧ 出来上がった⾃動化システム メールの取得。
  22. 切り分け⾃動化の構成 31 (C) Recruit Technologies Co., Ltd. All rights reserved.

    出来上がった⾃動化システム メールを後続のフローで処理しやすいように加⼯。 ϝʔϧΛύʔεͯ͠JSON΁ม׵ [email protected] ϗετ໊:ap-server ೔࣌ɿ2019/04/27 10:00 ॏେ౓ɿError ϝοηʔδ: appͷঢ়ଶ͕ ఀࢭ͍ͯ͠·͢ɻ { hostnameɿ”ap-server”, datetimeɿ”20190427 10:00”, loglevelɿ”Error”, message: “appͷঢ়ଶ͕ఀࢭ ͍ͯ͠·͢ɻ” }
  23. 切り分け⾃動化の構成 32 (C) Recruit Technologies Co., Ltd. All rights reserved.

    出来上がった⾃動化システム 切り分け処理。 ύʔεޙͷύϥϝʔλΛϧʔϧςʔϒϧͱϚονϯάͤͯ͞໭Γ஋Λฦ͢ hostnameɿ”ap-server” loglevelɿ”Error” message: “appͷঢ়ଶ͕ఀࢭ͍ͯ͠·͢ɻ” hostname loglevel message return_code ap-server% Error% %の状態が停⽌% T001 % Emergency% % T002 % % %ノード停⽌ T003 return_codeɿ”T001” ⼊⼒ 出⼒
  24. 切り分け⾃動化の構成 33 (C) Recruit Technologies Co., Ltd. All rights reserved.

    出来上がった⾃動化システム 切り分け処理。 ύʔεޙͷύϥϝʔλΛϧʔϧςʔϒϧͱϚονϯάͤͯ͞໭Γ஋Λฦ͢ hostnameɿ”ap-server” loglevelɿ”Error” message: “appͷঢ়ଶ͕ఀࢭ͍ͯ͠·͢ɻ” hostname loglevel message return_code ap-server% Error% %の状態が停⽌% T001 % Emergency% % T002 % % %ノード停⽌ T003 return_codeɿ”T001” ⼊⼒ 出⼒ ཪͰ͸Azure SQL Database (SQL Server)Λར༻ɻ ϑϧϚωʔδυͷΫϥ΢υDBͰ ࣮͸ͪ͜Β΋OSӡ༻ͳͲ͕ແ͍ɻ ̍ςʔϒϧͷΈͳͷͰ ݄¥632ͷDBεϖοΫΛར༻ɻ
  25. 切り分け⾃動化の構成 34 (C) Recruit Technologies Co., Ltd. All rights reserved.

    出来上がった⾃動化システム 通知の分岐処理。 εΠονจͰग़ྗ͞Εͨ஋Λݩʹ෼ذͯ͠ Slack௨஌ɻ return_codeɿ”T001” ⼊⼒
  26. コスト 35 (C) Recruit Technologies Co., Ltd. All rights reserved.

    使⽤サービス LogicApps Office365/Slackコネクタ、For each、スイッチ、JSON解析を利⽤ Functions ※コードを保存するストレージアカウント含む SQL Database ルールテーブル1つのみ コストサマリ 2019/01/01〜01/31でメールを約1万件処理して合計¥3,876の実績
  27. 発⽣している運⽤ 36 (C) Recruit Technologies Co., Ltd. All rights reserved.

    発⽣している運⽤ ルールテーブルの更新のみ。 そもそもサーバーが(⾒かけ上)存在しないのでサーバー運⽤が無い。 hostname loglevel message return_code ap-server% Error% %の状態が停⽌% T001 % Emergency% % T002 % % %ノード停⽌ T003 ӡ༻ʹձΘͤͯϧʔϧςʔϒϧΛ ݄̍ɼ̎ճߋ৽ͷΈʂ αʔόʔϨεͳͷͰ αʔόʔӡ༻͕ൃੜ͠ͳ͍ʂ
  28. 現在の姿と拡張 37 (C) Recruit Technologies Co., Ltd. All rights reserved.

    現在はリファクタリング&機能拡張 LogicAppsを分割することでテストのしやすい構成に変更(後述!) 複雑な条件の処理をFunctionで追加 (営業⽇のみ通知、10分で5回出たら通知など) 拡張中&検討中 Twillio連携による⾃動電話 Elasticsearch連携による障害の分析 LogicApps಺Ͱॲཧͨ͠ม਺ɾύϥϝʔλ ΛָʹJSONม׵→HTTPίʔϧͰ͖Δͷ ͰREST APIͷΞϓϦʹ࿈ܞ͠΍͍͢ɻ
  29. 『瀧⽥ LogicApps』で検索 おまけ LogicAppsは便利だけど・・・ GUIで簡単に構築できるため、 調⼦に乗って作っていくとカオスになってくる・・・! 38 (C) Recruit Technologies

    Co., Ltd. All rights reserved. ʰAzure Logic Appsʹ͓͚Δ ϦϑΝΫλϦϯάʱΛࢀরʂ https://speakerdeck.com/rtechkouhou/azure-logic- appsniokeru-rihuakutaringu ΧΦεʹͳ͖ͬͯͨΒ ςετˍ֦ு͠΍͍͢Α͏ʹϦϑΝΫλϦϯά͠ ෳࡶͳॲཧ͸LogicApps্Ͱ࣮૷͢Δͱٯʹઃఆ͕ େมͳͷͰͲ͔͜ͰFunctionԽ͕͓͢͢ΊͰ͢ʂ
  30. まとめ 39 (C) Recruit Technologies Co., Ltd. All rights reserved.

    ü カッコイイ!モダン!に踊らされずに本来の課題に向き合う。 ü かっこよくしたい!という欲求は必要だと思うが、本来の⽬的に⽴ち返る。 ü LogicAppsとFunctionsは気軽に今すぐに始められる。 ü 開発、運⽤、コスト⾯で⼩さく始められて、今すぐ実装できる。 ※もちろん巨⼤になっていけば開発、運⽤、コスト⾯は増えていくことに注意! ü サーバーレスでサーバー運⽤から解き放たれるので『本来やりたい事』の 開発に集中できる。