Taste of Tech Topics

Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

ServerlessDays Tokyo 2019参加記

こんにちは、新人エンジニアの@yktm31です。
先日開催された、ServerlessDays Tokyo 2019に参加したのですが、レベルもボリュームも最高だったのでレポートをしたいと思います!

ServerlessDaysは、サーバーレスを使って得た知見や経験を共有するカンファレンスで、
10/21(Sun)と10/22(Mon)の2日間に渡り開催されました。
初日はハンズオン/ワークショップ、2日目はカンファレンスという日程で、私は両日参加しました。

会場の様子はこんな感じでした。
f:id:acro-engineer:20191118172113p:plain

1日目

Microsoftさんによるワークショップと、@toshi0607さんによる「Knativeで作るDIY FaaS」というワークショップを受けました。

1. Microsoftさんによるワークショップ

2コースに別れていて、一つはテキストに従って進めるハンズオン形式、もう一つはチームで課題をクリアするワークショップ形式がありました。
私はその中のワークショップを選びました。

コンテンツとしては、サーバレスなアプリケーションを構築する上で主に利用するサービスを一気に学べる、充実した内容でした。
Azure Functionsのみならず、Cosmos DB・Logic App・Application Insightsを組み合わせて実際的に作るという点が面白かったです。
個人的には、Azure Functionsのデータバインディングなど、実践的な使い方も学ぶことができたのがよかったです。

当日の資料は以下のリンクから飛べます。
github.com

2. @toshi0607による「Knativeで作るDIY FaaS」

GCP上でk8sクラスタを作成し、Lambdaっぽいことができるプラットフォームを構築しました。
丁寧かつわかりやすい資料(下記リンク)に非常に助けられて、k8s初心者の私でも無事構築できました。
github.com

2日目

2日目はカンファレンス、一つ一つのセッションが先進的かつプラクティカルな知見の塊で、非常に濃密でした。
この記事では、その中でも特に、印象に残ったものを取り上げて紹介したいと思います。
当日の様子は、togetterも参考になると思います。
togetter.com


1. 10x Serverless Product Development for a Startup with Microsoft Azure


EBILABさんは、伊勢の老舗食堂のゑびやさんが立ち上げた、データ活用のためのスタートアップだそうです。
EBILABさんがサーバレスアーキテクチャを採択し、10倍の業務効率改善をしたという話でした。

学習コストが低いPython × Azure Functionでシステムを構成。
協力会社に依頼できる部分は依頼し、エンジニアが本当に必要な箇所の設計・開発に注力できるようにしているそうです。
Pythonであればローコンテキストでコーディングができ、サーバレスだと責務分離がしやすいので、協力会社に作業を渡しやすいとのことでした。

その結果、3,4人ほどの小規模なチームで開発を高速に回せるようになり、
事業を進めるうえで「なるべくエンジニアがボトルネックにならないように」を実現しているそうです。
スタートアップという形にも沿うような、システムづくりやサービス形態を実現できるのはサーバレスのいいところだと感じました。

2. Keynote: Infinite Scaling, Finite Failures: Serverless Resiliency Patterns and Lessons Learned

AzureのDurable Functions 2.0(プレビュー)を使えば簡単に障害回復を実現できるという話でした。
サーバレスシステムでは、データソース、サードパーティAPI、ネットワークなど
依存関係がある箇所どこでも障害が起こり得ます。

サーバレスで障害が起きたとき、回復の手段として多く取られる手法はRetry(再試行)です。
しかし、再試行ではうまく行かないケース、(例えば、削除処理がある関数実行中に障害が起きるなど)があります。

一つ一つの関数がidempotency(冪等性)を担保するために、サーキットブレーカーパターンと言うものがあり、
closed/open/half-open という状態を持って、関数の稼働を制御するそうです。

サーキットブレーカ自体の実装は大変ですが、AzureのDurable Functions 2.0(プレビュー)を使えば簡単に実現できるとのことでした。
今はプレビュー段階ですが、是非触ってみたい機能ですね。

3. グローバル展開のコネクティッドカーを支える大規模サーバーレスシステム事例

実は、弊社マネージャの鈴木 貴典(@takanorig)が、トヨタさん・AWSさんと一緒に登壇していました!
(このセッションを聞くことが目的の一つでもありましたw)

