Jaegerを使った分散トレーシングの検証 on Kubernetes (1)

2021-02-08

もーすけです。
過去にDatadogでAPMを少し検証したり、トレーニングの中でJaegerを触ったりしましたが、正直ちゃんとわかっていなかったので、改めてJaegerというか分散トレーシングについて検証してみたいと思います。

今回はKubernetes上にJaegerを構築するので、Jaeger Operatorをインストールして利用します。 今回はOpenShiftにて検証していますが、他のKubernetesディストリビューションでも同じように利用可能です。ockubectl と置き換えて読んでください。 検証環境は下記のとおりです。

  • OpenShift: 4.4
  • Jaeger: 1.17
続きを読む

分散システム構築の良書「データ指向アプリケーションデザイン」を動画で解説する

2021-01-24

あけましておめでとうございます(いまさらw)。もーすけです。
最近は呪術廻戦にハマっています。ぜひまだ見てない方見てみてください!

さて本題ですが、新年はじめの投稿はデータ指向アプリケーションデザインという書籍についてです。 最近読んだ中で一番良かった本ではないかと思っています。 実は、勤めている会社内でこの書籍の輪読会を行っていて、自分が12章(最終章)を担当しました。 12章はこの本の一番言いたいことが書いてある章でもあったので、本の魅力を理解してもらうのにもしかして役立つのでは!?と思い、この書籍の紹介しつつ、輪読会で発表した内容を動画で解説していきたいと思います。

続きを読む

Sock Shopを使ったマイクロサービス体験のハンズオン

2020-01-22

あけましておめでとうございます。@mosuke5です。
マイクロサービスの実際の体験や研修を探したことがありますでしょうか。 残念ながら、実際に手を動かしなら学ぶトレーニングや研修は多く存在しませんが、 マイクロサービスのデモアプリケーションとしてSock Shopが有名で、これはトレーニングに最適です。

日本語でもたくさんのSock Shopの紹介やインストール記事がでています。しかし、自分もそうだったのですが、なんとなく起動して動かして、終わりとなっているものがおおく、どんな観点でこのSock Shopをいじっていけばいいかの情報が足りないと感じました。 機会があり、Sock Shopをさわるタイミングがあったので、実際にどんなデータ構造になっているのか、マイクロサービスゆえの課題など、Sock Shopから少しでも多くの学びが得られるようにこの記事を書きます。

続きを読む

Datadog APMとトレーシングの仕組みについて

2019-11-21

こんにちは。@mosuke5です。
みなさん普段の監視はどのように行っていますか?Datadog使っていますか?

最近Datadogを触る機会が多いのですが、Datadogはobservabilityの3本柱ということで、メトリックとトレース(APM)とログ、この3つを統合した監視サービスであることを強くおしだしています。 3つの分野のそれぞれに対応したOSSやサービスは多いですが、統合されてシームレスに連携できる点はDatadogの非常に強いポイントと感じます。 さて、そんななかでDatadog APM (Application Perfomance Monitoring) が強力だったので紹介したいのと、その仕組みを探っていきましょう。

続きを読む

[基礎] ElasticSerachなどの外部コンポーネントがあるときのテスト

2019-05-26

お久しぶりです。@mosuke5です。
新しい会社に入って1ヶ月ほど経ちましたが生きています。 今回は、ElasticSearchを題材にしますが外部コンポーネントを利用しているアプリケーションのテストについてです。 すごく初歩的なところですが、いくつか考えなければいけないポイントもあったのでまとめました。

はじめに

今回の題材は非常にシンプルな検索機能をもったアプリケーションです。 構成はアプリケーションはRailsで、検索エンジンを担うのがElastiCsearchという前提です。

アプリケーションがもつmethodは3つで以下としています。

  1. GET ‘/’ => ‘Hello’を返す
  2. GET ‘/search’ => GETパラメータ’q’のキーワードで検索した結果をjsonで返す
  3. POST ‘/update’ => 所定のjsonファイルをPOSTするとbulkでinsertされ、その結果をjsonで返す
続きを読む

SlideShare APIをGoogleAppsScriptから利用する方法

2018-12-20

どうも、SlideShareの記事の管理をスプレッドシートでやりたいというちょっとした自分のニーズがあって、 SlideShare APIってあるのか?そしてGoogleAppsScriptもほとんどやったことがない、自分でしたが試してみたのでメモっておきます。

続きを読む

Docker Compose上でのRailsアプリケーションの開発フロー

2018-05-02

早いものGWも終わり一週間が経ってしまいました。
長期の連休になるとだいたい自分は趣味のアプリケーション開発をよくすすめています(ふだんからやりたいけどなかなかできない)。今年のGWも趣味アプリケーションの開発をしてました。

いま作っているアプリケーションは自分の英語学習用のサービスなのですが(サービスについては別途どこかでご紹介したい)、新しい技術を実際に試す場としても利用しています。自分はいつも趣味アプリケーションで新しいことを試してみて、よかったらそれを職場にもっていくことが多いです。

アプリケーションはRailsで書いているのですが、Railsの他にMySQLやNginx、ElasticSearch、Kibanaなど関連するコンポーネントが多いです。 そのため、Docker Composeを利用して動かすことにしています。Dockerは以前から使っていたのですが、実際にアプリケーションのせてとして開発・運用してみると、いろいろ問題があり試行錯誤することになりました。

GWはその部分と主に格闘していて、最終的にそこそこ良い開発フローを整えることができました。今日はそのご紹介です。
※もちろん、現時点でのやり方であり、改善しているので現状と異なることも多いと思います。

続きを読む

PHPでHTTPヘッダー、x-forwarded-forを受け取る方法

2016-07-26

こんにちは@mosuke5です。
もともとApach+PHPで動作していたシステムに、リバースプロキシ(Nginx)を前段に挟むことになりました。理由は、もともと社内ネットワークでのみ利用するシステムだったのですが、インターネットの外からも利用することになり、インターネットからの入り口にリバースプロキシを導入したからです。
つまり、Nginx->Apache->PHPという構成になりました。
リバースプロキシを導入した際によく問題となることだが、Apacheからみるとすべてリバースプロキシから通信がきているようにみえます。 接続元のIPアドレスがすべてリバースプロキシのもの変わってしまいます。

そこで、HTTPヘッダーに接続元のIPアドレス追加しアプリ側(PHP)で受け取る方法とその際の注意点を書きます。

続きを読む

HerokuをRailsアプリのステージング環境として使う

2016-03-28
趣味で作っているアプリ(Rails)があるのだが、はじめHerokuで運用しようと検討していたが、 データ量が多いためすぐにHobbyプランで 続きを読む

実装案を使って、DBのViewの使いどころを検討する

2016-03-16
ある実装についてどのように実装するか悩んだ。 その悩んだ過程や実装案をメモする。似たようなケースの実装案として参考になればと思う。 状況 ある申請 続きを読む