AWS

Athenaを使ってS3のログファイルを検索してみる


AWSのサービスにS3のログ解析ツール「Athena」について書かせて頂きます。

Athenaとは?

https://aws.amazon.com/jp/athena/

Amazon Web ServiceのS3にある大量のログをSQLのクエリを書いて抽出できるサービスです。
大量のファイルが分割されていると解析するのが大変なのですが、

これらのファイルの入っているパケットを指定してAthenaの設定を完了すると、
以下のようにSQLクエリを実行するだけで検索できてしまいます。

SQLクエリは業務で良く書きますので、データベースを触っていたサーバーサイドエンジニアでも使いやすいのではと思いました。

Athenaの設定方法

1、データベースを作成する

2、データフォーマットを指定する


※CSVやJSONのデータフォーマットも指定できます。

3、カラムを指定する

4、パーティションを指定する


※CreateTableを押すとAthenaで利用するデータベースの完成です。

Athenaを使ってやってみたかったこと

json形式でファイル出力されたS3のログをキーベースで検索して、簡単にS3のファイルからデータを抽出したかったのですが、結果できませんでした。
なぜかというと、ファイル転送を挟んだログファイルだったためにファイル自体がtsv形式だったので、json形式のデータフォーマットに適用できなかったためです。
カラム型にjson型があると嬉しいなと思いました。

TSV形式での検索

LIKE検索ができますので、ログ自体の検索はできましたし、レスポンスも遅いわけでもなく使い勝手は良かったです。

下記、簡単なクエリ例です。SQLと変わらないですね。
SELECT * FROM table_name WHERE column_name LIKE '%xxxxx%' LIMIT 100;

まとめ

AWSを使ってS3に溜まっているログをAthenaを使うだけで抽出できるので、今後も使っていきたいと思います。
導入も簡単なので、まだ使ったことのない方は試してみるとどうでしょうか。

最後に

リンクバルではエンジニアの採用を募集しています。採用はこちら


アプリ開発者必見!「Amazon Rekognition」 で素早く画像分析


リンクバル技術部の中村です。
「re:Invent 2016 Amazon」で発表された、AWSの新機能「Amazon Rekognition」をつかってみました。
Amazon Rekognition は、画像の分析をアプリケーションに簡単に追加できるようにするサービスです。
画像分析のハードルが一気にさがり、アプリケーションがより便利になると感じました。

AWS マネジメントコンソールから写真をアップロードして試す。

AWSの管理画面から、簡単に動作を試すことができます。

女性の写真

aws_rekoginition_woman

人であること、女性であることなどを判定しています。

海の写真

aws_rekoginition_sea

海の写真であることなどを判定しています。

料金

使った枚数だけ、課金されます。
オレゴンリージョンの例を挙げると、
処理画像 1,000 枚あたりの料金
1 か月あたり画像処理* 100 万枚まで 1.00 USD
執筆時点のレートで、一枚あたり約0.12円です。

料金表(オレゴン)

amazon_rekognition_%e6%96%99%e9%87%91_-_%e3%82%a2%e3%83%9e%e3%82%bd%e3%82%99%e3%83%b3_%e3%82%a6%e3%82%a7%e3%83%95%e3%82%99_%e3%82%b5%e3%83%bc%e3%83%92%e3%82%99%e3%82%b9

無料枠

無料枠が設定されています。
気軽に技術検証ができますね。

最初の 12 か月の間、

  • 1ヶ月あたり 5,000 枚の画像分析
  • 毎月1,000 件の顔メタデータを保存

おわりに

AWSの画像解析API Amazon Rekognitionを試しました。
高機能の画像解析が安価に使えるので、開発者は画像解析の技術向上はAWSに任せて、どのように使えば、ユーザーの満足度を上げられるかに注力できそうだと感じました。
SDKを使う事でプログラム中からも使う事ができます。

リンクバルでは、Ruby on Railsで開発された自社サービスを一緒に開発するエンジニアを募集しておりますので、興味を持っていただきましたら、ぜひお問い合わせください!


DigitalOceanを使う5つのメリット

DigitalOcean

リンクバル技術部の川畑です。最近というより1・2年前から海外で流行っているVPS DigitalOcean についてまとめました。IaaS界の巨塔 AWS と比較して良いところを5つか列挙させて頂きます。

コストが安い!

  • DigitalOceanは1番下のスペックのDroplets(AWSのEC2インスタンスみたいなの)で比較した場合、1時間あたり $0.007 1月あたり $5になります。
  • AWSの1番下のスペックのEC2インスタンスだと、t2.nanoが1時間あたり $0.01 1月でEBS 8GBで起動すると $14.64になります。

仮想サーバーの起動が早い!

  • DigitalOceanは1分ぐらいで起動完了。
  • AWSのt2.nanoだとStatusがrunningになるまで5分ぐらいはかかるときも。