発表されていた内容は、「コネクティッドカー」として、
車と、ドライバーや各種サービスとを繋ぐシステムを、サーバレスで構築した事例の話でした。

サーバレスを用いた理由として、徹底的にムダを削除し、価値ある仕事にコミットするため、というのが印象に残っています。

・多くの車が動くのは日中の時間帯であり、昼と夜とでアクセス数の上下が激しい
・購入された車は数年以上乗り続けられるため、それに合わせたサービスの保守が発生する
といった、「車ならではの特性」を踏まえ、サーバレスを利用してリソースの最適化と運用コストの削減を実現。

運用コストが減った分、新規サービス開発や既存サービスの改善に時間をさけられるようになったようです。

また、大規模サーバレスシステムのリアルな構成・運用の話もあり、かなり実践的な内容だったと思います。

今回、トヨタさんのシステムが発表されるだけでもレアなケースとのこと。
業務的にかなりリアルな内容を含んでいるため、詳細については残念ながらオフレコになっています。
togetterで雰囲気を感じてもらえたらと思います!

4. 空調設備向けIoTシステムにおけるクラウドランニングコスト

空調同士をインターネットに繋いでIoT化・プラットフォーム化するというプロジェクトについての話でした。

システム規模は500万台、1min毎にデータ発生し、同時アクセス9万人という大規模IoTデータを扱うにあたり、
IoT×サーバレスでは、リクエストの数によって青天井にスケールしてしまう可能性がある。
その問題に対処すべく、DynamoDB設計の試行錯誤が、失敗例も含め具体的に発表されていました。
資料はこちらにアップされています。

サーバレスも一つ使い方を誤ると、膨大なコストにつながってしまうことがわかりました。
明日は我が身として、サーバレスを使うときのコストが最小になるような設計が必要だと感じました。

まとめ

今回、色々な企業で実際に利用されている事例が多く発表されていました。
その中でも印象に残ったことは、サーバーレスなシステムにより、無駄がなくなり、サービスの本質的な価値創造によりコミットできるようになるということです。

個人的には、サーバーレスの目指す姿は、
弊社が目指す「人は『人にしかできないこと』にリソースを使うビジネスの世界」に近いと感じました。
そういったシステムの開発やサービスの提供に、自分も携わっていけたら、エンジニア冥利に尽きると感じます。

これだけ刺激的な内容のカンファレンスを準備していただいた運営スタッフの皆さんには感謝です。
また来年も参加したいと思いました!

Acroquest Technologyでは、キャリア採用を行っています。


  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

大阪勤務、Pythonでサーバレスアーキテクチャを採用した開発メンバ募集! - Acroquest Technology株式会社のWeb エンジニア中途・新卒の求人 - Wantedlywww.wantedly.com


また、弊社エンジニアのインタビュー記事や、カルチャーについての記事も公開しています。
是非ご一読ください!
・最強の検索エンジンこそが、未来を切り拓く鍵 ~3年目・若きデータサイエンティストの挑戦~
https://www.wantedly.com/companies/acroquest/post_articles/180008
・働きがい全国1位企業に根付く文化 ~全社員で会社を創り上げる~
https://www.wantedly.com/companies/acroquest/post_articles/189283

コンピュータビジョンのトップカンファレンスICCV2019参加記(後編)

こんにちは
@tereka114です。

韓国で開催されたコンピュータビジョンのトップカンファレンス ICCVへ参加していました。
今回はその後半(5~7日目)の参加記です。
前半については、こちらをご覧ください。

※ICCVの公式サイト
iccv2019.thecvf.com

5日目

午前中は「Vision, Language, & Text」、午後は「Recognition, Detection, & Re-Identification」のOralに参加しました。
前半はテキストと画像の組み合わせにより何ができるのかが非常に面白いところ。
後半は特に物体検出に注目して見ていました。
Detectionもいくつかのニューラルネットワークアーキテクチャの提案があり、Trident NetworkやGANを利用したDetectionの改善がありました。

f:id:acro-engineer:20191110232322j:plain:w500

6日目

