読者です 読者をやめる 読者になる 読者になる

株式会社ネクスト エンジニアBlog

不動産・住宅情報サイト HOME'Sを運営する株式会社ネクストのエンジニアが提供する技術ブログです。エンジニアに役立つ情報の発信や、弊社エンジニアの活動を中心にお届けします。

mruby + ngx_mrubyでアプリケーションを実装するという選択肢

はじめまして、技術基盤部の相原(kaihar4)です!

今回は、アプリケーションのクラウドサービスへの移行の一環で、 Amazon S3から取得した画像URLを含むファイルを元に、そのURLの外部画像を取得して返す機能mrubyで書き直してAWSに移行した話をしていきたいと思います。

この機能は元々モノリシックなアプリケーションの一機能として動いていたもので、これを切り出してAWSに移行するというのが今回私に与えられたミッションでした。 このアプリケーションは歴史が長く、その間ほとんどメンテナンスされていませんでした。 ディストリビューションは古くPHPのバージョンも4系、したがってそのまま持っていくという選択肢はなく、AWS上に新規にインスタンスを構築することになります。 弊社にはAPI部分をPHPからRubyに移行する方針があるということもあり、Amazon Linux上にRubyで書き直したこの機能を移行するというのが妥当な線でした。 しかしアプリケーションの性質上Unicornはプロセスモデル的に適さないですし、そもそもこれだけの機能のためにアプリケーションサーバを用意するということにも違和感がありました。

そこであがってきたのが、mrubyでこの機能を実装しngx_mrubyで動かすという選択肢です。 mrubyであればRubyと(ほぼ)同じシンタックスで実装することができ、それをngx_mrubyで動かすことでウェブサーバがそのままアプリケーションサーバとして振舞うことができます。 開発者を多く確保できるmrubyと弊社での運用実績があるnginx、これらを使う旨を運用チームへ相談の末、このプランで行くことに決まりました。

このように置き換わるイメージです。 元々キャッシュをするように作られていなかったので、この機会にRedisによるキャッシュも入れました。 f:id:nextdeveloper:20160810122507p:plain ロゴ: Amazon S3, redis

ここからはmrubyngx_mrubyについてと、いかにこれらでこの機能を実装したかについて書いていきます。 本エントリを通してmruby + ngx_mrubyでアプリケーションを実装するという選択肢の現実味を感じていただければと思います。

続きを読む

FIT 2016(情報科学技術フォーラム)@富山にて登壇・出展します

こんにちは、リッテルラボラトリーの清田です。

来たる9月7日(水)〜9日(金)に富山大学で開催される第15回情報科学技術フォーラム(FIT 2016)のイベント企画にて、リッテルラボラトリーの石田・清田が登壇することになりました。

あわせて、ネクストとしてブース出展も行います。

多くの方々のお越しをお待ちしております!

続きを読む

Zipkinを導入してみた(PHP編)

こんにちは。技術基盤部の磯野です。 先日に引き続きZipkinです。 今回は PHP + Symfony で動いている Webアプリケーションへのトレーサーの導入です。

前回の記事 → Zipkinを導入してみた(サーバー編)

  • 構成
  • 処理の流れ
  • 処理の流れを追跡するためのリクエストヘッダ
  • fluentdの設定
  • PHP(Symfony)側の実装
    • クライアントライブラリ
      • Hoopak
      • Apache Thrift
    • ソースコード
      • DI用設定ファイル(抜粋)
      • イベントリスナクラス
      • サービスコンテナクラス(イベントリスナにDIする用)
      • 足りない機能を補充するためのラッパークラス
      • WebAPI呼び出しのロギング追加
  • 出力

構成

PHPは非同期に処理ができないので直接Zipkinサーバーにに投げるのではなくローカルのfluentdを利用してできるだけ短時間で処理が終わるようにしています。

f:id:nextdeveloper:20160704145103p:plain 画像のアプリケーション・フレームワーク → Zipkin Symfony2 Fluentd Sinatra

