プログラマでありたい

おっさんになっても、プログラマでありつづけたい

サーバレスアーキテクチャ(ServerLess Architecture)とBaaSの違い

 先日、サーバレスアーキテクチャ(ServerLess Architecture)について簡単にまとめてみたところ、様々なご意見頂きました。その中で特に多かったのが次の2つです。

  • サーバレスといっても、裏にはサーバがある
  • 単なるSaaSやPaaS,BaaSを別の言い方にしただけでは?

 面白い視点だと思うので、個人的な見解を整理してみます。

裏にサーバがあるのに、サーバレス?



 「サーバレスといっても、裏にはサーバがある」というツッコミは、その通りです。この文脈で言うサーバレスというのは、利用者側から見て管理するサーバがないという意味です。従来だと、自前でサーバの設定をして、パッチ当てやログの管理が必要でした。ChefやAnsibleなどの構成管理ツールを使ったとしても、自分で管理する必要があるという点では同じです。
f:id:dkfj:20151020080735p:plain

 これに対して、サーバレスの場合はユーザがサーバを管理する必要はありません。例えば、Lambdaというコンピュートエンジンのサービスの例です。おそらく裏には沢山のサーバで構成され、必要に応じて利用されているのだと思います。ユーザはLambdaのFunctionと呼ばれる個々の実行モジュールは管理するものの、そのプラットフォームであるサーバ群を管理する必要はありません。全てサービスの提供者であるAWSが行います。
f:id:dkfj:20151020081215p:plain

 つまりサーバメンテナンスレスと言えるのではないでしょうか?(メンテはAWSがしますよという意味で)

単なるSaaSやPaaS,BaaSの別の言い方では?



 これは、明確にNoと言えます。ここでは、BaaS(バックエンドサービス)との対比で説明します。サーバレスアーキテクチャとBaaSは、利用形態としては非常に近いです。どちらも手軽にバックエンドのサービスを利用するという形態です。明確な違いがあるとすれば、BaaSは本質的にサービス提供者が利用者に制約を課して一定の使い方を仕向けるものに対して、サーバレスアーキテクチャは利用者が特定の目的に沿ってサービスを組み立てるものです。どちらが優れているという話ではなく、レイヤーが違う話です。提供形態の話とアーキテクチャの話なので、そもそも比較の対象ではないですね。そのため、サーバレスアーキテクチャで作られたBaaSというものは、今でも沢山あると思いますし今後もいくらでも出てくるでしょう。
 上記のような前提があるので、利用者視点では以下のようにスタンスになると思います。

  • BaaSは簡単に利用できるもののカスタマイズがし難い
  • サーバレスアーキテクチャは、初期の構築が自前でする必要があるのでBaaSほど簡単ではないもののカスタマイズ性が高い

 実際、私もスマホからデータを溜めるという用途のプロトを作る時には、BaaSをよく利用します。

まとめ



 自分の中で当たり前と思っていることでも、他の人からすると腑に落ちないということは良く有ります。サーバがあるのにサーバレスって確かに面白い視点だなぁと思った次第です。

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2015/03/25
  • メディア: Kindle版
  • この商品を含むブログを見る

See Also:
サーバレスアーキテクチャとは?
仮想サーバ、コンテナサービス、ファンクション
クラウドファーストとクラウドネイティブ
AWS Mobile HubとAmazon API Gatewayからモバイル開発の今後を考える
JAWSUG千葉で、API Gatewayの話をしてきました。

サーバレスアーキテクチャとは?

 サーバレスアーキテクチャの整理です。少し前は、2-Tier Architecture(クラウドネイティブなアーキテクチャ)と3-Tier Architecture(従来のアーキテクチャ)という対比で論じられることが多かったです。しかし、API Gatewayの登場により、3-Tierな構造でもクラウドネイティブなアーキテクチャにしやすくなりました。ということで、サーバレスアーキテクチャ(ServerLess Architecture)と呼ばれることが多いです。

サーバレスアーキテクチャのパターン



 それでは、従来型のアーキテクチャ(旧3-Tier)と2-Tierパターン、API Gatewayを利用したサーバレスアーキテクチャをそれぞれ見てみましょう。

従来型のパターン( アプリケーションサーバ・パターン)

 まずは従来型のアーキテクチャです。間にELBを挟んでAutoScaleにすることは多いですが、リクエストをEC2が受けてRDSやS3などをバックエンドに使うことパターンです。この構成のメリットは、既存のオンプレミスのサービスを簡単に移行できることです。実際に、このパターンでの利用が一番多いと思います。いわゆるアプリケーションサーバパターンです。

