Azure 系エンジニアから見た GCP 〜Cloud Storage編〜

先週に引き続き GCP を見ていく。

前回は仮想マシン相当の Google Compute Engine だった。
Azure 系エンジニアから見た GCP 〜Google Compute Engine編〜 - ぐだぐだ言ってないでコードを書けよ、ハゲ。

今回はファイルストレージ相当の Cloud Storage。
Azure では Blob Storage、AWS では S3 にあたる。

Cloud Storage

料金

全般

Azure Storage Blob の価格 | Microsoft Azure

Google Cloud Storage の料金体系  |  Cloud Storage ドキュメント  |  Google Cloud Platform

アクセス頻度に基いてどのタイプを使うか選択する。
Azure は単リージョンに置いたとき(LRS)と複数リージョン(GRS)に置いたときで容量課金が純粋に倍になるが、GCP はそうでもない。
GCP ではマルチリージョンで細かいリージョン指定ができないので、東京のように高いリージョンは使われていなくて、結果的に料金が安く見えてるのかもしれない。

マルチリージョンでないプランならリージョンを指定できる。

余談だが Azure の料金プランは V2 ができつつある関係ですごく複雑になっていて見通しがよくないのでつらい。

SLA

細かい話だが SLA に関する対処は横並びっぽい。

料金プランの適用範囲

Azure だとストレージアカウント単位で料金プランを選ぶが、GCP では料金プランを意味する「ストレージ クラス」をオブジェクト単位で指定できるようになっている。
バケットで指定する料金プラン(ストレージクラス)は、あくまでもオブジェクトの料金プランのデフォルトという位置づけ。
特定のオブジェクトのプランを後から変更するのも可能。

オブジェクトのストレージ クラスの変更  |  Cloud Storage ドキュメント  |  Google Cloud Platform

リクエスト課金

リクエスト課金の部分はアクセス元のプロジェクトに払わせることができる。
Azure Blob にはなかったはず。

アクセス

アクセス権限を細かいレベルで管理できるのは想像がつくので特に見てない。
静的サイトのホスティングも普通にできる。

https://storage.googleapis.com/(Bucket_Name)/(Object_Name)

バージョニング

バージョニングを有効にすると、ファイルをアップロードしたときに前バージョンが残る。
最新以外のファイルを操作するにはコンソール(Webのポータル)ではできず、cli ツールである gsutil を使う必要がある。

Azure だとバージョニングはなくて、スナップショットで取ることができる。

Creating a Snapshot of a Blob | Microsoft Docs

スナップショットは明示的取らないといけないので、有効にしておけば自動的に取れる GCP とどっちがいいかは良し悪しか。

GCP Console 周り

今回も Console でいいなと思った部分があった。

調べながら使うというところがすごくカバーされているのを感じる。
Google検索を持ってるから、どこで脱落しているかなどが手に取るようにわかっているのだろう。

あとがき

わかりやすくて機能が少ないサービスは軽く流していけるが、GAE みたいなサービスをどうやって見ていこうかちょっと迷う。
GCP は数年前に見たときのイメージで Go や Java, Python あたりが一級市民てイメージがあるので、ちょっとは書ける Python かこれからの Go を書きながら検証していくしかないのかな。Java は知らん。

Azure 系エンジニアから見た GCP 〜Google Compute Engine編〜

昨年は Microsoft Azure をある程度キャッチアップできた気がするので、今年は Google Computer Platform をキャッチアップしていきます。
今回は公式チュートリアルの最初にあった GCE を見て気になったところをメモしてます。

GCE について

管理

GCP でははじめにプロジェクトを作成し、リソースはプロジェクトの中で作成します。
インスタンス単位で ssh 公開鍵を登録するのはもちろん可能ですが、プロジェクトで ssh 公開鍵を作成し、GCE の各インスタンスではデフォルトではプロジェクトの公開鍵を利用できるため、厳格なポリシーがなければこれで事足ります。

ネットワーク - プライベートアドレス

Azure では内部IP範囲が他の仮想ネットワークと重ならないようにデフォルト指定されます。
これは複数の仮想ネットワークをピアリング接続する可能性を考慮してのことだと思われます。

一方 GCP ではリージョンでデフォルトのIPが決まっていて、別のプロジェクトで作成したプライベートIPの範囲とは重なります。
割り切りですね。

