Atsumaru Engineer's Blog

集客プラットフォーム事業を手がける株式会社あつまるのエンジニアブログです

入社4ヵ月中国から上京したエンジニア、Alibaba Cloudで「Hello World(你好世界)」する

初めまして、現在、株式会社あつまるでPythonエンジニアをしている、「金」と申します。

私自身、エンジニアブログ初投稿になりますので、簡単に自己紹介をします。

私は、中国の大連を出て、日本のあつまるで新卒入社しました。
現在、入社4ヶ月目になります。

元々、日本のアニメが大好きで、小さい頃から今まで多くのアニメを見てきました。
特にNARUTOワンピースが好きです!
ぜひ一度、日本に行きたいと思っていたところ、
中国の大連で株式会社あつまるの説明会に行き、そこであつまるの魅力に惹かれ、
あつまるへの入社を決意しました。

f:id:Kin_s:20190225132352j:plain

Alibaba Cloudを試した背景

弊社は主にシステム開発において、AWSクラウドサービスを使っています。
しかし、他のクラウドサービスも気になり、
SoftbankのAlibaba Cloudの勉強会に行きました。
そこで、Alibaba Cloudのいろんな分野の成功事例をみて、
Alibaba Cloud サービスが気になり触ってみることにしました。
そこで、今回、Alibaba Cloudの概要と、ECSの実装(ブラウザでhello world表示)について私なりにまとめてみました。

「Alibaba Cloud(アリババクラウド)」 の概要

f:id:Kin_s:20190225122301p:plain

■ Alibaba Cloudは中国アリババグループの自社プラットフォームとしてビジネスを開始しました。

AlipayやTaobao、Tmallといった日本でも知られるサービスの基盤として利用していく中、そのノウハウを生かし、中国国内はもちろん日本のお客さまにもサービス提供を開始しています。

■ 中国ECサイト市場 最大の商戦日 11月11日「独身の日」

(ダブルイレブン、W11、双11 とも言われる) のインフラで使われており、
開始3分で売上100億元(約1700億円)、1日売上2.8兆円の流通規模のトラフィックを捌くほどの性能を持っています。


1日売上2.8兆円の流通トラックってすごくないですか?
一日売上2.8兆円というのは、楽天の1年間の売上とほぼ同じですよ!
そして、中国何億人のユーザーの訪問を順調に処理できるAlibaba Cloudの
ウェブサーバの性能、柔軟性も本当にすばらしいと思います。

環境:

f:id:Kin_s:20190225122352p:plain - OS : Linux Ubuntu  14.04 64位(他にも、多くのOSに対応していました。)
- Nginx
- Gunicorn ※使用しているパソコンは、MacOS Mojaveです。f:id:Kin_s:20190225122420p:plain

Alibaba CloudでECSを購入して(新規登録は無料で1ヶ月使えます)、ssh接続方法でウェブサーバに接続できます。

ssh root@[IPアドレス]

パスワードを入力すれば、こんな画面が表示されます。 f:id:Kin_s:20190225122452p:plain

step1: Python環境の用意

・ウェブサーバの中には、Python2の環境がデフォルトで設定されていますが、
Python3の環境を使用する場合は、別途、環境構築が必要になります。
・自分が構築したプロジェクトをFTPソフトまたは、scpコマンド等でウェブサーバにアップロードします。

$ scp -r [localのpath] root@abc.com:[サーバのpath]

step2: Gunicornをインストールする

Gunicornをインストールする前に、WSGIサーバとWSGIの概念を紹介します。

・Gunicornとは、Python製のWSGIサーバです。
・WSGIサーバとは、WSGI(Web Server Gateway Interface)でサポートされているWebサーバとWebアプリケーションをつなぐサーバという感じです。
・WSGIとはプログラミング言語Pythonにおいて、WebサーバとWebアプリケーション(もしくはWebアプリケーションフレームワーク)を接続するための、標準化されたインタフェース定義です。


・プロジェクトごとに環境が違うから、仮想環境でGunicornを使う方がいいです。

(venv) $ pip install gunicorn

Gunicornを実行する

gunicorn -w 4 -b 127.0.0.1:8000 「ファイル名」:app

ここでは簡単なhello.pyを実行してみます。 (今回はpythonのFlaskを使って、ブラウザで "hello world"を表示します)

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return 'hello world'
if __name__ == '__main__':
    from werkzeug.contrib.fixers import ProxyFix
    app.wsgi_app = ProxyFix(app.wsgi_app)
    app.run()

実行成功したら、 Webサーバで訪問できます。

curl http://127.0.0.1:8000/

上のコマンドで、Terminalで確かめることができます。

step3: nginxのインストール&環境設定

nginxとは:

nginxは、フリーかつオープンソースなWebサーバ です。
処理性能・高い並行性・メモリ使用量の小ささに焦点を当てて開発されており、リバースプロキシの機能や、ロードバランサ、HTTPキャッシュなどの機能も持っています。


・nginxをインストール

$ sudo apt-get update
$ sudo apt-get install nginx
$ sudo chmod 777

・nginxの環境設定

sudo cp /etc/nginx/site-avalidable/default /etc/nginx/site-avalidable/default.bak
sudo vim /etc/nginx/sites-avalidable/default

・相応な部分を編集します。

server {
    listen 80;
    server_name example.org; # ドメインまたは、IPアドレス

    location / {
        proxy_pass http://127.0.0.1:8080; # ここは gunicorn hostアドレス
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

設定した後、再実行します。

sudo service nginx restart

これで、OK。 ドメインとかIPアドレスで、自分のホームページを訪問できます。 f:id:Kin_s:20190225133852p:plain

備考

・nginxコマンド

起動: sudo service nginx start
restart: sudo service nginx restart
stop: sudo service nginx stop
テスト: sudo service nginx configtest

まとめ

今回、Alibaba Cloud ECSを使ってみて、
管理画面は(日本語、英語、中国)複数の言語に対応しており、
中国人の私にとってもかなり読みやすいかったです。
また、中国語のドキュメントも多かったので、すごく助かりました。
ここまで、勉強した範囲ではAlibaba CloudとAWSの差については、
まだ明確な差はわからなかったですが、 f:id:Kin_s:20190225122521p:plain 今後、AWSとAlibaba Cloudの差について学びながらアウトプットしていきます。