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での瀧田の講演資料になります

Eea9a05e6e222a3d50c73f54a49fadf4?s=128

Recruit Technologies

April 27, 2019
Tweet

Transcript

  1. ⽉4000円でできる? LogicAppsとFunctionsで実現する サーバレスで低コストな⾃動化 株式会社リクルートテクノロジーズ 瀧⽥直⽃ 2019年4⽉27⽇

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

    LogicAppsとFunctions • ⾃動化システムの紹介 2 (C) Recruit Technologies Co., Ltd. All rights reserved.
  3. ⾃⼰紹介 瀧⽥ 直⽃ 株式会社リクルートテクノロジーズ 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. ※スライドは弊社コーポレートサイトで後⽇公開予定です。
  4. リクルートグループについて 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⽇時点) ⽬指す世界観 「あなた」を⽀える存在でありたい
  5. リクルートの事業内容について 5 ライフイベント領域 進学 就職 結婚 転職 住宅購⼊ ⾞購⼊ 出産/育児

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

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

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

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

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

    将来のニーズを⾒据え、新しい技術のR&D・ソリューションの開拓を実現。 検証を続け、いち早く活⽤できるレベルに引きあげることで、中⻑期的なビジネス競争 優位を構築していきます。 ຊ೔͸ ঎༻Πϯϑϥͷ ൣғͷ࿩
  11. インフラの運⽤ 業務内容 リクルートIDポイント事業におけるインフラ環境の運⽤を担当。 オンプレミス環境で通称『ELIXIR』と呼ばれている。 インフラ上ではPontaWebや各リクルートサービスサイトのIDサービスが 可動している。 11 (C) Recruit Technologies

    Co., Ltd. All rights reserved. PontaWeb リクルートのサービス IDΛ࢖ͬͯ ༧໿΍ ϙΠϯτར༻ ͕Ͱ͖Δɻ
  12. 障害通知の課題 課題 オンプレミス環境に数百台のサーバーや機器が存在。 発⽣した障害は監視センターで内容に応じて、通知先と通知⼿段を切り 分けているが、⼈⼿を介しているため時間がかかり、障害対応の初動が 遅れてしまう。 12 (C) Recruit Technologies

    Co., Ltd. All rights reserved. 監視センター 運⽤チームC 運⽤チームB 運⽤チームA ো֐ͷ੾Γ෼͚Λ࣮ࢪ
  13. 障害通知の課題 課題 オンプレミス環境に数百台のサーバーや機器が存在。 発⽣した障害は監視センターで内容に応じて、通知先と通知⼿段を切り 分けているが、⼈⼿を介しているため時間がかかり、障害対応の初動が 遅れてしまう。 13 (C) Recruit Technologies

    Co., Ltd. All rights reserved. 監視センター 運⽤チームC 運⽤チームB 運⽤チームA ো֐ͷ੾Γ෼͚Λ࣮ࢪ ো֐ൃੜʹؾ͕ͭ͘·Ͱ 15෼Ҏ্͔͔Δ৔߹΋ɾɾɾʂ
  14. 当初の改善案と課題 当初の改善案 そもそも、今の監視システム⾃体がなんかイケてないんじゃないか? もっとモダンに全部置き換えてしまおう!と考え、製品選定&検証したり ⾃作で構築をしようと試みた。 14 (C) Recruit Technologies Co.,

    Ltd. All rights reserved. 監視センター 運⽤チームC 運⽤チームB 運⽤チームA
  15. 当初の改善案と課題 当初の改善案 そもそも、今の監視システム⾃体がなんかイケてないんじゃないか? もっとモダンに全部置き換えてしまおう!と考え、製品選定&検証したり ⾃作で構築をしようと試みた。 15 (C) Recruit Technologies Co.,

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

    Ltd. All rights reserved. 有償製品だと ライセンス数が 膨⼤・・・! 当時⾒ていたOSSを使うと機 能が⾜りず追加開発が必要 品質を担保しなが らどうやって変更 していくか? ⼤規模な開発・・・? そもそも当時プログラミング スキルに明るくなかった・・・ 変更する⼯数が 膨⼤・・・! 新しい仕組みの 運⽤⼯数は?
  17. 当初の改善案と課題 そこで⼀度⽴ち返り・・・ やりたかったことって何だったのか? 17 (C) Recruit Technologies Co., Ltd. All

    rights reserved.
  18. 当初の改善案と課題 イケてるモダンなものを 作りたかったんじゃない。 1秒でも早く障害に気がついて サービスを継続させたい。 それを今すぐに実現したい。 18 (C) Recruit Technologies

    Co., Ltd. All rights reserved.
  19. 改善案の変更 改善範囲 そもそも全部やらなくても要件は満たせることに気がついた。 既存のシステムに変更がなく、今すぐ出来て、かつコストを最⼩限にでき る最善策を考えた。 19 (C) Recruit Technologies Co.,

    Ltd. All rights reserved. 監視センター 運⽤チームC 運⽤チームB 運⽤チームA ੾Γ෼͚લͷϝʔϧ͸ग़ͤΔɻ ͜ΕΛͳΜͱ͔ॲཧग़དྷͳ͍͔ʁ มߋ͠ͳ͍ɻ
  20. LogicAppsとFunctions そこで LogicAppsとFunctions! 20 (C) Recruit Technologies Co., Ltd. All

    rights reserved.
  21. 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.
  22. 22 (C) Recruit Technologies Co., Ltd. All rights reserved. Azure

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

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

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

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

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

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

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

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

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

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

    出来上がった⾃動化システム 通知の分岐処理。 εΠονจͰग़ྗ͞Εͨ஋Λݩʹ෼ذͯ͠ Slack௨஌ɻ return_codeɿ”T001” ⼊⼒
  35. コスト 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の実績
  36. 発⽣している運⽤ 36 (C) Recruit Technologies Co., Ltd. All rights reserved.

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

    現在はリファクタリング&機能拡張 LogicAppsを分割することでテストのしやすい構成に変更(後述!) 複雑な条件の処理をFunctionで追加 (営業⽇のみ通知、10分で5回出たら通知など) 拡張中&検討中 Twillio連携による⾃動電話 Elasticsearch連携による障害の分析 LogicApps಺Ͱॲཧͨ͠ม਺ɾύϥϝʔλ ΛָʹJSONม׵→HTTPίʔϧͰ͖Δͷ ͰREST APIͷΞϓϦʹ࿈ܞ͠΍͍͢ɻ
  38. 『瀧⽥ 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Խ͕͓͢͢ΊͰ͢ʂ
  39. まとめ 39 (C) Recruit Technologies Co., Ltd. All rights reserved.

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

    reserved.