f:id:dkfj:20151019080105p:plain

2-Tierアーキテクチャー・パターン

 次に、Cognito等を利用してモバイルやJavaScriptのクライアントから直接AWSのリソースを利用する2-Tierアーキテクチャのパターンです。2014年にCognito,Lambdaが出てからの流行しました。この構成は、リソースの利用効率が極めて高く、かつコストも最小で更に負荷に対してほぼ自動に拡張できる構成にし易いことです。
f:id:dkfj:20151019080117p:plain

API Gateway・パターン

 最後にAPI Gatewayを使ったパターンです。従来の3-Tierの構成に似ているものの、サーバレスを実現しています。この構成のメリットは、APIを経由してサーバサイドにアクセスするため、クライアント側にSDKを組み込む必要もなくロジックを最小限にできることです。その為、クライアント側のマルチプラットフォーム化がし易いです。
f:id:dkfj:20151019080147p:plain

まとめ



 サーバレスアーキテクチャのうち、2-TierパターンはAWS自身がMobile Hubというフレームワーク(サービス)を出しています。API Gatewayは、JAWSやFluctというオープンソースのフレームワークが出てきています。どの形が主流になるか解りませんが、AWSのサービスのありようがアーキテクチャの考え方に影響する時代になっているというのは間違いありません。

※2016/5/8追記 この辺りの話をまとめて書籍化しています。サーバレスアーキテクチャの考え方や実装例など、600ページ超の大作となっています。是非、ごらんになってください。
Amazon Web Services クラウドネイティブ・アプリケーション開発技法


※2015/10/20追記 サーバレスという言葉の定義とBaaSとの違いについても、少しまとめてみました。
サーバレスアーキテクチャ(ServerLess Architecture)とBaaSの違い


See Also:
仮想サーバ、コンテナサービス、ファンクション
クラウドファーストとクラウドネイティブ
AWS Mobile HubとAmazon API Gatewayからモバイル開発の今後を考える
JAWSUG千葉で、API Gatewayの話をしてきました。

クラウドファーストとクラウドネイティブ

 今年の春(2015年3月)に出版したAmazon Web Services パターン別構築・運用ガイドの序文に次のような文章を書いています。

クラウドという言葉が一般的になってから、もう何年も経とうとしています。当初は、不慣れな従量課金やセキュリティへの不安から、採用する企業はごく一部の企業に限られていました。しかし、クラウド自身の進化と、それを取り扱うユーザ・企業・コミュニティの成長とともに、多くの企業がクラウドを検討・導入するようになりました。そして最近では、クラウドファーストという考え方のように、システムの導入の際はまずクラウドで実現できないかという考え方が当たり前になりつつあります。今では更に考え方が進み、クラウドネイティブという名のもとに、クラウドを前提としたアーキテクチャ・設計が採用されつつあります。

 半年前は、現時点ではクラウドファーストが浸透してきた所で、その次はクラウドネイティブであるものの、それには後数年は掛かるのではないかと考えていました。ところが先日のre:Inventに参加して、その時はもうすぐそこにあると感じました。言葉としてはクラウドネイティブではなく、Microservices(マイクロサービス)やServerLess Architecuture(サーバレスアーキテクチャ)などの文脈で語られています。中身はどれも共通し、AWSのフルマネージドサービスを利用し、低コストで効率よく可用性の高いシステムを構築していこうという内容です。

クラウドネイティブとは?



 ところで、クラウドネイティブとはどういうものを指すのでしょうか?私の中での定義としては、次のようなものを想定しています。

 クラウドネイティブとは、クラウドのサービスを前提に構築されたシステムおよびアプリケーション。仮想サーバ上で自前でシステムを構築していくのではなく、SaaSを最大限活用し拡張性・可用性のあるシステムを低コストで構築する。

 まぁEC2のインスタンスを一杯立ち上げて、その上でセコセコとアプリケーションを構築するのではなく、サービス組み合わせてビジネスロジックの部分だけ自前でしっかり書くというようなものを想定しています。

