IBM Cloud(PaaS)を使いこなそう！

## 始めに
この投稿内容は7/4に開催された`bmxug.tokyo これから始めるPaaS開発相談会`[(connpass)](https://bmxug.connpass.com/event/91928/)の内容です。
今まで、IBM Cloudを何となく触ってきたのですが、`Bluemix User Group`の力をお借りして、今抱いているモヤモヤしたことへの解決策や、なるほど！:point_up:というポイントをたくさん共有して頂けました。
#
# 当日の資料
@tokidaさんのPaaSに関する発表資料:[こちら](https://qiita.com/tokida/items/da9233b39505aa117040)
@ssakaigawaさんのDevOpsに関する発表資料:[こちら](https://qiita.com/ssakaigawa/items/d5f042810dcbf7d4571b)
私の発表(というか質問)スライド：[こちら](https://motuo1201.github.io/ibm-cf-question/)

この投稿では、私がCloud Foundryに対して勉強会前に抱いていた質問とそれに対するAnswerをメモしておきたいと思います。

### 質問１：接続って何ですか？
ダッシュボードの左側にある、「接続」。これやったら、何か良い事あるんですか？
![connect2.PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/480c71c1-c8d0-07ad-048b-48514e2728f9.png)

### Answer
この接続をする事で、環境変数(VCAP_SERVICES)に接続情報が設定されます。
こうする事で、連携するAPI等の資格情報をアプリケーションでハードコーディングする必要がなくなります。
また、接続するインスタンス(本番とテスト)等を切替るだけで、アプリケーションには一切の変更なく呼び出すAPIを変更することができたりします。:+1:

※下記は、`Watson Assistant`を連携させた時に作られる環境変数の例です。

```json
    "conversation": [
        {
            "credentials": {
                "url": "https://gateway.watsonplatform.net/assistant/api",
                "username": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
                "password": "XXXXXXXXXXXX"
            },
            "syslog_drain_url": null,
            "volume_mounts": [],
            "label": "conversation",
            "provider": null,
            "plan": "free",
            "name": "Conversation",
            "tags": [
                "eu_access",
                "ibm_created",
                "ibm_dedicated_public",
                "lite",
                "watson"
            ]
        }
    ],
```

### 質問２:継続的デリバリー
GithubにPushしたら自動でデプロイまでしてくれる素敵なツール(`Delivery Pipeline`)が**無料**で使えますよね。
![toolchain.PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/dc243d2f-2f5a-dca1-9d0a-9aeada125a39.png)

他に使える便利な機能はありませんか？？

### Answer
Pipelineでシェルを組んで、デプロイ前のテストの自動化をしたりできる。ただ、残念なところとしては、デプロイ前に承認プロセスを付けられないところ。(Pipelineが走ったら、そのまま本番までデプロイされてしまう:frowning2:Pipelineをデプロイ前に中止する等の工夫をする事で対応はできるが、課題を感じる部分ではあります。)
他におススメの機能としては、`Devops Insights`。これは連携しているソース管理ツール(この場合は、Github)のリポジトリを自動でマイニングして、コミットされたタイミングやテストの状況を視覚化してくれます:+1:
![DevOpsInsights.PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/c5f2198b-b8d7-e047-4c25-ecdb0bf5eef1.png)

### 質問３：可用性モニター
どんな使い道がありますか？
![monitor.PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/d8804f3a-0bdf-25a8-7517-aa0b7b9fc8ca.png)

### Answer
単純なpingを使った死活監視だけでなく、`Selenium`を使った自動操作テストも出来ます。
その為、ログインして複数のページを遷移する等のテストが可能です。

### 質問４：アプリケーションログを簡単に見る方法は無いか？
現在、SSH接続して直接、ログが吐かれているディレクトリを参照しています。これを簡単にする方法は無いでしょうか？

### Answer
**標準出力された**アプリケーションログは、画面左側のログから`Kibana`を起動するとログを見る事が出来ます。
その中の`source_id_str`に出力されるようになるので、ここを見ると良いです。
裏を返すと、ファイルにログをはいている場合は標準出力するように、アプリケーションを改修しましょうw
ちなみに、Laravelでのやり方(参考)は[こちら](https://qiita.com/iakio/items/86086e046f73826c9bef)

### 質問５：Kubernetesってどうですか？
今まではcf一本で開発をしてきましたが、やっぱり気になる`Kubernetes`。ぶっちゃけてどうですか？？

### Answer
Kubernetesは、様々なコンテナを管理できるのが魅力です。例えば、アプリケーションからアクセスする`DB`環境をコンテナとして管理する方法等が考えられます。インフラやミドルからの視点では開発が楽になる技術だと思います。(資金があれば、DBをClear DB
ただ、`Kubernetes`に100の機能があったとしても、エンタープライズで利用する用途としては1か2程度かもしれませんが…

次回は2018/8/1に勉強会を実施する予定です！
LaravelやNode等、いろんな言語をデプロイできるIBM Cloudに少しでも興味がわいた方はぜひ！

### 関連リンク
[IBM CloudにLaravelをデプロイする方法](https://qiita.com/motuo/items/b7d1fdf297349daca9fd)
[IBM Cloudのツールチェーンを使って快適なDevOpsを実現する。(Laravel)](https://qiita.com/motuo/items/ccbcde97571ded58c2ad)