本会議の最終日です。
午前は「Single-View 3D Modeling, Pose Estimation」、午後は「Segmentation, Detection, 3D Scene Understanding」に参加しました。
特に注目すべきは、「YOLACT: Real-Time Instance Segmentation」でしょうか。
今までMask RCNNのように物体を検出してから分類とSegmentationするのではなく、一度に検出、分類、そして、Segmentationを行うアルゴリズムです。
これにより従来よりも大幅な高速化を実現しました。

f:id:acro-engineer:20191110232216j:plain:w500

7日目

Accelerating Computer Vision with Mixed Precision

NVIDIAが公開しているamp(Automatic Mixed Precision)の仕組みの紹介とその事例の紹介のチュートリアルです。
Mixed Precisionはfloat32とfloat16の計算を組み合わせて、計算速度を高速に、かつ、メモリ消費量を抑えられます。
また、精度も変更なしと比較してほぼ同等になります。

この仕組みを利用することによりバッチサイズを増やせる利点もあります。

実行にはGPUにTensorCoreが必要になりますが、メモリ消費量を抑えつつ、高速化できるのは魅力的です。
PyTorchだと、apexライブラリを利用すればごく僅かなコードの修正で利用可能です。

github.com

3D Deep Learning and Applications in Autonomous Driving

タイトル通り、3DのDeep Learningと自動運転のチュートリアルです。
個人的には今回、3次元系の話が多かったので、その知識を得るために参加しました。
前半は3DのDeep Learningで、3D系の知識を得て聞くと入力から出力に至るまで創意工夫が入っており、とても面白いと感じました。

後半は自動運転で利用されるDeepLearningの紹介です。
LiDARと呼ばれるセンサーと得られる画像を組み合わせて物体検出などを進めていくのは非常に面白いと感じています。
おそらく、これからも3Dの技術と画像などの複数のデータを扱う技術が発展していきそうです。

ここは勉強を続けて追っていきたいと思っています。

フィードバック会

11/12に会社内でICCVのフィードバックを実施しました。
韓国での様子や学会の傾向や今後の研究で進みそうな分野、そして論文について話しました。
プロジェクトに活かせそうなことも多くあったため、質疑応答も活発に行われていました。

f:id:acro-engineer:20191112224625p:plain:w500

最後に

ICCVに参加して良かったと感じました。
最近のトレンドが変わってきてるなぁと思っているので、新しいことをどんどん吸収していきたいと感じています。
特に動画や3Dが増えつつあるのに加え、NASなどを用いた基礎研究の発表もあり、非常に幅広い分野について学べたと思っています。
仕事やKaggleに役立ちそうな知見を論文から得られたので、使っていきたいと考えています。

Acroquest Technologyでは、キャリア採用を行っています。

  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

Kaggle Masterと働きたい尖ったエンジニアWanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com

コンピュータビジョンのトップカンファレンスICCV2019参加記(前編)

皆さんこんにちは
@tereka114です。

10/26~11/02まで韓国で開催された、コンピュータビジョンのトップカンファレンスの一つであるICCV(International Conference on Computer Vision)に参加しました。本記事では、前半部分(〜10/30)までを記載します。

ちなみに、私はKaggle Masterとしての日頃の貢献が評価され、参加費+渡航費は会社から出してもらいました。
ありがとうございます!

iccv2019.thecvf.com

1日目

渡航

直前まで予定が入っていたので朝から韓国へ渡りました。
韓国は初めてですが、時差もないため、非常に楽です。
ただ、唯一のネックは韓国語しか書いていない箇所が多く、時々、何を示しているのかが?になるところです。
渡航し、そのままCOEX Convention Centerに向かいICCVのWorkshopに参加しました。

Open Images Challenge

本会議前のWorkshopに参加しました。
参加したのはOpen Images Challengeです。

このOpen Image Datasetを用いたコンペティションは今年もKaggleと呼ばれるデータサイエンスプラットフォームで開催されています。
物体を検出するObject Detection、物体の関係性を推定するObject Relation、そして、物体を個別に識別し、ピクセルごとに識別するInstance Segmentationの3つのTrackがあり、上位者がそのソリューションを発表していました。