クラウドネイティブのメリット



 個人的には、オンプレミスのサーバをクラウドに持っていくだけでも、メリットは大きいと考えています。ハードウェア障害などの物理的な障害から開放され、オンプレミス時代には出来なかった時間単位でのサーバの増減などもできます。一方で、オンプレミスの構成を持って行くと、サーバの管理に手間が掛かるというのも事実です。例えば、OSやミドルウェアのパッチ当てやバックアップ・ログローテーション等の運用は変わらず必要です。
 AWSの場合、マネージドサービスと呼ばれるSaaS群を利用すると、その部分は全てAmazonがやってくれます。さらには、サービス単位で可用性や拡張性も保証してくれます。一番簡単な例でいうと、S3です。一度S3にファイルを置くと、利用者はそのデータの保全に対して考えることは殆ど全くありません。裏でディスクが故障しようが、データセンターが壊れようが、Amazonが全て対処してくれます。また、利用できるディスクボリュームの総量を気にする必要もありません。利用者はただ使うだけです。そして、使った分の対価を払うだけです。これは従量課金なので、将来的に100GB使うから、予めその分を織り込んで支払う必要もありません。
 AWSでは、同様のマネージドサービスが様々なレイヤーで増えてきています。ストレージから始まりキューやメール、さらにはコンピュートサービスまでです。現時点でも、殆どのシステムがサービスを組み合わせるだけで構築できるようになっています。ということで、サーバ管理が不要な時代が来ています。さらに、マネージドサービスなのに普通に仮想サーバをたてるより安いという不思議な状況になっています。となると、既存もしくは新規のアプリケーションをクラウドネイティブに作れるところが、どんどん有利になってくることになります。

まとめ



 唐突ですが自分の頭の中の整理用に、クラウドネイティブってそもそも何というのを整理してみました。じゃぁ、実際にどういうアーキテクチャになるのとか、何が出来て何が出来ないのかという話がでてきます。順次整理してみようかなと考えています。

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2015/03/25
  • メディア: Kindle版
  • この商品を含むブログを見る

仮想サーバ、コンテナサービス、ファンクション

 先日に続きreInventの基調講演を聞いた感想です。この1枚にAmazonが考えるLambdaの重要性が濃縮されているように思えます。

f:id:dkfj:20151015071838p:plain

 まずVirtual Machinesですが、これはEC2やElasticBeanstalkのような仮想サーバを指します。AWSの根幹を支えるサービスですね。次にContainersは、EC2 Container Service(ECS)です。EC2を仮想化して束ねて使うサービスですね。そして、FunctionsはLambdaです。コードをアップロードするだけで利用できるコンピュートエンジンです。
 AWSの中で仮想サーバは最重要サービスであることは間違いないのですが、その次に力をいれてくるのはContainersだと思っていました。それが、この絵をみると同列の存在としてLambdaが出てきています。Amazonとして、Lambdaが如何に大切なサービスなのかというのを表しているように思えます。

 実際、IoTやKinesisの新サービスを見ていると、処理部分の連携はLambdaを前提とされています。また、AWSの基盤となるべくLambdaの機能拡張が幾つも発表されました。個人的な感覚ですが、2日間の基調講演を通して参加者の反応が一番大きかったのはLambda関係の発表だったのではと思います。この辺りがカンファレンスに実際に参加するメリットかなと思います。

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2015/03/25
  • メディア: Kindle版
  • この商品を含むブログを見る

See Also:
AWS Mobile HubとAmazon API Gatewayからモバイル開発の今後を考える
JAWSUG千葉で、API Gatewayの話をしてきました。
Lambdaで作るクローラー/スクレイピング

AWS Mobile HubとAmazon API Gatewayからモバイル開発の今後を考える

 今年の夏に発表されたAmazon API Gatewayから、モバイルアプリのバックエンドについてのアーキテクチャのあるべき形を検討しておりました。自分の中ではある程度の結論が出ていて、幾つか実験的に構築して満足する結果は出ております。ところが、先日のreInventでAWS Mobile Hubが発表されたことにより少し混乱することになりました。AWSが勧めるアーキテクチャはどんな形なんだと。ということで、一旦整理してみます。まずは、API Gateway・Mobile Hubを使ったパターンのそれぞれの比較です。

Amazon API Gateway



 API Gatewayを利用した場合は、モバイルアプリからのAWSリソースの利用はAPI Gatewayを経由することになります。また実際にはAPI Gateway⇒Lambda or API Gateway⇒Lambda⇒他のAWSリソースという形になります。
