[Cloud102]#2-2 开始使用 GCP(后半部分:GAE 篇)

这个内容是“后半部分”。请参考以下链接获取“前半部分”。
http://qiita.com/nagahisa/items/d491da7099c1229d42d2

议程

0. 开始
1. 开始使用GCP
2. 什么是CGE?
3. 尝试使用GCE
4. 什么是GAE?
5. 尝试使用GAE
6. 什么是Cloud Datastore?
7. 试试使用Cloud Datastore
8. 什么是Cloud Storage?
9. 尝试使用Cloud Storage.

4. GAE是什么?

由于前半部分是关于”IaaS”的,所以对于有过个人电脑安装经验的人来说,这个概念相对容易理解和简单。而”GAE”是关于”PaaS”的,所以需要一些事先解释。

最近不太流行使用”PaaS”这个词,但我们首先来看看PaaS到底是用来干什么的。

(1) 什么是PaaS?

「クラウドコンピューティング」を大きく分けるとIaaS,PaaS,SaaSと大きく3つに分けられます。
連載の最初で私はIaaSは「サーバ」や「回線」などのインフラを仮想的に提供するサービス,SaaSはソフトウェアを提供するサービス,PaaSは「開発環境」を提供するものと説明しました。
しかし,「開発環境を提供する」と一口に言っても人によっては色々な意味合いが出てきます。
単に「開発環境を提供する」という事であれば,別にIaaSでもOSのインストールなどを行えば開発環境ができますし,
1枚のWebページを公開するだけであればSaaS的なサービスでもWebサイトやブログを構築できるサービスはあります。
それではPaaSは,どのような「開発環境」を提供するものになるのでしょうか? 
PaaSによって,提供形態に違いはありますが,PaaSは一般的にはプログラムの実行環境を提供するものと言われています。

PaaS 是指提供程序执行环境的东西,因此使用 PaaS 时,无需准备虚拟机、操作系统或中间件,即可执行程序。听起来非常方便啊。

这张解释的图可能很容易理解。
https://www.cloud-ace.jp/report/detail01/

基本上,GCP起源於2009年2月正式啟動的GAE。當時,Google提供GAE並宣稱「未來是PaaS!」,並未提供像GCE這樣的IaaS。

但是,那个时候的公共PaaS,例如Heroku,在部分开发者中间曾经引起了一些热潮,但最终并没有流行起来。与此同时,VMware也推出了一款名为Cloud Foundry(CF)的PaaS基础软件,但情况也很类似。我认为可以说是因为”PaaS的限制”导致PaaS本身并没有流行起来。

公共PaaS是提供程序执行环境的提供商,也就是说用户无法更改程序执行环境。公共PaaS提供商提供的服务只能使用开发语言、Http Server和数据库等。最初的GAE和CF提供的服务很少,也就是说开发人员受到了“选择的开发语言和中间件有限,无法使用想要的中间件”的限制。

但是最近对于PaaS概念“提供程序执行环境”的看法已经得到了重新审视。
CF不仅仅运用于IBM PaaS的Bluemix,还开始被应用于SAP HANA/GE Predix等开发平台。
http://cf-api-version.mybluemix.net/

我个人认为,目前流行的无服务器计算也可以说是一种平台即服务(PaaS)。

(2) Git和GitHub是什么?

可以用“亲自动手操作”这个词来解释一下,因为我需要做些说明。
– Git 是一个可以供大家使用的版本控制工具。
– GitHub 是一个可以让大家一起编辑 Git 的地方。
就像是这样简而言之,请通过搜索引擎自己调查一下。

100.JPG

在实践中,我们用它来获取在PaaS上运行的程序的源代码。

(3) memcache是什么?

因为这也要在实践中使用,所以需要解释一下、、、
不是使用数据库或文件(持久存储),而是使用内存缓存(易失性存储)
类似于一时工具,你可以搜索一下并查看一下。

大致可以说,它是一种可以通过键和键值对的形式进行值的输入和输出的易挥发的外部存储器。

102.JPG

在实践中,我们使用PaaS平台上运行的程序的初始版本来存储用户输入的字符串。

(4) 终于了解GAE是什么了?

101.JPG

GAE有两种环境,即标准环境(SE)和灵活环境(FE)。
灵活环境似乎可以跳过“PaaS限制”,但本次我们只使用标准环境。
https://cloud.google.com/appengine/docs