このデータセットは画像の枚数、バウンディングボックスの数共に多く、現在の利用できる最大規模のデータセットとも言えます。
本Workshopは各Trackごとに主催者による解説と各コンペティションのソリューションの説明の順に進みました。
ソリューションから新しく学べるものが多く、今後も活かせそうなものが多かったです。

2日目

The 3rd YouTube-8M Large-Scale Video Understanding Workshop

Workshopの2日目です。私は「The 3rd YouTube-8M Large-Scale Video Understanding Workshop」に参加しました。

動画解析は2Dとはまた異なったテクニックが必要となるため、最新の研究動向の調査を兼ねて参加しました。
画像解析とは異なり、動画は時間の長さが動画ごとに異なり、時系列の依存もあるため、画像と比較して難しいと思っている分野の一つです。
これもまた、Kaggleでコンペティションを開催していたので、そのソリューションの説明もありました。

途中で紹介されたSlowFast Networkやライブラリ、関連研究の紹介も含め、非常に良いWorkshopでだったと感じています。

f:id:acro-engineer:20191031221118j:plain:w500

3日目

Opening

本会議1日目にICCVの統計情報の公開されました。
参加者が7501人で、1075論文の発表がある非常に大きな学会です。

f:id:acro-engineer:20191031215341j:plain:w500

参加者の人数ですが、2年前の前回と比較しても2.41倍に増えています。
このまま増えると次は15000人超えのすごい学会になってしまいますね。。。

f:id:acro-engineer:20191029085103j:plain:w500

今回の参加者は開催国である韓国が最も多く、2964人も参加しています。
日本からも200人程度参加しています。

f:id:acro-engineer:20191031215725j:plain:w500

Oral1

タイトル(BestPaperなど)を獲得した論文の発表です。
ICCVのBest Paperは「SinGAN: Learning a Generative Model from a Single Natural Image」です。
SinGANは、1枚の画像のみを入力し、パッチ学習と呼ばれる学習を用いて学習させた画像と類似した画像を生成できます。
これを用いて類似画像の生成、画像の復元、超解像などの様々なタスクの実験を行い、目覚ましい結果をあげました。

Oral 1.2

私はホールD1側の「Architectures, Multi-Task Learning, Domain Adaptation」に参加していました。
特に面白いと思ったのはS4L: Self-Supervised Semi-Supervised Learningです。
Self-Supervised Learning と Semi Supervised Learningを組み合わせ、従来よりも高い精度の推論を可能としました。
最近だとWebに無数の画像があるため、Self-Supervised Learning(画像の回転方向を当てるタスクなどと解く)を行いやすく、ここをどのように使っていくとデータの少ない中でも精度を出していけるのか、非常に興味深いところです。

Reception

本会議一日目のパーティです。COEXのホール前の通路で開催されています。
食事をしつつ、ここで他の参加者とも交流し、親睦を深めました。
私自身、海外から参加しているKagglerと少し話をしていました。

f:id:acro-engineer:20191029180003j:plain:w500

4日目

Oral 2.1.A

Oral 2.1.Aのテーマは「Feature Representations, Similarity Learning」
最近はSemantic Segmentationに取り組む事が多かったので「CARAFE: Content-Aware ReAssembly of FEatures」が個人的には興味ありました。
これは、UNetなどで利用されるUpsampleモジュールを改良する提案になります。
得られた画像のコンテキストを用いて、広い範囲の情報を用い、かつ、高速にUpsamplingします。
これにより従来のUpsample手法より精度を向上させました。

Banquet

会場内の広い場所での開催でした。
かなりの人が集まっており、非常に混雑していました。
会中では主催者がイベントを段どっており、テコンドー、ヒップホップや歴史のビデオなどの放送がありました。
個人的にはテコンドーの演技が素晴らしく、参加者の多くが注目していました。

f:id:acro-engineer:20191030180215j:plain:w500

最後に

コンピュータビジョン系の学会には1年と数ヶ月ぶりに参加しました。
分野の進みは早くより3D、動画など研究者が取り組む分野もシフトしていると感じています。
今回参加したことで研究の動向が得られていることが一つ大きなメリットであることを現地で痛感しています。
また、後半もお届けします!

Acroquest Technologyでは、キャリア採用を行っています。

  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

Kaggle Masterと働きたい尖ったエンジニアWanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com

Elasticsearch無料ハンズオンセミナーを開催しました