f:id:dkfj:20151014011737p:plain

 この形式のメリットは、モバイルアプリ側はAWS側を全く意識しないでよいところです。APIを通じているので、モバイルアプリとしては通信先がAWSであろうが別のサーバであろうと意味がないからです。また逆にAPI側としては、クライアント側はモバイルアプリであろうがJavaScriptなど複数のプラットフォーム&アプリから呼び出しても問題ありません。
 またAPI GatewayからAWSリソースの呼び出しを制御するため、ロジックがAWS側に集中することになります。このため、iOSやAndroidの2つのOSに対応した場合でも、実装の段階でのロジックの差異が入り込みにくいというメリットがあります。また、アプリリリース後にもサーバ側の変更でロジックが変更できるというのもメリットかもしれません。

AWS Mobile Hub



 Mobile Hubは、利用するサービスを選択すると、iOS・Android向けのソースコードをそれぞれ生成してくれます。開発者は、そのコードを元にアプリ特有のロジック部分を実装します。そして、アプリのデプロイを行います。AWSのリソースは、モバイルアプリから直接コントロールすることになります。
f:id:dkfj:20151014011748p:plain

 この形式のメリットは、モバイルアプリ側でほぼ完結して開発できることになります。またAPI Gatewayであげたように、複数のプラットフォームをサポートしないでよい場合は、こちらの方が効率的です。それ以外にも直接AWSのリソースを扱うため、オーバヘッドが少なくAPI Gatewayより通信効率・レスポンス性は高くできる可能性はあります。

関係するセッション



 この辺り、どちらを使えばよいか解説しているセッションないかなぁと探したのですが、今見た限りあまりないです。下記のスライドで少し触れているくらいです。 www.slideshare.net

どちらを利用すべきか



 今のところ、前提条件次第だと思います。下記のような観点で検討すべきかと思います。

  • 複数のプラットフォームをサポートする必要があるか
  • ロジックは、複雑か?
  • ロジック変更の頻度
  • レスポンス性が最重要の項目か

 私が担当するアプリでは、クロスプラットフォームで、かつサーバ側からのレスポンスについてもそこまで求められないものが多いので、API Gatewayに利点を感じています。複数人で開発することが多いので、ロジック部分を集約しやすいのもメリットですね。

感想



 今回、AWS内で設計思想が異なるサービスが出てきたので少しびっくりしました。考えてみると、前提条件が異なると最適なアーキテクチャが変わってきます。それをサポート出来る多様性が増したのだな思います。サーバレスアーキテクチャも色々なパターンが出てきそうな予感ですね。楽しみです。

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2015/03/25
  • メディア: Kindle版
  • この商品を含むブログを見る

reInvent滞在中にお勧めの部屋飲みのアメリカワイン

 世界最大のAWSイベントであるreInventに参加中です。参加者・登壇者のとてつもない熱気で凄いお祭りです。ところで、会場のとなりの薬局系雑貨屋(?)のWalgreensが思いの他にワインが充実していたので、アメリカ・カリフォルニアのワインを幾つか紹介したいと思います。どれも日本でもよく売られているので馴染み深いワインだと思います。カリフォルニアワインは値段の割に品質高くて、結構お得です。

レイバンズウッド ジンファンデル(Ravens Wood Zinfandel)



 ジンファンデル(Zinfandel)というのは、ほぼアメリカ・カリフォルニア州でしか生産されていない珍しい品種です。そのなかでレイバンズウッドは、3Rと呼ばれるジンファンデルの有名な造り手の1つです。廉価ながらボリュームがあって美味しいです。ジンファンデル自体は、カベルネ・ソーヴィニヨンやピノ・ノワールと言った高級品種に比べると野性味があって、好みが別れるところです。私は大好きで、アメリカ在住の時によく飲んでいます。$11.99で売っていました。日本で買うと2,000円強くらいで売られていることが多いです。
f:id:dkfj:20151006214649j:plain

フランシス・コッポラ ピノ・ノワール(Francis Coppola Pinot Noir)



 ゴッドファーザーの監督として有名な映画監督フランシス・コッポラ−が所有するワイナリーです。コッポラ−さんは、何気に色々なワインを出していて有名どころで言うと、このフランシス・コッポラと、娘に捧げたワインであるソフィアや、名門ワイナリーを買収したルビコン・エステート(現イングルヌック)があります。
 個人的な好みとしては、フランシス・コッポラは癖が少なすぎて好きではないですが、ワインが飲みなれていない人には取っ付き易くてお勧めです。$19.99で売っていました。ちなみにイングルヌックは、個人的にカリフォルニアワインで一番好きなワインです。