このあたりは好みが分かれるな気がします。

ネットワーク - セキュリティグループ

Azure で言うところの NSG, AWS でいうところのセキュリティグループについて。
Azure ではルールセットである NSG を作成し、VMのネットワークインターフェースかサブネットにアタッチします。

GCP ではネットワーク全体かサブネットかタグにアタッチします。
VMインスタンスがタグを持つことで、特定のインスタンス向けのルールを作成できます。
プラットフォームが役割としてのタグを強制するのは、個人的には好きな対応です。

オートスケール

インスタンスグループという機能によってオートスケールを実現しています。

コンテナ

Azure では Docker コンテナを動かす Web App for Container というサービスがあります。
GCP では GCE でコンテナ機能が実装されていて、驚きました。
現段階ではアルファ版 ということなので、今後どうなるかわかりませんが、注目です。

インスタンスグループにローリングアップデート機能などもあるため、いろいろ捗りそうです。

GCP 全般について

ゾーン

GCP ではリソースを作成するときにゾーンを指定します。
ゾーンは {大陸}-{方角}{NO} となっているので、そのゾーンがどの国を意味しているのかはググって解決してました。
それでいて 料金 ページでは国が表示されるので「このリソースを作るといくらかかるんだっけ?」という気持ちになりました。

ポータル

Azure ポータルは遅いので、そこが快適な GCP は気持ち良いです。
Azure-CLI を使うという手はもちろんありますが、ここは見習って欲しいところ。

おわりに

次はストレージかデータストアあたりを見ていくはず、たぶん。

Amazon Echo はじめた感想

2017/11/27 に Echo 招待リクエストを投げて、2018/1/10 に招待が来て、1/13 に開封した。

Amazon Musicペルソナ4のサントラをかけながら書いている。
音質がよい。

セットアップ

結論、iPhone アプリからセットアップすべき。

Alexa のリスニング能力について

かなりよい。

現在提供されているスキルについて

プライム会員は Amazon Music でサントラ聴いてればいいのでないか。

音楽+25分ポモドーロのアプリは、スキル:集中タイム のこと。

Azure で Alexa 連携する

まだ何もできてない。

スキル作る人へ

「話しかけ方の例」は必須では。

よし、開発するぞ!と意気込んだところ、サクッと開発者アカウント周りでやってしまった気がするので、これから開発する人は下の記事を一読しながら登録したほうがよい。

Alexa 開発者アカウントのハマりどころ - Qiita

ということで買ってやっていきましょう。

Amazon Echo (Newモデル)、チャコール (ファブリック)

Amazon Echo (Newモデル)、チャコール (ファブリック)

Azure PaaS のメンテナンスについて

API Management のメンテナンス?

Azure というか全体的に Intel CPU が入ってるサーバーでは年始から再起動祭りとなっていました。

マイクロソフト、CPUの脆弱性対策でAzureの計画メンテを前倒し、全リージョンの仮想マシンを今朝から強制再起動。Googleは対策済みと発表 - Publickey

ちょうど今日(1/4)19時頃 API Management を触っていたのですが、15分ほどサービスが停止していて使えないタイミングがありました。

f:id:khei-fuji:20180104193004p:plain

デプロイしていた API Management は Developer Tier だったため、SLA はありません。
料金 - API Management | Microsoft Azure

確信はありませんが、もしかすると今回のメンテナンスによる再起動だったかもしれません。
という出来事から PaaS に思いを馳せていました。

PaaS のメンテナンスについて

Azure では IaaS メンテナンスでは、その上で稼働している PaaS のサービスについてメンテナンスのアナウンスは来ません。
これは PaaS のサービスは SLA の範囲内で稼働する設計になっているためです。

今回の API Management は Developer より上の Tier では SLA が設定されています。
アーキテクチャを調べてませんが、Azure の可用性セットで組まれて冗長化されたサーバーが同時に再起動しないようにしているのでしょう。

他にも例を挙げると、Application Gateway は1インスタンスのみで動かすと、VM再起動のタイミングでサービス停止します。
高可用性を求める場合は2インスタンス以上のデプロイをするものとされています。

Application Gateway に関してよく寄せられる質問 | Microsoft Docs

では PaaS にはメンテナンスがないのかというと、そういうわけでもありません。
たとえば機能の変更によるアナウンスがあります。
App Service で PHP 5.5 をサポート終了するときはこういったアナウンスが出ています。
Retirement of the PHP 5.5 runtime from App Service