尝试使用GAE

在这个实践中,我们将按照以下三种模式依次运行使用Python编写的Web应用程序:
– memcache 版本:使用memcache存储输入数据的Web应用程序。
– Datastore 版本:使用Datastore存储输入数据的相同Web应用程序。
– Cloud Storage 版本:将输入数据保存到Cloud Storage的同一Web应用程序。

GAE是一种PaaS,基本上只需要做两件事就可以让Web应用程序运行起来:
– 准备Web应用程序的程序代码
– 将代码部署到GAE上

现在,我们来准备一个Memcache版本的程序,并将其部署到GAE上试试看。

0) 启动云外壳

你可以在自己的电脑上准备好程序,然后将其部署到GAE上,但是这样需要的准备工作比较麻烦。为了方便起见,我们可以使用”Cloud Shell”作为工作环境(”Cloud Shell”非常方便)。

001.png

准备一个Memcache版本的程序。

这个项目实际上是由Google为训练而准备的。

002.png
003.png

在”Cloud Shell”上输入以下命令来获取(memcache版)程序(git clone)。

git clone https://github.com/GoogleCloudPlatformTraining/cp100-appengine-memcache-python.git
010.png

将memcache版本的程序部署

请执行git clone下载的文件夹中的appcfg.py命令来进行部署。

cd cp100-­appengine-­memcache-­python
appcfg.py -A $DEVSHELL_PROJECT_ID update .
011.png
012.png

在这里显示的是“已完成应用程序更新:cp100-xxxxx(在上面的截图中是cp100-148305)”,但这是应用程序的名称(项目ID)。

“Cloud Shell”是一个GAE世界中必须设置为唯一的应用程序名称,它会自动分配一个唯一的名称,并将其存储在$DEVSHELL_PROJECT_ID环境变量中。(在appcfg.py命令的”-A”参数中指定应用程序名称)

(3) 验证Memcache版应用的运行情况

这个应用程序(网络应用程序)的网址是http://<应用程序名称>.appspot.com。
让我们尝试从浏览器访问这个网址。

013.png
014.png
015.png
016.png

(4) 检查Memcache

现在让我们来看看这个应用中的内存缓存吧。
这个应用的程序将内存缓存的键设为”entries”,所以我们输入它来进行搜索。

020.png
021.png
022.png
023.png
013.png

6. 云数据存储是什么?

Cloud Datastore是GCP的非关系型数据库,用于存储NoSQL数据。
NoSQL数据库基本上具有键值型数据存储功能。

200.JPG

尝试使用云数据存储。

(1) 准备Datastore版本的程序

返回”Cloud Shell”的主目录,并输入以下命令以获取Datastore版本的程序(git clone)。

git clone https://github.com/GoogleCloudPlatformTraining/cp100-appengine-datastore-python.git
040.png

(2)部署 Datastore 版的程序。

在通过git clone克隆的文件夹中,使用appcfg.py命令来进行部署。

cd cp100-­appengine­-datastore-python
appcfg.py -A $DEVSHELL_PROJECT_ID update .

(3) 对Datastore版应用进行运行验证

041.png
042.png

8. 云存储是什么?

201.JPG

尝试使用Cloud Storage

(1)准备Datastore版的程序。

回到”Cloud Shell”的主目录,输入以下命令来获取Cloud Storage版本的程序(git clone)。

git clone https://github.com/GoogleCloudPlatformTraining/cp100-appengine-cloudstorage-python.git
050.png

使用Cloud Storage版本的程序需要准备Cloud Storage环境。

创建一个用于存储数据的Cloud Storage存储桶,并在程序中指定它。
由于存储桶名称需要在全球范围内保持唯一性,所以请在其中加入自己的名字或采用其他巧妙办法。

030.png
031.png
053.png
033.png

(3) 修复云存储版程序

用程序指定在上面创建的云存储存储桶的名称(例如:cp100-kenzo)。
目标源代码是guestbook.py。

051.png

用诸如vi之类的编辑器打开并编辑以下内容。

BUCKET_NAME = 'ここに自分のバケット名を書く'
052.png

(4) 部署云存储版程序

部署操作通过在克隆的目录中执行 appcfg.py 命令来完成。

appcfg.py -A $DEVSHELL_PROJECT_ID update .
055.png

(5)确认云存储应用的操作

041.png

(6)确认云存储情况

056.png
057.png
058.png

尽情享受吧!