続きを読む

電気通信大の人工知能先端研究センター(AIX)にサポーター企業として参画します

こんにちは、リッテルラボラトリーの清田です。

このたび、電気通信大学に新設される人工知能先端研究センター(AIX)に、サポーター企業としてネクストが参画することになりました。

リッテルラボラトリーでは、電気通信大の栗原研究室と、ソーシャルメディアを通じて住まい探しユーザーを理解することを目指した共同研究を推進してきました。その成果は、人工知能学会全国大会 (JSAI 2015)や、2015年12月にシンガポールで開催された国際ワークショップ DOCMAS/WEIN 2015などで発表しております。

続きを読む

Zipkinを導入してみた(サーバー編)

AWS zipkin

こんにちは。技術基盤部の磯野です。 弊社ではここ数年、HOME'Sのクラウド化やマイクロサービス化を推進しています。

アプリケーションのクラウドサービスへの移行に関してはそろそろ終わりが見えてきているのですが、 マイクロサービスに関してはまだまだ道半ばということもあり、推進していくにあたって、 各サービス間の依存関係やトレース情報を可視化する手段としてzipkinをAWS上に試験的に導入してみました。

今回はZipkinサーバーの導入までの手順についてまとめたいと思います。

  • Zipkin とは
  • データストレージの選択
    • InMemory
    • MySQL
      • いいところ
      • 残念なところ
    • Cassandra
      • いいところ
      • 残念なところ
    • Elasticsearch
      • いいところ
      • 残念なところ
  • 基本構成
    • サービスのインストール
      • MySQLの設定
      • zipkinのインストールと確認用の起動
      • supervisordのインストール
    • おまけ
      • zipkinのすぐに使いそうな環境変数

Zipkin とは

分散環境における各サービスの呼び出し状況を収集・可視化できるシステムです。
文字だけだとよくわかりませんが、サービス間の呼び出しをこんな感じで可視化できるサービスです。 f:id:nextdeveloper:20160628165142p:plain ※個人環境のデータです。

続きを読む

WWDC2016キーノートまで長い道のり

Apple原理主義者の大坪です。人は思いがけない出来事に直面すると、その理由を探さずにはいられない。お財布を落としてしまった!なぜだろう?きっと今朝黒猫印をつけた車が私の前を横切ったのがいけなかったのだ、とかなんとか。

いきなり何を書いているかといえばあれですよ。年に一度行われるAppleの開発者向け会議WWDCのチケットが当たったんですよ。いや、大丈夫。ちゃんと理解してます。これは奇跡でもなんでもなくarc4random_uniform関数*1がたまたま「参加」の値を返しただけ、と。しかしこれは私の常軌を逸したAppleへの愛がなせる技ではなかろうか、と頭の片隅で考えているのも事実。

などと

のんきなことを言っている場合ではありません。わーいわーいと喜んでいいのは30秒ほど。早く正気に帰りあれこれの手配をしなくてはなりません。

*1:iOSで乱数を返してくれる関数です。

続きを読む

人工知能学会全国大会2016 画像解析寄りの深層学習関連発表のまとめ

ディープラーニング レポート 機械学習

こんにちは。おうちハッカー@リッテルラボラトリーの石田です。

2016年6月6日~9日に開催された第30回人工知能学会全国大会に行ってきました。私は画像系及び深層学習に興味があるので、特に画像系と深層学習系セッションを見て回りました。

f:id:nextdeveloper:20160613194912p:plain

そこで主に自分が見たセッションを元に、今年の人工知能学会の画像に関わる深層学習の発表をまとめてみました。
私が見た・読んだ範囲で、「各分野にCNNを適用した研究」「画像系深層学習の理論的な研究」「画像ではないが気になった深層学習の研究 」に分けて紹介します。

自分で実際に見た発表については、おすすめ度をつけています。個人の主観によるものですので、弊社の見解とは関係がありません。
ではどうぞ。

続きを読む