コンソールが使いやすい!

  • DigitalOceanのDropletを作成するコンソールが必要最低限の項目で非常にシンプルでわかりやすい。個人的にはIPアドレスをクリップボードにコピーする機能が痒いところに手が届く感じがあって好きです。
  • AWSのEC2インスタンスを作成するコンソールは複雑で多数の項目があり、慣れるまでには時間がかかる。

うれしい自動バックアップ機能も!

  • DigitalOceanのDropletはコンソールで設定するだけで1日1回バックアップを自動で取得してくれます。
  • AWSのEC2インスタンスのバックアップを取得するときは、スクリプトを用意する必要があります。

スペック・Disk容量変更も自由自在!

  • DigitalOceanはDropletの拡張・縮小はコンソール上で自由自在です。
  • AWSのEC2インスタンスはスペックは拡張・縮小は変更可能ですが、Diskの拡張・縮小についてはちょっと複雑な手順になります。

と、無理やり感もありますが、DigitalOceanは「Mr. IaaS」といった感じで、個人的にはAWSよりも結構使っております。ただ実際の本番サービスの運用となると、AWSのALBやS3のようなPaaSは一切提供していないので、DigitalOceanで本番サービスを運用するのは現実的ではないかもしれません。使いどころとしては、検証用・開発用・個人のブログなどになると思われますので、ご興味のある方はぜひ試して見て下さい。

リンクバルでは エンジニアを積極募集中 です。興味のある方のご応募お待ちしております。


現行世代と旧世代のインスタンス比較(性能&コスト)


リンクバルでエンジニアをしている高島です。

最近EC2上でApache Jmeterを利用しての負荷テストを実施していて、いろいろなインスタンスタイプ・サイズやOSで試したりしています。
AWSではインスタンスタイプごとに現行世代と旧世代の2種類のインスタンスが選べますが、現行世代の方がベースの物理マシンも新しいため性能がよかったりします。

ただ、マシン買い切りのオンプレミスとは異なり、時間単位でコストが掛かってくるAWSでは性能のよいインスタンスをとにかく投入するのではなくランニングコストも視野に入れて選定が必要となってきます。
そこで、新旧で性能およびコストの比率をチェックしてみたいとおもいます。

性能測定実施

測定にはUnixBenchを利用してみました。
まずはインストールです。

実行に必要なパッケージを先に導入します。

# yum install perl-Time-HiRes
# yum install gcc

公式からソースコードをダウンロードし、展開します。

$ wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
$ tar zxvf UnixBench5.1.3.tgz
$ cd UnixBench

実行するとコンパイルされた後に処理が開始されます。

$ ./Run

比較対象

比較対象はvCPU数とメモリ容量をあわせたいので、c4.4xlargeとc3.4xlargeを選択しました。
ともにvCPU数が16、メモリ容量が30GiBになります。

性能比較

c4.4xlarge c3.4xlarge c4/c3
1vCPUのスコア 1950.3 1793.7 約108%
16vCPUのスコア 8805.8 7753.3 約113%

物理CPUが(c4インスタンス)E5-2666 v3 @ 2.90GHzと(C3インスンタンス)E5-2680 v2 @ 2.80GHzのため、CPU世代が進んでいてクロック差もあるため妥当な差だと思います。
テストケースごとのスコアの掲載は省略していますが全体的にc4インスタンスが上回る結果となりました。

コスト比較

c4.4xlarge c3.4xlarge c4/c3
$1.061/h $1.021/h 約104%

c4インスタンスの方が上ですが、ほとんど気にならないレベルです。

総括

性能差に対して、コストの差が小さいため新しくインスタンスを選択する際には素直に現行世代インスタンスを選んだ方が無難だと思います。
ただし、新しくリリースされたインスタンスについてはリリース直後は物理サーバの絶対数が少ないためか、オートスケールなどで起動できる台数が制限に引っかかってしまうことがあるようで、大型システムではそのあたりについて考慮する必要がありそうです。


NewRelicのTransactionTrace機能がとても便利な件


NewRelicの便利な機能を紹介します

NewRelic公式サイト
https://newrelic.com/

このAPMの「Transaction Trace」というAPMのPro版の機能がソースコードのメソッド単位でレスポンスタイムが分かるので、サイトのチューニングやボトルネックを発見するのにとても役に立ったことがありましたので、記事にさせて頂きました。

ライセンス料金
https://newrelic.com/calculator

Transaction Trace
TransactionTrace

Transaction Trace Detail
TransactionTraceDetail

このような具合でソースコード単位でボトルネックになっている箇所を見つけ出し、
パフォーマンスのチューニングをすることができます。
またデータベースで実行されたクエリを確認することもできます。

最後に
もしサイトが重く悩んでいましたらNewRelic APM Pro版を導入してみるのも良いかもしれません。
フリーで登録後、14日間はPro版をトライアルできるようですので、NewRelicの導入がまだの方は試してみてはどうでしょうか。