これはアプリケーションレイヤーで対応が必要になる場合があります。
(もっとも IaaS であってもサポート終了するミドルウェアには追随していくものでしょうが・・・)

まとめ

PaaS ではメンテナンスというよりは強制的なマイグレーションが発生します。
サービスも多く学習コストがかかりますが、一つ一つのコストは低めに作られているので、サービスに合わせて取り入れていきたいものです。

Azure Data Factory v2 のドキュメントレビュー

以前、初めての執筆業を 日経クラウドファースト で行った。

(日経クラウドファーストは有償の冊子で、上記リンクは購読者向けの Web ページ)

執筆中(しかも終盤)に v2 がプレビューでリリースされるという「クラウドあるある」な出来事が起き、差分についてはある程度おさえて追記した。
たまたま最近 v2 のドキュメントを読んだので、そこで気付いた v1 との違いについて書いておく。

オンプレミス用アプリケーション

統合ランタイムのインストール

Data Factory がオンプレミスのデータを参照するために、ゲートウェイとなるアプリケーションをインストールするが、この名前が変わっている。
v1 では Data Management Gateway だったが、v2 では Azure Data Factory Integration Runtime に変わっている。
最近の Microsoft は何かと名前を変えてくる。

ゲートウェイからアウトバウンドの通信が発生するという仕組み自体は特に変わってない様子。

パイプライン作成

パイプラインを作成する | Microsoft Docs

JSON の定義は特に変わってない様子。

Data Factory 自体はポータルから作成できるが、その先がポータルでは何もできない。
パイプラインの定義は PowerShell, .NET, Python, REST で行う。
2017/12/23 現時点では v2 はパブリックプレビューのため、ポータルがまだ実装できてないのだと思われる。

Azure Portal を使用して Azure データ ファクトリを作成する | Microsoft Docs

v1 のときは Azure ポータルと専用ポータルから作成する手段があったが、v2 では専用ポータルになりそうな様子。

今のところこんなところ。
使う機会があればまた何か書く。

Microsoft Azure実践ガイド (impress top gear)

Microsoft Azure実践ガイド (impress top gear)

Azure のムダ遣いを見つける

この記事は Microsoft Azure Advent Calendar 2017 の15日目の記事です。

私からは特定の Azure のサービスについてではなく、普段 Azure を使っていて困ることとその解決策について書きます。

困ること

  • 請求金額がやけに高いと思ったら、検証で作った VM が生き残っていた
  • イベントのセッション聴きながら作ったリソースが散在してる
  • ちりつもで MSDN サブスクリプションのクレジット を使い切って停止してあとX日しないと復帰しない

クレジットを超過するとこういうことになります。


豆知識ですが、クレジット超過分の制限は一時的に解除できる仕様でした。

解決策

NuGet Gallery | Microsoft.Azure.Management.Fluent 1.4.1

NuGet に Microsoft.Azure.Management.Fluent という Azure のリソース情報を取得するパッケージがあることを知ったので、これを利用して有償のサービスをムダ使いしているものをお知らせする ARMNotify をつくりました。
いや、つくってます。

github.com

みんな大好きな Deploy To Azure ボタンを用意してあるので、簡単に試せるはずです。
ARMNotify は Azure Functions で動かす想定です。
サブスクリプションにアクセスできる Service Principal を用意しておく必要があります。

ARMNotify はムダ使いしていると思われるリソースとそのリソースを操作しているアカウントの情報をまとめてくれます。
現時点のソースコードでは Deploy To Azure でデプロイすると、ARMNotify から Logic App を経由し、指定の WebHookURL までお知らせしてくれます。

f:id:khei-fuji:20171202165324p:plain

VMなどオーソドックスなサービスについては対応してますが、あまり使い馴染んでないサービスについては検証が面倒なので対応できてません。

お願い

ムダ遣いをなくすために、もっといいソリューションがありましたらぜひお聴かせください。

最後に

Azure 始めたばかりの方はこちらもよろしければどうぞ。

kheiakiyama.hateblo.jp

iPhone 7の通信トラブルで本体交換となりました

現象

今朝(2017/12/10)起きたとき(10時頃)から2016年9月に購入した iPhone7 の通信がつながりなくなりました。
現象としては「圏外」が表示されるというもの。