こんにちは、3年目エンジニアの緑川です。
昨日、銀座でアクロクエスト主催の「Elasticsearch無料ハンズオンセミナー」を開催しました。

f:id:acro-engineer:20191010080407j:plain
ハンズオンの様子

本ハンズオンでは、Elastic Cloud上で最新バージョン(7.4.0)のElastic Stackを体験していただきました。
Logstashによるデータの収集/加工から、Kibanaを用いた可視化までを通して、利用イメージを掴んでいただけたと思います。
今回は40名以上の方が参加し、ハンズオン中の質問も多く出て、盛り上がりました。

また、今回は当社のサービスである「ホワイトボックス型アプリケーション診断サービス」も紹介いたしました。
これは、アプリケーションの性能監視を可能にする「Elastic APM」をベースに、
当社のエキスパートが、対応が必要となる性能リスク箇所をレポーティングします。

詳細はこちらをご覧ください。
www.endosnipe.com

そのほか、お得なキャンペーンも実施しているので、
興味がある方、Elastic Stackの運用などでお困りの方はぜひご連絡ください。

■お問い合わせ先
アクロクエストテクノロジー株式会社
TEL:045-476-3171
TEL(営業直通):045-330-9400
FAX:045-476-4171
E-MAIL(営業直通): acrosales@acroquest.co.jp

Acroquest Technologyでは、キャリア採用を行っています。


  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

世界初のElastic認定エンジニアと一緒に働きたい人Wanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップの求人 - Wantedlywww.wantedly.com

第33回Elasticsearch勉強会に運営メンバーとして参加してきました

こんにちは。8月にElastic Certified Engineerになりました、ノムラです。

10/4(金)に開催された「第33回Elasticsearch勉強会」に運営メンバーとして参加してきました。
www.meetup.com

今回から、Acroquestが運営に関わっている「JEUG(Japan Elasticsearch User Group)」が「Elasticsearch勉強会@Elastic User Group 東京」にJoinし、コミュニティが1つになりました!「Elastic Stackユーザ同士で有益な情報を共有する」という目的は同じであるためです。

という訳で、新生Elasticsearch勉強会の各発表の概要と個人的に面白い!と思ったところを紹介したいと思います。

概要

発表タイトルは下記の通りです。

  1. Elastic Stackで始めるアプリケーション監視 / Elastic社 大谷さん
  2. Elasticsearch を活用した大規模侵害診断 ~ MONSTRO のお食事 ~ / サイバーディフェンス研究所 伊藤 達哉さん
  3. 決済トランザクションの監視におけるElastic Stackの活用 ~アプリケーションロギング/トレーシングの可視化~/ SBペイメントサービス株式会社 髙野 はいねさん

Elastic Stackで始めるアプリケーション監視

スピーカーはElastic社の大谷さん。
noti.st

BeatファミリーとElastic APMを使ってアプリケーション監視を実現するというお話です。
Elatic APMは、対象のアプリケーションの改修無しで分散トレーシングにより、
性能ボトルネックなプロセスが一目で分かるのが強力ですね。

Elasticsearch を活用した大規模侵害診断 ~ MONSTRO のお食事 ~

スピーカーはサイバーディフェンス研究所の伊藤さん。

MONSTROという独自KibanaプラグインによるSIEMの事例の紹介でした。
ElaticStackにより長期間のログの保存・可視化が可能になり、マルウェアの感染時期や影響範囲がより詳細に分析可能になったとのことです。

決済トランザクションの監視におけるElastic Stackの活用 ~アプリケーションロギング/トレーシングの可視化~

スピーカーはSBペイメントサービス株式会社の髙野さん。
speakerdeck.com

11万店舗以上が利用する決済代行システム。分散トレーシングとしてZipkinを導入。
ビジネスサイドの監視は、3つのビジュアライズのみで構成されたシンプルなダッシュボード。加えて、トレースIDを介してZipinのダッシュボードと連携。これは便利そうですね。あとはWatcherのGUI版ともいえるPraeco(知らなかった。。)が要チェックや!

まとめ

運営としては、勉強会がスムーズに開催、終了したのでほっとしています。
次回以降も参加者の方にとって刺激的な勉強会にできるようにしていければと思います。

