Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

⽬次 • ⾃⼰紹介 • リクルートグループと商⽤インフラ • インフラ運⽤の障害通知 • 改善案と課題 • LogicAppsとFunctions • ⾃動化システムの紹介 2 (C) Recruit Technologies Co., Ltd. All rights reserved.

Slide 3

Slide 3 text

⾃⼰紹介 瀧⽥ 直⽃ 株式会社リクルートテクノロジーズ 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. ※スライドは弊社コーポレートサイトで後⽇公開予定です。

Slide 4

Slide 4 text

リクルートグループについて 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⽇時点) ⽬指す世界観 「あなた」を⽀える存在でありたい

Slide 5

Slide 5 text

リクルートの事業内容について 5 ライフイベント領域 進学 就職 結婚 転職 住宅購⼊ ⾞購⼊ 出産/育児 旅⾏ ビジネス⽀援 ⽣活/地域情報 グルメ・美容 ライフスタイル領域 選択・意思決定を⽀援する情報サービスを提供し、 「まだ、ここにない、出会い。」を実現する。

Slide 6

Slide 6 text

リクルートのビジネスモデルについて 6 リクルートには、ユーザーとクライアントという2つのお客様が存在します。 企業と⼈(B to C)、企業と企業(B to B)、⼈と⼈(C to C)、すべての間に⽴ち、 双⽅にとって最適なマッチングを図る「場」を提供しています。 ユーザーとクライアントを新しい接点で結び、 「まだ、ここにない、出会い。」の場を創造する。

Slide 7

Slide 7 text

リクルートテクノロジーズは、リクルートグループのIT・ネットマーケティング領域 のテクノロジー開発を担う会社です。 リクルートテクノロジーズについて 7 リクルート ホールディングス リクルートキャリア リクルート住まいカンパニー リクルートライフスタイル リクルートジョブズ リクルートマーケティングパートナーズ リクルートテクノロジーズ リクルートスタッフィング スタッフサービス・ホールディングス リクルートコミュニケーションズ メディア & ソリューション事業 (株)リクルート ⼈材派遣事業 Recruit Global Staffing B.V. HRテクノロジ― 事業 RGF OHR USA, Inc. その他海外派遣グループ会社 Indeed,Inc.

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

インフラの運⽤ 業務内容 リクルートIDポイント事業におけるインフラ環境の運⽤を担当。 オンプレミス環境で通称『ELIXIR』と呼ばれている。 インフラ上ではPontaWebや各リクルートサービスサイトのIDサービスが 可動している。 11 (C) Recruit Technologies Co., Ltd. All rights reserved. PontaWeb リクルートのサービス IDΛ࢖ͬͯ ༧໿΍ ϙΠϯτར༻ ͕Ͱ͖Δɻ

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

当初の改善案と課題 改善案の課題 数百台のサーバーの監視システムをそう簡単に変えられない。 すべてを置き換える場合、開発⼯数も運⽤⼯数も膨⼤になる・・・ と気がついた。 16 (C) Recruit Technologies Co., Ltd. All rights reserved. 有償製品だと ライセンス数が 膨⼤・・・! 当時⾒ていたOSSを使うと機 能が⾜りず追加開発が必要 品質を担保しなが らどうやって変更 していくか? ⼤規模な開発・・・? そもそも当時プログラミング スキルに明るくなかった・・・ 変更する⼯数が 膨⼤・・・! 新しい仕組みの 運⽤⼯数は?

Slide 17

Slide 17 text

当初の改善案と課題 そこで⼀度⽴ち返り・・・ やりたかったことって何だったのか? 17 (C) Recruit Technologies Co., Ltd. All rights reserved.

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

改善案の変更 改善範囲 そもそも全部やらなくても要件は満たせることに気がついた。 既存のシステムに変更がなく、今すぐ出来て、かつコストを最⼩限にでき る最善策を考えた。 19 (C) Recruit Technologies Co., Ltd. All rights reserved. 監視センター 運⽤チームC 運⽤チームB 運⽤チームA ੾Γ෼͚લͷϝʔϧ͸ग़ͤΔɻ ͜ΕΛͳΜͱ͔ॲཧग़དྷͳ͍͔ʁ มߋ͠ͳ͍ɻ

Slide 20

Slide 20 text

LogicAppsとFunctions そこで LogicAppsとFunctions! 20 (C) Recruit Technologies Co., Ltd. All rights reserved.

Slide 21

Slide 21 text

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.

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

切り分け⾃動化の構成 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ͷঢ়ଶ͕ఀࢭ ͍ͯ͠·͢ɻ” }

Slide 32

Slide 32 text

切り分け⾃動化の構成 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” ⼊⼒ 出⼒

Slide 33

Slide 33 text

切り分け⾃動化の構成 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εϖοΫΛར༻ɻ

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

コスト 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の実績

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

『瀧⽥ 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Խ͕͓͢͢ΊͰ͢ʂ

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

おしまい ご清聴ありがとうございました! 40 (C) Recruit Technologies Co., Ltd. All rights reserved.