SIM フリー版で、回線は IIJmio みおふぉんを使っています。
SIMフリーでiPhoneの後継機種に乗り換えたときにやること - ぐだぐだ言ってないでコードを書けよ、ハゲ。

格安SIM/格安スマホ・インターネットサービスのIIJmio

やったこと

再起動

まずは何も考えずに再起動しました。
結果、「検索中...」が表示されるように現象が変化しました。
おそらく原因は同じと想像します。

契約の確認

続いて原因の切り分けのため、みおふぉんの別SIMを家族が使っているため、電話が繋がるか確認してもらいました。
結果、問題なかっため、少なくとも料金支払いなどの問題で回線契約が閉じられた可能性は排除できました。

SIM か端末か

予備のSIMや別端末がなかったため、SIMか端末の切り分けが困難でした。
SIM側については、まずは「iijmio つながらない」などでググって、IIJmio 側のトラブルシューティングを試しました。

よくあるご質問(FAQ)|故障・トラブルについて | 格安SIM/格安スマホのIIJmio

試せることがなくなったため、ひとまず年中無休のサポートに問い合わせを投げておきました。
IIJmio:会員用お問い合わせ窓口

ついでに端末側のフォローということで Apple StoreGenius Bar を見たところ、当日の枠がたまたま空いていたので予約しました。

Genius Barの予約とAppleサポートのオプション - Apple(日本)

あとは来店前にデータのバックアップを取ります。

iPhone、iPad、iPod touch をバックアップする方法 - Apple サポート

Genius Bar にて

銀座店は週末ということもあり大変混雑していましたが、予約していたのでスムーズに対応していただきました。

「すべての設定のリセット」で直る可能性が半々とのことで、やりましたが変わりませんでした。
次に「すべてのコンテンツと設定を消去」し、リカバリモードで起動すればシステムの問題だった、ということでした。
2回トライしていただきましたが、「不明なエラー 3」が表示されました。

もうどうにもできず、有償の本体交換になるということでした。
同じスペックの端末は在庫があるため、その場で支払って交換してもらいました。

SIMフリー版の場合は端末切り替えの時間が短すぎると、端末がロックされてしまう場合があるとのこと。
そのための1時間空けるというハックらしいです。

おまけ

ついでに Genius Bar のサポートの方に聞きました。

  • iTunes のバックアップはファイルシステムのバックアップなの?iOS10使っていたのでそこに戻ると嬉しいんですが。
    Genius) OSレイヤーでのバックアップなので、新しい端末のiOS11になってしまう。
    Genius) 公式な回答ではなく個人での話だがダウングレードする方法はあったはず。
  • 今回の件は Apple Care 入ってたらどうだったんでしょう?
    Genius) 無償交換です。

後で調べたところ料金が書かれているので、無償じゃなくて対象になる、という回答だったかもしれません。
iPhone 修理サービス料金 - Apple サポート

復旧

iPhone に紐付けた Suica は使えないので、手持ちの予備 Suica で帰宅し、iTunes から復旧しています。
アプリのインストールに1時間半というところでしょうか。

電話アプリはすぐに使えたので確認したところ、問題ありませんでした。
IIJmio の問い合わせはクローズすることに。(何の返答もありませんでしたが)

つい最近ガラスフィルムを購入したばかりでしたが、再度購入しました。

その後

通信トラブルが解決したので iOS 10に戻そうと調べたところ、ファームウェアの署名が停止されており、ダウングレードはできない模様です。

Apple、iOS11とiOS10.3.3への署名を停止、ダウングレード不可能に - iPhone Mania

最後に

タイムラインで見るとこんな感じでした。

出費は痛い*1ですが、即日復旧できたのはよかったです。
なお、このあとに各アプリごとの復旧があります。

これまで iPhone4 の頃から Mac Book Air も使っていましたが、故障などのトラブルになったことは一度もありませんでした。
なので Apple Care はただの値上げだと思ってましたが、こういうときのためにはいいんでしょうか。

AppleCare - Apple(日本)

ちなみに今回本体交換した端末についての保証期間が気になります。
交換した今日から1年保証されるってことでいいんですかね?
聞いておけばよかった。

Apple 製品 1 年限定保証


*1:この後、返金されました http://kheiakiyama.hateblo.jp/entry/2018/03/17/133038