発表は実際のビジネスシーンでの活用事例を多く聞くことができ、刺激的でした。
自身の業務にも取り入れてより良い活用事例をつくり発信していけたらと思います。

それでは。

Acroquest Technologyでは、キャリア採用を行っています。


  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

世界初のElastic認定エンジニアと一緒に働きたい人Wanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップの求人 - Wantedlywww.wantedly.com

技術書典7でElasticsearch本を販売します!

皆さんこんにちは
@tereka114です。

9/22(日)に、待ちに待った技術書典7が開催されます。
この技術書典7に当社の有志で出展します。出展場所は「い50C」です。

techbookfest.org

昨年(2018年)の技術書典5で販売した「Elasticsearch NEXT STEP」に引き続き、「Elasticsearch NEXT STEP2」を販売します。
Elasticsearchを使ってみた方が入門レベルから次のステップ(Next Step)へ進むための本として、執筆しました。

Elasticsearch は検索機能もさることながら、Elastic APM のように運用で必要となる機能も強化されています。
また、Kibana は従来までのシンプルな可視化に加え、Canvas を用いて柔軟な可視化ができるようになりました。
本書には、進化した Elastic Stackの機能を中心に実践的な内容を盛り込みました。

この本を通して、読者のみなさんによる Elastic Stack の活用がさらに進むことを願っています。

最後に、本書の内容をイメージしていただけるよう目次を掲載します。

f:id:acro-engineer:20190918233705p:plain:h500f:id:acro-engineer:20190918233536p:plain:h500

当日、皆さんとお会いできることを楽しみにしています。

Acroquest Technologyでは、キャリア採用を行っています。


  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

世界初のElastic認定エンジニアと一緒に働きたい人Wanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップの求人 - Wantedlywww.wantedly.com

AKSで構築したKubernetesクラスタをElasticStackで監視する (3)Elastic APM編

こんにちは、アキバです。

少し間が空いてしまいましたが、Azure Kubernetes Service(AKS)を用いて作成した Kubernetesk8sクラスタを ElasticStack で監視する方法の第3回(最終回)です。

これまでの2回分については以下リンクを参照してください。

最終回である第3回は、 AKS 上で動作するアプリケーションに Elastic APM を適用します。

これまでに触れた通り、k8s 上で動かしているアプリケーションは動的にスケールアウト/スケールインします。 つまり、コンテナは決まった場所で動き続けるように設定できません。 そのため、性能が出ていない時などに、どのコンテナが原因なのかを調べるのが困難であるという性質をもっています。

k8s 上で動くアプリケーションの処理性能を監視したいと考えたときは、 Application Performance Management(APM)を導入することが必須と言えるでしょう。

ということで、AKS チュートリアルアプリに対して Elastic APM を適用してみます。

1. APM Server のインストール

まずは、 APM Server をインストールします。

Elastic APMAPM Server は、apm-server というパッケージ名になっています。 今回は、リソース節約のため apm-server をデータノード(mon-data-0)に同居させます。

次に示す URL にあるリファレンスを見て、インストール方法を確認してください。

https://www.elastic.co/guide/en/apm/server/7.2/setup-repositories.html

Marketplace で作成した mon-data-0 サーバの OS は、 Ubuntu-16.04 なので、apt を使ったインストールを行います。

インストールに成功すると、サービス登録されていることが確認できます。 なお、この時点ではまだ起動していません。

