はじめに CloudNative Days Tokyo 2019/OpenStack Day Tokyo 2019とは
CloudNative Days Tokyo 2019/OpenStack Day Tokyo 2019 とは、2019/7/22, 23に虎ノ門ヒルズで開催されたクラウド関連技術とOpenStackに関する技術イベントです。
スポンサーセッションや公募セッション等100弱の講演数の中から好きな講演を聞く形で、この中で私が聞いた講演に関する概要・参考をまとめて行きたいと思います。
各講演素晴らしかったのに加え、司会者の方が合間に話してくれたこんな言葉がとても印象的でした。
CloundNativeとは、kubernetesを使うことみたいなどんなツールを使うかという話ではない。
この技術を使う!じゃなくて、人間のやることを自動化していくこと。人の手をいかに無くすか、ボトルネックを如何に無くすか?を考えて実践するのがCloudNativeだ。
長いので、参考も先に貼っておきます。
参考
スライドまとめ。追って公式からもスライド集が出てくるそうです。
CloudNative Days Tokyo 2019 スライドまとめ
CloudNative Days Tokyo 2019 / Open Stack Days Tokyo 2019 スライド資料リスト
CNDT2019/OSDT2019行ってきたのでスライドリンクとメモ(更新中)
公式Twitter
Day 1, Opening Act
Opening
Cloud Native Computing Foundation (CNCF)の動向を簡単に紹介をされていました。
CNCFのlangscapeがこちら。ほんと色々な道具が用意されていますよね(こなみかん
規模を増やしていくとともに、各種サービスの品質基準を定めるために、例えばkubernetes certificationといった認証機関を用意したりもしているそうです。
Collaboration Without Boundaries(Mark Collier/OpenStack Foundation)
OpenStackの動向について。講演中のCollaboration without boundaries works!という言葉に集約されていた気がします。
OpenStack自体はプライベートクラウドとパブリッククラウドを構築・管理する為のオープンソースツールで、クラウド構築のために必要な様々な機能が網羅されています。
コードだけでなくOpenDesign、設計も含めたものをオープンにして、垣根を越えて広くOpenStackを使ってほしい、参加してほしいといった話を語っていました。
Performing Infrastructure Migrations at Scale (Melanie Cebula/Airbnb)
Airbnbという『空いてる部屋や家を貸したい人』と『借りたい人』とのマッチングサイト。こちらの開発を行っているエンジニアさんが語る、以下にソフトウェアをMigrationしていくかについての話。
Melanie Cebulaさんが別の場所で行っていた同じタイトルの講演動画があったので貼っておきます
Performing Infrastructure Migrations at Scale
Migrationしていくために大事なことのまとめ
- 行おうとしているMigrationのtypeを決める
- component
- セキュリティパッチetc
- systen
- CI/CD etc
- インフラ
- k8s導入 etc
- component
- Migrationする順番、優先度を決める
- 設計、計画、習慣化
- Migrationをやりきる、終わらせることが大事
- ソフトウェア構造の抽象化、リファクタリングが大事
- Migrationにもライフサイクルがあることを意識する。
- validation
- enable
- finish
- イテレーション
努力、大きさ、優先度を決める。 影響に関する問題、スケールする上での問題 マーグレーション時のオーバーヘッド 自動的にできるかの検討 詳細を隠蔽。 新規の使える技術、クラウドネイティブを取り入れるタイミング テクノロジー評価は、高負荷でイテレーションを続けないといけないよ 開発して終わらせる。開発チームと、事業部と、etc講演メモ
マイグレをどうしていくか?
tech debtと呼ばれるセキュリティや効率などに関する負債を改善していくため、Migrationしないといけない。
Migrationの分類化。今は何をしようとしてるの?
- component
- セキュリティパッチetc
- systen
- CI/CD etc
- インフラ
- k8s導入 etc
複雑な場合は順序を定義しましょう。
→関連してる?目的あってる?複数互換対応は?
といったことが複雑にさせていくので、小さな課題に分けてtech debtをガンガンやっつけようぜ!みたいな話かな
複数互換対応が出てこないよう、関連する小さなところを潰して、そのあとそいつをやっつける。もしくは優先度をつけてやっつける
大型migrationの場合
サービスの数が増えれば増えるほど、Migrationが複雑に
- 実際の負荷をかけて、長期的なプランニング
- まずは新しいシステムから少しずつ対応していく
Service Generator toolの導入が効果的だった
オーバーヘッドについて
Migrationしてる人、メンテナンスする人それぞれへオーバーヘッドがかかる
途中は両対応しないといけない、Mix stateを管理しないといけない
- Migrationは時間がかかる!ここばかり取られることは避けたい
- Migrationを終わらせて正しいライフサイクルを作る
どうやって?
abstruction layerを作ってマイグレしやすくする
リファクタ
abstruction layer
今後はServiceの定義をしてあげて、setting fileからサービスをコントロールしたい
ライフサイクル
validation フェーズ
- シンプルなプロトタイプものを作って、テストを作って、高負荷をかけて確認してあげる
ギャップがあったら分析
enable フェーズ
たくさんのドキュメンテーション
abstruction layerなどちゃんと設計してあげよう
finish フェーズ
最後の2, 3割が難しい。あるある〜
The 10 new rules of open source infrastructure (Stephan Fabel/Canonical)
Open Source instastructureに携わるにあたっての10のルールの紹介。こちらの記事と同内容の講演をしてくれてたと思います。
ざっと自分なりの解釈を乗せますが、講演についていけてなかった部分も多いので本家記事を参照ください。
- Consume unmodified upstream
- OpenStackは、の話ですが、安定版リリースが出来てるのでそれを使うようにしよう。変に古いコード+セキュリティパッチで開発しても大変なこと多いよ
- Infra is a Product
- costは初年度に一番かかる。如何にcostを減らすかが大事だよね
- Automate for day 1826(5年)
- 自動化大事だよ。5年も立てばテクノロジも変わることも想定してね
- Run at capacity on-prem. Use public cloud for overflow.
- 使えるインフラ、ハードの中で最高な状態を!+適度にpublic cloudを活用しようぜ。
- Upgrade, don't backport
- 例えばk8sなら4回/year, OpenStackは1回/yearといったアップデートサイクルがあるので、そこでupgradeしましょう。決して古いものに対してbackportしてはいけない!
- Workload placement matters
- 一度問題が発生した際に、細かい原因究明をしたい。どこで何がどうなっているかの相関関係を理解しないといけない。どこに何があるのかをよく意識しましょう。
- Plan for transition.
- 時代はガンガン変わるので変更を適切にする必要がある。自動化についても関係する
- Security should not be special.
- セキュリティは特別じゃない。最後に別途設計するものではなく、最初から意識するもの
- Embrace shiny objects.
- 新しいものはどんどん導入しよう!イノベーションを取り入れる。container, VM, etc。ただし、これまで上げたポイントを押さえた上で
- Be edgy, go Micro
- 尖っていこうぜ!Stephan Fabelさんが気にされていたのは以下
snap install microstack --beta --classic
snap install microk8s --classic
Demand Less Choices! (Doug Davis/IBM)
IBMの方の講演で、ざっくりいうとknativeというツールの紹介。
https://github.com/duglin/helloworld
Cloudを利用した開発で何がいいのか?という話。既存のPaaS/CaaS(Container as a Service, ex:k8s)/Function as a Serviceで足りないものをKnativeなら解決出来るよ!って話でした。
シンプルUX 講演メモ
CloudNativeをどう選択していくか?
CloudNativeになると何がいいの?
速さ、コスト、コードに集中、etc
Container as a service
- PaaS, ほぼ隠蔽
- Container as a Service - k8sのようにcontainerを管理
- Function as a Service - OpenWhisk
これらの特性
PaaS
Containerもある、MicroService, stateless, endpoint/load balancing, build
なんでもできるけど、、、
Access to advanced feature、自由な拡張はできない
k8sの例
抽象化、kubernetesはできてないよね〜
- Knativeがリリースされた。コード部分だけでOK
kubernetes生もできるし、簡易的に使われてるものも使えるし
http://jaco.udcp.info/entry/2018/07/25/043415
Knativeの宣伝でした。良さげ
https://github.com/duglin/helloworld
Day 1, others
Re-architecturing of Microservices(Nao Minami/Wantedly)
wantedlyがモノリシックなサービスに対してマイクロサービスを導入した時の話。こちらもどういった思想で開発をしたのか、どうモノリシックなシステムを置き換えていったのかという話が聞けたのが良かったです。
特にPub/Sub Messagingの仕組みを取り入れた話が面白かったです。
- 非同期通信
- publisher/subscriberを分けることで、モジュールの関心ごとが切り分けられて抽象化しやすくなる
複雑性の増大。別の目線で複雑さが増していく インターフェースの切り出し不足 責務が不明確だった 大変講演メモ
問題
責務が複数になった件へのアプローチ
Re-architecturingについて
やっていくと確実によくなる
計画的に改善しよう!
今からでも遅くない!アプリケーションエンジニアが知っておきたい、Dockerコンテナの基礎知識 / The Basic of Docker Container for Developers(Kohei Ota/ZOZO Technologies)
Dockerってなんなのか、コンテナ技術の何がいいのか?を滅茶苦茶わかりやすく説明してくれている良記事です。Dockerのアイコンかわいいよね!
RancherではじめるCloudNative!!(Yutaka Ichikawa/エーピーコミュニケーションズ)
Kubernetes is becoming the Linux of the cloud という言葉が出てくるくらいContainer管理のスタンダートとなりつつあるk8s。でも管理が大変だよね。
IBMさんのKnativeも同じ発想でしたが、こちらはRancherというツールを使った管理について、ハンズオン形式で学んでいくセッションとなっていました。
UIが見やすくcontainterの稼働状況のモニタリングも出来る優れもの。残念ながら事前調査をちゃんとしていなかったため、必要なGCPアカウント等を用意していなかったのでハンズオン自体は出来ませんでしたが、動くものが見えると楽しいですね。
今さら聞けないOpenStack 〜クラウド基盤って何が嬉しいのかを再確認 (Noboru Iwamatsu/富士通, Tashiro Mitsuyoshi/NTTデータ, Tomoaki Nakajima/レッドハット株式会社)
3社のOpenStack導入事例の紹介。OpenStack自体に対するありがたみ以外に、OSSコミュニティに参加することで得られることについても語ってくれたのが興味深かったです。
PCのバッテリー切れでメモなし。富士通さんのスライドはありました。https://speakerdeck.com/r0ckpine/osdt2019-fjcsfoross-openstack-user-stories
k3sで作る!軽量k8sエッジコンピューティング環境(RYOMA FUJIWARA/Rancher JP)
軽量kubernetes、組み込みで使われるARMもターゲットにしたk3sの概要と、それらを利用したデモを紹介してくれました。k3sが如何に軽量化を行ったかの話もあって面白かったです。
デモについては、IoTのような感じでエッジ端末(Rasberry Piで代用)をばらまいた環境に対してアプリケーションをデプロイしていくための環境として、k3sは有効なのではないかという仮説に対するアプローチでした。
結論として、サクッとPoC作るには十分という話でした。
軽量kubernetes kubeの認証が取れているものの話。 エッジ(IoTなど)で動かすこと前提 懸念点 写真撮影アプリ、講演メモ
k3sで作る!軽量k8sエッジコンピューティング環境
Tea pod418藤原涼馬さん
会社員 兼 フリーランスエンジニア
k3sとは
特徴
certified kubernetes Distribution
リソース小さい、arm対応
基本そこそこ大きなリソースを要求されてるのが、マスターが512MB, ノード75MBのメモリでいい。
Diskも200MBでいい。
組み込みで動くレベル
- 当然使えなくなることもあるよ
軽量化方法
軽量と言えば、Rasberry Piでどうなる?showk3sの取り組み
エッジコンピューティング
- 上流ネットワーク不安定
- ネットワーク安定したら流す!
- 端末は壊れるもの
- 切り離す
- 数が多い
- 危機管理
事例
サンプル
Github show3s
画像の取り込みは
ラズパイとk3sでサクッとPoC作るくらいならいい感じそう!
いい点
- k3sのデプロイが効率化できる。動かすのも簡単。(とっかかりはk3sがいいかもね)
- k3sのtraefikが便利
悪い点
- ARMは大変ですよね。
- CI with ARMって?
- CI更地だよね
いい点:ラズパイ
- RaspberryPi3, 性能不足を感じることもない。すごいねラズパイ
悪い点:ラズパイ
- 熱やべえ
- IoTに参加するにはハードがないといけないのが大変
20-30hくらいで実装できたらしいです。2万くらいでできる
Day 2, Opening Act
楽天モバイルの世界初完全仮想化クラウド型モバイルネットワーク(Ashiq Khan/ 楽天モバイル株式会社)
楽天モバイルが取り組んでいる、世界初のエンドツーエンドの完全仮想化クラウドネイティブネットワークに関する話。
基地局内のものをとにかくソフトウェア化し、アンテナを置いてソフトウェアをデプロイすればOKな環境を作ろうという発想でした。以下なんかは分かりやすい例で、Network周りのハードはサーバー1つ、基地局内に必要なハードもわずかなもので済むようになっています。
合わせてEnd to Endで行うことを全部自動化しようという考え。こんだけのことを自動化しあげたらしいです。
最後に「これ、本当に全て実現したと思いますか?信じられませんよね。でも全部実現したんです!」と語っていたのが印象的でした。
VLAN部分とかも共同開発、ガンガン新規開発してる面白そう Baseband信号処理を仮想化、NTT datacenter上のサーバーに全部 キャッシュとかはアプリケーション→ソフトウェア化 冗長化も東京と大阪というレベルでリージョン分け、50箇所以上に分散 OpenStack サーバーの種類も少なくしてシンプルに (資料展開されてないかな。じっくりみたい) 理想のアーキテクチャの話を色々していて、実際に電波吹くまで言ってる。 LANまで仮想化、アンテナだけ立ててソフトウェアアップデートでOKな構成まで行った講演メモ
楽天モバイルの戦略、完全仮想化モバイル
とにかくハードの絡まない部分はとことん仮想化、ソフトウェア化してる
→色々仮想化してるから、ものがいらないよって話(2枚目)
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発(Junya Suzuki/SBペイメントサービス株式会社)
ベンダ任せのモノリシックなシステムだったSoft Bankの決済サービスをCloudNativeなサービスにした話。
Private PaaSであるPivotal Cloud Foundlyの導入事例というのも興味深かったです。
最後に言っていた「外注に頼りきらず、自分たちで内製化するからこそプラットフォームの構築・運用ができる」という言葉が良かったです。大きな企業こそ思うところがありそう
SBペイメント、決済サービスについて ベンダ任せの開発、コードを各環境も整っていない。 Start で準備完了。さあ内製化! 11マン以上に導入しているでかいwebシステム 今までは見積もりがかかったりするので、内製化でスピードアップを! PCFを導入 求めるもの Kubernetes or Paasどっち?=> 実績のあるプラットフォームがいいな〜 Public PaaS or Private PaaS?→セキュリティ問題でPrivate PaaSを選択 cf pushでソースコードからコンテナを作ってくれる。Dockerfileを使わなくていい。 アプリケーション構成はスライド参照 ポイントはCircuit Breaker。 CIサーバー concourse Observability ロギング Kibana Zipkin。サーバー負荷がかかる サービスの可視化。決済のOK/NGを可視化してるみたい。ビジネス アプリをリリースするだけで、プラットフォームが自動的に監視をしてくれる。か、いいな ベンダにお任せじゃなく自分たちで開発するからこそ、プラットフォームが構築できる!いいセリフ講演メモ
事業内容
- 導入までと効果
history
内製化
- リリース改善
- 速さ、品質
- クラウドの活用
- スケーラブル、オートスケール etcd
ソフトウェアの話
改良できないシステムも絡むシステムに対するアーキテクチャ
とある決済期間Aに障害がある=> Circuit Breakerが状況把握してくれる。いいよね
開発者は標準出力にログ吐くだけでいい。楽っすね
最後に
金融領域におけるOpenStack導入事例の紹介(Masanori Sato/ワイジェイFX株式会社, Hikaru Saito/ワイジェイFX株式会社)
YJFXというサービスでのOpenStack導入の話。FXなので瞬間の情報が取得できないといけない、理論値で5,000 transaction/sec x 単価数 x Bank数 = 1,000,000程度の負荷がかかることを想定しないといけない!
という大変なシステムに対してコスト、デリバリでの限界が来たためPrivate Cloudを構築しようという話でした。
OSSへの考え方(採用するなら、が安定しない・サポートが遅いといったことがあってもしょうがないという心意気)と、以下のような組織文化に関する考え方が非常に刺激になりました。
この中での課題、解決方法 問題 なのでPrivate Cloud基盤をやりたいよね 結果 Ansibleの活用 トラブルシューティング 導入による影響 →パフォーマンスをあげないとね Cloud Nativeを強めていこう。今はただクラウドにサーバー乗せてるだけだよね! 技術負債の対応は課題解決。講演メモ
YJFXについて
実際にどうしたのよ?の話
今後
そうじゃなくてクラウドの性質を理解したアプリケーションの設計を進めていく必要がある。
Change the Game, Change the World(Shingo Kitayama/レッドハット株式会社)
Platformについての考え方についての講演。自分たちは創る側?活用する側?を考えて、そのうえで適切なことをやりましょうよって話だと認識してます。
kubernetes => Platform on Platform. platformを作るためのツールなんすよ〜 プラットフォームについて airbnbというplatformについて プラットフォームは、利用コストよりも得られる価値の方が高い、みんなが喜ぶものが大事ですよ Cloud +Nativeとは? https://qiita.com/shotat/items/4a60083fd20d11936860 運用の知見をコード化して、アプリケーションの運用を自動化する。 Redhatがサポート。 Operatorを介してKubernetesを入れるのが楽になる lean.openshift.comでOperatorを作れますよ プラットフォームを創る側?活用する側?ってのを考えようぜ講演メモ
はじめに
ものの提供+どうしたら楽しいかのサービス、仲介先の人たちがみんな喜ぶものを作る
相互ネットワーク + 外部ネットワーク効果(Twitterみたいなコミュニティ)
- 運用工数を下げるためのポイントが、既存システム運用とは大きく変わるという意識改革がないといけんよね
Redhatの意識
最後に
OpenStackを用いたパブリッククラウドの国内事例と課題 (Masahiro Nakazato/GMOインターネット株式会社)
お名前.comなどを運営している会社の話。スライド探し中
メモが無くてすいません。難しいことをすると大変なことになる的なことを言ってたのが印象的でした。
Day 2, Others
100行のコードでDockerの基本を実現せよ!(Wenhan Shi/Canonical Japan k.k)
Dockerをshellで作ろうという試みを通じて、dockerの仕組みに触れようという話。
https://github.com/xibuka/bocker
実際のshellを通してファイルシステムやプロセス管理をどのように行っているかが分かる、面白い講演でした。
bashでdockerを実現してるやつ。これを最新にしている やってることは、docker hubにアクセスして、imageを落としてきてなんやかんやする。 slideはtwitterにあるらしいので docker hubと連携するため、認証を制御 組み込みのflash書き換えみたいなことをして、イメージを残しつつ書き込みができるようにしている。 どうやってDockerが構成されているかって話。面白い Namespaceという仕組み。その中だけが参照できる https://qiita.com/ryuichi1208/items/11b6bd3b0445fcf21aab chrootでルート変更 Network snat, dnatを有効に講演メモ
DockerHubのAPI仕様を理解しようぜ!って話
- tokenを取得して、ヘッダー認証
BTRFS(バターFS)
実録!CloudNativeを目指した230日(TAKAISHI Ryo/GMOペパボ)
kubernetesを本番環境に導入した実録。CloudNativeを目指し、人とオペレーションがボトルネックとなっていた部分を改善しようと取り組んでいた姿勢に、非常に共感を持ちました。
k8sを文化に馴染ませるためにすぐ触れる環境と作る、自動化を目指すにはまず手で出来る状態が必要といった地に足付いたコメントが印象的でした。