f:id:dkfj:20151006214714j:plain

ケンダル・ジャクソン カベルネ・ソーヴィニヨン(Kendal Jackson Cabernet Sauvignon)



 ケンダル・ジャクソンは、わりと良いワインに分類されると思います。日本で店舗で買ったら4,000円くらいで、レストランで飲んだら1万円は超えると思います。ここだと$24.99で売っていました。わりと王道のカベルネ・ソーヴィニヨン(赤ワインの高級品種)で、癖が強すぎずに香りも後味もしっかりというワインです。
f:id:dkfj:20151006215523j:plain

終わりに



 Walgreensは、ベネチアンの両隣にあります。トレジャーアイランド寄りの方が充実しています。なお味の好みはあくまで主観の問題なので、自己責任でお願いします。
 また時間があったら、お土産用の良いワインを探してみます。MERRYVALEあたりがあれば、恐らくアメリカでは$50くらいだけど、日本のレストランでは3万円くらいなのでコスパ的には良いのではと思います。

See Also:
私が旨いと思う、普段飲みの1,000円台のワイン
身も蓋も無い1,000円台のワインの選び方
ワインの品種。まずは3つだけ覚えておけば大丈夫

「みんなの体操」で、数年来の肩こりが治った話

 30台半ばくらいから、肩こりがひどくなりました。特にここ数年はひどく、肩こりからの頭痛に発展することが多かったです。その上、頭痛は気が抜ける週末にくることが多く、何か損した気分でした。当然、改善を試みて幾つか試してみましたが、失敗の連続でした。

試したこと



・ジョギング
 ⇒運動不足が原因ということで、運動不足解消にはジョギングと試す
  それなりにまとまった時間がいるので、土日だけになってサボりがちになって消滅。
  そもそも肩こりに、そこまで効果がなかった。
・柔軟体操
 ⇒すぐに飽きて忘れる
・筋トレ
 ⇒腕立てなどを続けていると、肩こりは治った
  ただし、毎日続けられなくてサボりがちになって消滅
・鍼灸
 ⇒やった後は絶大な効果が発揮する。
  ただ2〜3日で元にもどり、通えるのは週末だけ
・足つぼマッサージ
 ⇒超絶痛かった

 まぁ何というか、鍼灸以外は一人もくもく系で、それを続ける根気はないのがハッキリしました。

みんなの体操



 そこで始めたのが、NHKのEテレで毎朝6時半から放送している「みんなの体操」です。毎日微妙に変化していますが、みんなの体操とラジオ体操の2部構成が多いです。

www.youtube.com

 何故か不思議と続けられます。理由は詮索しないでください。私のイチオシは、原川さんです。嫁さんのお気に入りは、天井澤さんです。一人で筋トレや柔軟体操していると続かないのですが、テレビでお姉さん方見ながらだと不思議と続きます。嫁さんが起きていたら、二人一緒に体操出来るのも良い所です。
 そして肝心の肩こりなのですが、綺麗さっぱり治りました。みんなの体操とラジオ体操ですが、基本的に肩・首・腰をひたすら回すことに重点を置いています。これを10分毎日やるだけで、今のところ肩こり知らずになりました。背中の張りとかも時々出ていたのですが、これも無くなっています。回すということは大事なんだなぁと実感しています。あと、小学生の時には気が付かなかったのですが、ラジオ体操をしっかりすると、割りと息がきれます。こんなの体操のうちに入るかと思ってたのですが、良い体操でした。

まとめ



 小さなことですが、習慣化する為のヒントがありました。

・面倒くさいと思っていることを、精神力で続けられるほど意思は強くない
・どんな時にも、すぐ始められるのは有利
・お楽しみの要素は必要

ご参考に!!

おまけ



 ちなみに毎朝6時半に体操するというのは割りと無理があるので、寝る前の10分にやっています。REGZAのタイムシフト使っていて、結構便利です。テレビの録画事情はしりませんが、お手軽でお勧めです。

東芝 32V型 ハイビジョン 液晶テレビ  REGZA 32S8

東芝 32V型 ハイビジョン 液晶テレビ REGZA 32S8

TOSHIBA タイムシフトマシン対応 USBハードディスク THD-250T1 (2.5TB)

TOSHIBA タイムシフトマシン対応 USBハードディスク THD-250T1 (2.5TB)