Amazon LightsailでMagento2ってどうなの?の話

この記事はMagentoAdventCalender2016 13日目の記事です。
Amazon Lightsailロゴ

先日AWS re:Invent初日にて華々しく発表されたLightSailがMagento2にも対応しており
30分足らずでMagento2がインストールされたVPSライクなインスタンスが立ち上げられる!
って話は西さんの記事でもご存知の方がいらっしゃるとは思いますが

Amazon LightsailでMagento2を立ち上げてみる
https://principle-works.jp/blog/launch-magento2-on-amazon-lightsail/

いろいろ初心者にはハードルの高そうに見えるAWSのインフラを
簡単な設定だけで利用できるのがとても魅力的なLightsailですが、今回実際に触ってみて、

・Lightsailってぶっちゃけどうなの?
・Magento2を利用するのに本当に使えるの?

そんなことを検証・考察していきたいと思います。

■Lightsailでインスタンスを作成してみる

Lightsailはインスタンスを作成する際に以下の項目を選べば作成できます。

・導入するサーバーイメージ
– APP込み ( Magento2 の他にもWordpressや Gitlab 、Redmineなど)
– OSのみ

・インスタンスのスケール
種類

・インスタンスを設置するZone(現在はVirginiaのみ)
・インスタンスの名前

ところでMagento2を快適に動かすには
・2GBのRAM (同一サーバーにDBを設置するなら置くなら4GB)
・2コア以上のCPU

が必要だと言われております。
そのため必然的に$40 / month 以上のインスタンスを構築することが必要になります。

■管理画面を触ってみる

インスタンス作成画面で必要な項目を選択し、インスタンスを作成するを押すと
あっという間にMagento2の環境が構築され、IPアドレスで繋ぐとMagento2の画面が出ます。

 またインスタンスごとの管理画面も生成されるためそこで設定変更やサーバー状態の確認ができます。
この画面はシンプルなUIなので直感的に利用することも可能です。
lightsail管理画面

インスタンスの管理画面できるのは以下の項目です
 ・WEB ブラウザからのSSHへの接続
 ・サーバー状態の確認(CPU情報、ネットワークIO、ステータスチェック系)
 ・Firewallの設定(ただし、送信元IPの指定は不可)
 ・snapshotの作成
 ・インスタンス履歴の確認
 ・インスタンスの停止、再起動、削除

加えてDNSゾーンを作成したり、StaticIPの設定をすることで最低限のドメインの設定も可能です。
また馴染みのあるAWS CLIやSDKでの操作も可能となります

ただしAMIの作成やセキュリティーグループの作成など細かい設定はできません。

■作成されたインスタンスの中身を見てみよう

現在LightsailでMagento2を選択して生成されるインスタンスはBitnamiのイメージが元になっているため
モジュール構成は以下のようになっております。

Ubuntu 14.04
PHP 7.0.11
Apache 2.4.23
MySQL Ver 14.14 Distrib 5.7.15, for linux-glibc2.5 (x86_64)
Memcached 1.4.31
Varnishd (varnish-4.1.0 revision 3041728)

またこれらのモジュールは全て/opt/bitnami配下に格納されているためmemchachedの代わりにRedisを使いたい場合などはこの辺の設定をいじってあげる必要があります。

インスタンス中身

またRDSや他のEC2インスタンスに対してローカルIPで接続する場合はLightsailの画面でAcountから
VPSPeerをEnableにすれば可能になります。

■LightsailにインストールされているMagento2ってどんな感じ?

LightsailにインストールされているMagento2はインストールスクリプトを実行した後のまっさらな状態になっております。

また管理画面については
id: user
pass: sshで接続した後のbitnami_application_passwordに記載してあります。

特に特別なカスタマイズもされていませんので、通常通り開発ができます。
またMagento ConnectにもつないでExtensionのインストールも無事にできます。
この辺はいつもと同じなので嬉しいですね。

■まとめ


–LightsailでMagento2を構築した際にできること

・月額40$+5TBを超えたデータ通信量の金額でMagento2の環境を手に入れられる。
・限定的なセキュリティ設定
・DNS設定、staticIPの設定
・snapshotの取得
・RDSや他のEC2インスタンスとの連携
・WEBブラウザからのSSH

—できないこと
・細かいセキュリティの設定
・ロードバランサーによる冗長構成
・AMIの保存

そんなわけでシンプルなUIでMagento2のインスタンスを構築できるLightsailですが
現時点ではプロダクションでの利用にはまだまだ向かないと思われます

理由としては、細かいセキュリティ設定ができないことがまず挙げられます。
さらに具体的には送信元のIPを絞ることができないため、所定のネットワークから管理画面を覗けるようにするといったことがしにくいです。
冗長構成もできないため、トラブルに弱い環境になってしまいます。
24時間365日いつでもユーザーに物を売れるECにとってダウンタイムが発生するのは単純に機会損失になってしまいます。
そのため冗長構成は必要不可欠といえます。

またインスタンスの中身から考えると、webサーバーがapacheだったり、キャッシュ関連がmemcachedなこともあり、
これらをプロダクションで動かすに当たってnginxやredisに変更する際は、大規模に設定を変更してあげる必要があるため、
必要な環境があらかじめ入っているという旨味を存分に生かしきれません。

加えてAZがVirginiaしかない現状ではlatencyも低く、WebでSSHをしていると0.5~1秒くらいのラグも発生し使いにくく、
不要な事故を生み出しかねない。。なんてことも考えられます。

ではどのような場合にLightsailのインスタンスでMagento2を立てればいいのかというと、
Magento2の動作実験用や、エクステンションの開発・検証環境として利用するのが現在は良いかと思います。

個人的にはLightsailの話を聞いた時にすごく画期的なサービスだと思いました。
特に地雷が多くインストールに一苦労するMagento2の環境を
ボタン一つでAWS上に作れることによってMagento2をとりあえず触れることは可能になったことは大きいです。
そしてこのサービスは生まれたばかりなので、これからどんどんブラッシュアップされて
面白いサービスになる可能性も大いに秘めているので今後も注目していきたいと思います。

明日はOsawa Toshihiroさんの記事です。そろそろ12月も半ばで、すっかり寒くなりましたね。
皆様あったかくして、風邪をひかないようにしてください。