Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PaaSの歴史と、 アプリケーションプラットフォームのこれから

PaaSの歴史と、 アプリケーションプラットフォームのこれから

2024年6月に開催した、最後のPaaS勉強会でお話しした資料です。
PaaSが世の中に登場してから今までの流れを、PaaS勉強会の経緯を絡めながら解説しました。

Kazuto Kusama

January 19, 2025
Tweet

More Decks by Kazuto Kusama

Other Decks in Technology

Transcript

  1. PaaS勉強会 一区切りつけます • Slack workspaceは6月末で閉鎖します • Connpassは残します ◦ 過去の登壇者のスライドもあるため •

    YouTubeチャンネルも残します 区切りは付けつつも、 「かつてそういうイベントがあった」という記録は残したい
  2. なぜ区切りをつけるの? • PaaSを取り巻く環境が大きく変わった ◦ 今日のセッションを通じてこのあたりを語ります • 全てを残して放置という選択肢もあった ◦ 世の中のコミュニティの99%はこのような自然消滅 ◦

    コロナ禍で活動が戻りつつあるが、そのまま消滅してしまうコミュニティも多い • こういう時代だからこそ、きっちり終わらせたかった ◦ Platformを取り巻く変化は、総じてポジティブ ◦ 明示的に区切りをつけることで、新しい流れに引き継ぎたい ◦ 自分が関与したはじめての技術コミュニティなので、見送るところまでやりたい
  3. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 PaaSの登場 2007年、SalesforceがPaaSという名前を 使い始める このときは、自社のCRMをSaaSではな く、コードで拡張できるより進化したもの であるとして、”Platform”という表現を使 い始めた いまここ https://news.mynavi.jp/techplus/article/20070718-a024/
  4. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 DevOps 2007年から2008年ごろ、組織における開発と運 用の分断が機能不全を引き起こしているという懸 念が議論されはじめた。 2009年にDevOpsの概念が提唱される。 期を同じくしてクラウドサービスが登場しはじ め、DevとOpsが協力して取り組むという考え方 が現実味を帯び始める (EC2が2006年、ELBやCloudWatchが2009年) いまここ
  5. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 アプリを簡単にデプロイしたい。運用も任せたい。 DevOpsはアジャイル開発の思想をOpsレイヤーにも取り込んでいくことになる。 アジャイルに開発して素早くリリースしたい ⇨ 簡単にアプリをデプロイ・運用できるプラットフォームが必要 ⇨ Application Platformの必要性が高まる いまここ
  6. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Herokuの登場 同じく2007年に、Heroku創業。 2009年にRubyアプリケーションを動かせるプラットフォームを一般公開。 Rackを使うフレームワーク(Ruby on RailsやSinatra)を動かすことができた 2010年にSalesforceに買収される いまここ
  7. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Windows Azure Windows Azureが2008年に発表され、2010年に正式リリースされる リリース時はPaaSしかなかった。.NETアプリケーションをデプロイ・運用できる クラウドサービスみたいな感じ。 ちなみにjacopenはWindows Azureに感銘をうけてこの業界に入ってきた いまここ
  8. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 NISTによるクラウドコンピューティングの定義 2011年、NIST(米国国立標準技術研究所) によってクラウドコンピューティングの 定義が公開される。 今でもよく使われるIaaS, PaaS, SaaSの 定義がここで固まる いまここ https://www.ipa.go.jp/security/reports/oversea/nist /ug65p90000019cp4-att/000025366.pdf
  9. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 ガートナーによるPaaSの分類 NISTの定義だと、ソフトウェア(SaaS)、 インフラ(IaaS)でもないものは全部PaaS とも読み取れ、曖昧な部分も否めなかっ た。 当時、ガートナーはiPaaS(Integration PaaS)、aPaaS(Application PaaS)と分け て説明していた。今でもiPaaSの表現は 使っている様子。 いまここ
  10. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Cloud Foundryの登場 2011年4月、VMwareからOSSのPaaSとしてCloud Foundryが登場。Rubyや Java、Node.jsのアプリをコマンドひとつでデプロイできるようになった。 初期のバージョンはDerek Collison氏(NATSの生みの親)のリードによって開発さ れており、NATSを中心に据えたアーキテクチャだった。 この後十数年に渡って進化していき、今のアーキテクチャは全く別物になってい る、 いまここ
  11. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Cloud Foundryの登場 Cloud Foundryを使ったアプリのデプロイ いまここ ソースコードがあるディレクトリで cf push とするだけ
  12. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Cloud Foundry輪読会の発足 • 2011年10月、日本で第1回 Cloud Foundry 輪読会が開催される。 ◦ これがPaaS勉強会の前身。 • 自社での活用を考えていた各社のエンジニア が中心となって運営 ◦ NTTコミュニケーションズ ◦ 楽天 ◦ 富士通など • ATNDを使ってイベントを公開していたの で、どんなセッションがあったのか分からな くなってしまった・・・ いまここ https://www.publickey1.jp/blog/11/paascloud_foundry.html
  13. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 OpenShiftの登場 • Red HatからもOpenShiftが登場した。 ◦ OSSとして公開されるまではそこから1年近く 要したが。 • k8sベースの今とは全く異なる仕組み。 • Cloud Foundry輪読会でOpenShiftの話をした ◦ 2012年の第7回 ◦ 日本で初かもしれない いまここ https://techtarget.itmedia.co.jp/tt/news/1206/18/news02.html
  14. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Open PaaS vs プロプラエタリPaaS このようなOpen PaaSは、クラウドないしはオンプレにVMを立ててデプロイす る形になる。 いまここ プロプライエタリPaaS Open PaaS デプロイ • デプロイした後は おまかせ • ブラックボックス デプロイ • 自前の環境で動かせる • クラウドでもオンプレでも • その気になればカスタマイズも できる • PaaS自体の運用もしないとい けない 運用
  15. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 国内の商用PaaS https://techtarget.itmedia.co.jp/tt/news/1206/18/news02.html 2012年ごろには、国内ベンダーからもさまざまな PaaSが登場した。 • C4SA(ニフティ) • MOGOK(IIJ) • eXcale(TIS) • Cloudn PaaS(NTT Com) いまここ
  16. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Dockerがやってきたぞ! • dotCloud社がDockerをOSSで公開 ◦ 2011年からPaaSを提供していた会社 • その便利さで一気に注目を浴びる ◦ コマンド一発で立ち上げられる簡便さ ◦ Docker imageによる可搬性 ◦ コンテナならではの高速な起動 • 同年10月にはdotCloudの名前を捨てて社名ま でDockerになるほど。 いまここ
  17. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 ※ PaaSでコンテナを使うこと自体は普通だった • Dockerがコンテナ技術を生み出したのではないことに留意 • Docker以前からマルチテナント型PaaSでは、ユーザーごとのアプリケーショ ンを隔離するためにコンテナ技術が活用されていた。 ◦ HerokuはLXCを利用 ◦ Cloud FoundryはWardenという独自のコンテナ • Docker imageのような汎用的なイメージ規格はなく、純粋にCgroupsと Namespacesで環境を隔離するために使っていた • ただの軽量仮想化環境ではなく、イメージの共有、ビルドのコード化などの 思想を持ち込んだDockerはエポックメイキングだった いまここ
  18. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 登場するさまざまなOpen PaaS いまここ Dockerを実行基盤としたさまざまなPaaSが登場。いずれもAlternative Heroku的 な思想で設計されていた https://www.slideshare.net/jacopen/docker-paas-op enshift-deis-flynn
  19. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Cloud Foundry Haiku ”Here is my source code Run it on the cloud for me I do not care how” 「このソースコードをクラウドで動かしてくれ、どうやるかは任せる」 Developerの夢を詠んだもの、らしい。 当時PivotalにいたOnsi Fakhouri氏によるもの。Cloud Foundryが目指していた 方向性が垣間見えて良い いまここ
  20. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 PaaSのデプロイと運用どうすんねん問題 • Open PaaS特有の問題 • PaaS自体もソフトウェアの集合体 なので、それらコンポーネントを 数十台のVMにデプロイする必要が ある。 • chefやpuppet、capistranoでなん とかしているケースが多かった • 今でいうとKubernetes the hard wayを毎回やるみたいな感じ いまここ
  21. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 BOSHというアプローチ • Cloud Foundry陣営がとった アプローチがBOSH • PaaSを「リリースエンジニアリング」 する仕組み • GoogleのBorgの思想が根底 ◦ 同じ思想を持つKubernetesを イメージすると分かりやすい • イメージとマニフェストをBOSHに渡 すと、コンテナではなくVMを立ち上げ てくれる いまここ https://speakerdeck.com/ozzozz/bosh-101-winter-2018
  22. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 データベースどうすんねん問題 • 1コマンドでWebアプリがデプロイ出来 るのはいいが、じゃあデータベースは どうする? • SoEとSoRではライフサイクルやスト レージへの要求が異なるので、同じプ ラットフォームで動かすには注意を要 する • 今でこそk8sで「動かすことはできる」 が、当時はそもそも動かすこともでき なかった • 2024年現在でも完全に解消したとは言 えない問題 いまここ Railsアプリは 簡単に動かせる Railsが使うDBは どうする?
  23. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 妥協案 • プロビジョニングはいったん置いとい て、アプリケーションに対してDBへの 接続情報を渡すインターフェースが模 索された • PaaS上でアプリとDBを論理的にバイン ディングすると、DBの接続情報が環境 変数を通じて渡されるように。 • DBの種類によらず、きまった環境変数 を読めばアプリはDBに接続ができる。 • CFだけでなく、だいたいのPaaSが類似 の機能を備えていた いまここ 環境変数の注入 • DB Host • DB Database • DB User • DB Pass cf bind-service
  24. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Service Brokerのアプローチ • DBなどのプロビジョニングや、アプリ ケーションへのバインディングなどを行 うために標準化を目指したアプローチが Service Broker • APIが定義され、さまざまなサービスを プロビジョニングできるようになった。 • 実体をどうプロビジョニングするかは Brokerの実装に委ねられる。 ◦ マネージドRDBを作りにいく実装 ◦ BOSHでVMから立ち上げる実装 ◦ 既存のDBインスタンスにデータベースを 作成するマルチテナント型など いまここ cf create-service MySQL Service Broker プロビジョニング リクエスト 接続情報 Service Broker API
  25. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 CF輪読会はPaaS勉強会へ • 2014年の第19回からPaaS勉強会に 改名 ◦ CF以外にも、さまざまなPaaSが出てき て盛り上がってきた ◦ paas.jp という使い勝手のいいドメイン が取れた いまここ
  26. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 全てをひっくり返したk8s • 2014年6月にKubernetesが登場。すべて のOpen PaaSにとって、これが転機に • 9月の第20回でKubernetesの解説をした (日本で最初のk8s勉強会) • 当初は「Dockerをクラスタリングするも の」くらいの認識だったが、次第に主従が 逆転するほどに いまここ
  27. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 OpenShiftの大転換 • OpenShift v3からKubernetesベース に生まれ変わる • それまでは目立たない存在だったが、 一気に話題の中心に • 第22回でOpenShiftスペシャルを開催 いまここ
  28. 一般的なPaaSのしくみ API Server Builder push push polling request だいたいどのPaaSもアーキテクチャは似ています。 開発者がコードをPaaSにPushするパターンと、PaaSがリ

    ポジトリをPollingするパターンがありますが、いずれに せよBuilderというアーティファクトを作る仕組みが動き ます
  29. 一般的なPaaSのしくみ API Server Builder push push polling request Detect Build

    Release 何の ・言語 ・FW ・サーバー かを検出 ・パッケージ マネージャの実行 ・ビルド ・イメージ作成 Artifact Registry Builderはデプロイされたアプリケーションを解析し、そ れぞれ適した仕組みでビルドを行います。そして、成果 物をレジストリに補完します
  30. 一般的なPaaSのしくみ API Server Builder push push polling request Detect Build

    Release 何の ・言語 ・FW ・サーバー かを検出 ・パッケージ マネージャの実行 ・ビルド ・イメージ作成 Artifact Registry Orchestrator Runner Runner Runner ビルド後、オーケストレーターがPaaS内のコンピュー ティングノードに対してアプリの配置を行います。その 際に使われるのは、先ほどのアーティファクトです。
  31. 一般的なPaaSのしくみ API Server Builder push push polling request Detect Build

    Release 何の ・言語 ・FW ・サーバー かを検出 ・パッケージ マネージャの実行 ・ビルド ・イメージ作成 Artifact Registry Orchestrator Runner Runner Runner Router エンド ユーザー エンドユーザーからのアクセスはRouterコンポーネント がリクエストごとに適したアプリにルーティングを行い ます。この仕組みにより、複数アプリが同居するマルチ テナントが実現できます
  32. 一般的なPaaSのしくみ API Server Builder push push polling request Detect Build

    Release 何の ・言語 ・FW ・サーバー かを検出 ・パッケージ マネージャの実行 ・ビルド ・イメージ作成 Artifact Registry Orchestrator Runner Runner Runner Router Log aggregator AuthN/AuthZ Service Broker エンド ユーザー あとはログ収集や認証/認可、サービスバインディングの 仕組みなどを揃えれば、PaaSのできあがり。
  33. 一般的なPaaSのしくみ API Server Builder push push polling request Detect Build

    Release 何の ・言語 ・FW ・サーバー かを検出 ・パッケージ マネージャの実行 ・ビルド ・イメージ作成 Artifact Registry Orchestrator Runner Runner Runner Router Log aggregator AuthN/AuthZ Service Broker エンド ユーザー この仕組み、BuilderやレジストリをDockerに、オーケス トレーターやRouterをKubernetesにすれば、独自実装し なくても済んじゃうわけです
  34. 一般的なPaaSのしくみ API Server Builder push push polling request Detect Build

    Release 何の ・言語 ・FW ・サーバー かを検出 ・パッケージ マネージャの実行 ・ビルド ・イメージ作成 Artifact Registry Orchestrator Runner Runner Runner Router Log aggregator AuthN/AuthZ Service Broker エンド ユーザー その他付随機能もk8sのPodとして立ち上げるようにすれ ば、全ての仕組みをk8sで実現できちゃいますね。
  35. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 K8s + α = PaaS • k8sはPaaSではないが、PaaSが必要とする要素の多くをカバーできた • 安定したk8sさえあればその上に諸々インストールしてしまえばPaaSが実現 する • PaaS自体のセットアップもyamlやHelm chart入れるだけでいいので楽 ⇨ 多くのOpen PaaSがk8sを前提とするように変わっていった ⇨ この頃から、PaaSと呼称するプロダクトが減り始めた いまここ
  36. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 Lambdaの登場 • 2014年にAWS Lambdaが登場した • PaaSではなく、言うなればFaaS(Function as a Service) • PaaS勉強会で取り上げたことはないが、Open PaaSの流れに大きく影響した (と、個人的には思っている) いまここ https://aws.amazon.com/jp/serverless/patterns/serverless-pattern/
  37. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 パブリッククラウドにしかない価値 • Lambdaですごいと思うのは、AWSの価値を最大限に生かせること • ただのIaaSやオンプレでも、Function単位でワークロードを実行するのは可 能。Scale to Zeroも可能 • でも、API GatewayやDynamoDB、S3、SQSなどを組み合わせた 「サーバーレスアーキテクチャ」は、どうやってもマネできない • S3のようなすごいテクノロジーや、IAMのような確固たる地盤があって初め て実現する世界 • 一度この世界にハマれば、Open PaaSを使うメリットは無くなる • クラウドへの流れを決定づけたプロダクト いまここ
  38. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 マイクロサービスの時代 • 2014年、Thoughtworksのマーチン・ファウラーとジェームス・ルイスに よって、マイクロサービスアーキテクチャが提唱された • サービスを細かく分割し、それぞれがコミュニケーションする形で動く • 組織も、ソフトウェアもスケール可能にする思想 • ソフトウェアの規模が大きくなるにつれ、そうしないと回らないケースが出 てきた いまここ
  39. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 マイクロサービスの時代 一方、それまでのPaaSはRuby on Railsに強く影響されていた • HerokuはRubyのPaaSだった • Cloud Foundryも最初からRoRをサポート • RoRのConvention over Configuration(設定よりも規約)という思想は PaaSのようなOpinionated(制約の強い)な仕組みと相性が良い 決められたレールにアプリケーションもプラットフォームも載ることで、アジャイ ル開発とDevOpsをうまく回していこうという発想 いまここ
  40. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 マイクロサービスの時代 • PaaSとマイクロサービスの相性が悪いとまでは言わないが、色々足りていな かった ◦ サービス間の関係性の表現 ◦ ネットワーク的な制限 ◦ 最適なライフサイクルの違い Frontend BFF Backend A Backend B KVS DB Backend C Auth いまここ
  41. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 マイクロサービスの時代 • 複雑なマイクロサービスアーキテクチャをPaaSで個別にPushするより、 レジストリに入っているコンテナイメージを使って、同じManifestでApply 先を変えれば複数環境で同じ物を再現できる Frontend BFF Backend A Backend B KVS DB Backend C Auth Frontend BFF Backend A Backend B KVS DB Backend C Auth Frontend BFF Backend A Backend B KVS DB Backend C Auth いまここ
  42. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 IoTがやってきた いまここ このころ、IoTが注目されはじめた PaaS勉強会のメンバーの中にIBMの方がいて、 ビジュアルプログラミングツールのNode-RED の登壇をしたいと打診があったのでNode-RED 回を開催。 その後、IBM BlueMixのユーザー会 BMXUGと 共催でNode-RED LT祭を開催。 登壇者の方々は、Node-RED User Group Japanとして現在も活動されています https://nodered.jp/
  43. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 いろんなものを取り上げました いまここ
  44. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 いろんなものを取り上げました いまここ ものすごくエンタープライズな PaaS、OneOpsの話 https://speakerdeck.com/jacopen/mofalsesugokuentapuraizunapaas-oneopsfalsehua
  45. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 いろんなものを取り上げました いまここ
  46. 07 08 09 10 11 12 13 14 15 16

    17 18 19 20 21 22 23 24 いろんなものを取り上げました いまここ
  47. Service Broker vs Custom Resource 先ほど説明したService Brokerも、カスタムリソースを使えば同じことを実現できる cf create-service MySQL

    Service Broker プロビジョニング リクエスト 接続情報 Service Broker API kubectl apply Custom Controller プロビジョニング Custom Resource Definition
  48. 『正しい』とは何か 認知負荷を下げよう! アジリティを高めよう! Kubernetesでプラットフォーム組んで 実現! Platform Team 言っていることは分かるけど そもそも取り組む余裕がないよ オンプレはvSphereで、

    クラウドはServerlessで、 特に課題感は無いんだけど? いやこれがこれからの デファクトスタンダードなんだよ つかえよ 使われるわけがない
  49. Platform as a Product • 開発者を『顧客』として考え、顧客にプラット フォームという『プロダクト』を提供していく というアプローチ • 世の中に提供されているさまざまなプロダクト

    と同じ管理手法を、プラットフォームにも取り 込んでいく 顧客 Platform Product プロダクトを提供 プロダクトを提供 プラットフォームチーム
  50. Platform as a Product 顧客 Platform Product プロダクトを提供 プロダクトを提供 プラットフォームチーム

    どういう価値を提供できれば 使って貰えるか 顧客が何に困っているか どうやってサポートしていく か どうやって教育していくか どうやって安定したチームを 作るか プラットフォームによる効果 がどのくらい出ているか 何をいつまでに提供するか 世の中のトレンドはどうなっ ているか