4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GAE/Node で Memcached を使おうと思ったら bitnami に出会って感動した話

Last updated at Posted at 2018-03-02

経緯

GAE アプリケーション上で Memcache を使いたかった

「たしか内包サービスみたいな感じで GAE メニューにあったなぁ」 と思い、早速ドキュメント を読みに行ってみると...

The Memcache service is currently not available for the App Engine flexible environment. An alpha version of the memcache service will be available shortly. If you would like to be notified when the service is available, fill out this early access form.

どうやら 2018/03/01 時点では GAE flexible 環境で利用できないみたい
(Node を使う場合は自動的に flexible 環境となる

もうすぐ使えるようになるとのことですが、いつになるかわからないため正式に実装されるまでは自前の Memcache 鯖を立てることにしました

さてどうやって立てようか…

様々なケースを調べる中、あるコミュニティで回答者がお勧めしていたのが bitnami というサービスでした

bitnami とは

bitnami は様々なアプリケーションのイメージ集 + 各種クラウドサービスへの構築をアシストしてくれるサービスです

本来であれば、自分で使用したいサービスのコンテナ化やスケーリング、ネットワーク設定等を行うところですが、これらをボタン 1 つで代行してくれます

パッケージの中には 今回使用する Memcache をはじめ、wiki、Word Press など 数多くのソリューションが用意されています

スクリーンショット 2018-03-02 16.56.48.png

bitnami の使い方

本当に簡単でした

使いたいサービスのページ へアクセスし、LAUNCH IN THE CLOUD を押す

そしてこの簡潔でわかりやすい設定項目を選択し、CREATE するだけ…っ!!

スクリーンショット 2018-03-02 17.06.25.png

GCP に戻ってみると…

スクリーンショット 2018-03-02 17.11.40.png

ちゃんとできてる!すごい!
ご丁寧に各種タグ付けやカスタムメタデータも設定されており、後から見直した際にそのインスタンスがどのような状態なのかひと目で分かるようになっていました

なお、クラスタ版を立てたい場合は こちら から行います

使ってみる

memcached-cli から

まずはアプリケーションからではなく、 memcached-cli を使って検証...

memcached-cli userName:pass@host:port

**.***.***.***:*****>set test hoge
MemJS SET: using deprecated call - arguments have changed
true
**.***.***.***:*****>get test
hoge

できてそう

Node から

bitnami: memcache イメージの設定的に SASL 認証に対応したクライアントでないと動かないようです

調べた限りでは memcached-cli にも使われている MemJS というモジュールが対応していました

set-cache
memcached-cli userName:pass@host:port

**.***.***.***:*****>set test huga
MemJS SET: using deprecated call - arguments have changed
true
**.***.***.***:*****>get test
huga
server.ts
import * as Memjs from 'memjs';

// memcache 部分抜粋
const client = Memjs.Client.create();
client.get('test', (err: any, val: Buffer) => {
    console.log(err, val.toString());
});
server-log
null 'huga'

無事 CLI でセットした値がアプリケーション側から取得できました!

おわり

bitnami...

cf40c9ed70a21327c23402903ad17be9_3172.jpeg

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?