$ sudo service apm-server status
● apm-server.service - Elastic APM Server
   Loaded: loaded (/lib/systemd/system/apm-server.service; disabled; vendor ...
   Active: inactive (dead)
     Docs: https://www.elastic.co/solutions/apm

APM Agent は、 APM Server とは異なるサーバで動作するため、データを受信できるように APM Server の設定ファイルを編集しておきます。

$ sudo vi /etc/apm-server/apm-server.yml

編集箇所は次のようになります。 Elasticsearch サーバの認証設定を忘れないようにしましょう。

apm-server:
  host: "0.0.0.0:8200"    ★サーバ外部からの接続に対応する設定
  :
output.elasticsearch:username: "elastic"
  password: "elastic_users_password"  ★サーバ構築時に設定したパスワードにする

設定が完了したら、APM Server を起動します。 また、 OS 起動時に APM Server が自動起動するようにしておきます。

$ sudo systemctl enable apm-server  ★自動起動する設定
$ sudo systemctl start apm-server  ★APM Serverの起動
$ sudo systemctl status apm-server
● apm-server.service - Elastic APM Server
   Loaded: loaded (/lib/systemd/system/apm-server.service; enabled; vendor ...
   Active: active (running) since Mon 2019-09-01 12:34:56 UTC; 9s ago
     Docs: https://www.elastic.co/solutions/apm
 Main PID: 12345 (apm-server)
    Tasks: 7
   Memory: 13.5M
      CPU: 82ms
   CGroup: /system.slice/apm-server.service
           mq88786 /usr/share/apm-server/bin/apm-server -e -c /etc/apm-server...

2. APM Agent のインストール/設定

次に、APM Agent を k8s 上で動かすアプリケーションに組み込みます。 組み込まれた APM Agent が、アプリケーションから情報を収集し、 APM Server に情報を送信します。

組み込むには、 azure-vote-app-redis で次に示すファイルを編集します。

(1) azure-vote/Dockerfile

FROM tiangolo/uwsgi-nginx-flask:python3.6
RUN pip install redis elastic-apm[flask]  ★末尾に「elastic-apm[flask]」を追記
ADD /azure-vote /app

(2) azure-vote/azure-vote/main.py

from flask import Flask, request, render_template
from elasticapm.contrib.flask import ElasticAPM  ★この行を追加
import os
import random
import redis
import socket
import sys

app = Flask(__name__)

# ---- 追加ここから ----
# Enable ElasticAPM
app.config['ELASTIC_APM'] = {
    'SERVICE_NAME': 'azure-voting-app',
    'SERVER_URL': 'http://192.168.0.5:8200'  # ★mon-data-0 サーバのIPアドレス
}

apm = ElasticAPM(app)
# ---- 追加ここまで ----

3. APM Agent を組み込んだアプリケーションを動かす

APM Agent の組み込み設定が完了したら、 k8s 上のアプリケーションを更新しましょう。

AKS チュートリアルを参考にして、新しいバージョンの Docker イメージをレジストリ(Azure Container Registry)にプッシュします。 今回は、新しいイメージには azure-vote-front:v2 を割り当てました。

$ docker push <レジストリ名>.azurecr.io/azure-vote-front:v2

レジストリに Docker イメージの登録ができたら、新しい Docker イメージでデプロイします。

$ kubectl get pods
$ kubectl set image deployment azure-vote-front \
  azure-vote-front=<レジストリ名>.azurecr.io/azure-vote-front:v2
$ kubectl get pods

デプロイに成功すると、 APM Agent から APM Server にアプリケーションの性能情報が送信されるようになり、 APM Server を通して Elasticsearch に情報が格納されるようになります。 格納されたデータは、 Kibana の APM 画面から見ることができます。

f:id:acro-engineer:20190910012650p:plain

まとめ

今回は、 Elastic APM を用いたアプリケーションの性能情報監視を行いました。

性能情報の監視を自前で行うには、事前のログやメトリクスの設計、アプリケーション全体を通した実装といったことを考える必要があります。 これらはそれなりに大変な作業になります。

Elastic APM を使うと、こういった作業をソースコード冒頭数行の記述と、受信側サーバの設定だけで行えて便利ですね。

これまで3回にわたって Kubernetes および Kubernetes 上で動かすミドルウェアやアプリケーションの可視化/監視を行う方法について説明してきました。

近年、 Observability という言葉が使われるようになっており、クラウド上のシステムやマイクロサービスで動作するアプリケーションの監視について必要なことが整理されています。

今シリーズで説明した Infrastructure UI(メトリクス)、Logs UI(ログ)、Elastic APM(性能方法)も、 Observability を実現するために活用することができますので、この記事を役立ていただけたら幸いです。

それでは。


Acroquest Technologyでは、キャリア採用を行っています。

  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • Elasticsearch等を使ったデータ収集/分析/可視化
  • マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

  少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

世界初のElastic認定エンジニアと一緒に働きたい人Wanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップの求人 - Wantedlywww.wantedly.com