Cloud Native Apps

8c5062689b241827e7532be41ff19e20?s=47 tnir
April 19, 2018

Cloud Native Apps

Cloud Native Apps入門

[B-1] 2018-04-19 Japan Container Days v18.04

8c5062689b241827e7532be41ff19e20?s=128

tnir

April 19, 2018
Tweet

Transcript

  1. Cloud Native Apps 入門 @tnir - Takuya Noguchi 2018-04-19 -

    Japan Container Days (JKD) v18.04
  2. @tnir Takuya Noguchi Tw: @tn961ir FB: @takuya.noguchi.961 • Co-organizer of

    Kaimyacho.k8s & Prometheus Tokyo & Docker Meetup Tokyo • Cloud Native Ambassador, CNCF • Core Team member, GitLab • 20 yrs Software Engineer in Digital Transform • Works for iRidge, Inc. as Tech Comm/DX←SRE←SWE Japan Container Days v18.04 プロポーザルレビュアー 公式サイト レスポンシブ対応
  3. 質問 • みなさん ロール なんですか? ◦ インフラエンジニア ◦ SRE ◦

    エンジニアリングマネージャー ◦ アーキテクト・システムエンジニア ◦ アプリケーションエンジニア
  4. Agenda Cloud native appsと • Cloud native applications • CNCF

    Case study • iRidge • GitLab • GitHub まとめ • 成果と課題
  5. What is Cloud Native?

  6. “Cloud native” (CNCF憲章) クラウドネイティブなシステム(cloud native system): 1. Container packaged (

    => containerization) 2. Dynamically managed ( => orchestration) 3. Micro-services oriented ( => service mesh) https://www.cncf.io/about/charter/
  7. CNCF

  8. Cloud Native Computing Foundation • 2015年にKubernetesプロジェクト 寄贈先としてLinux Foundation もとでスタート •

    20プロジェクト(2018年4月現在) • メンバーシップ(スポンサー) ◦ ~ 180社 (2018年4月現在) • Technical Oversight Committee • Governing Board • Staff
  9. Cloud Native Landscape 詳細 17:00〜 [B-5]CNCF: Evolving the Container Landscape[Chris

    Aniszczyk]
  10. CNCF CI dashboard github.com/crosscloudci/cross-cloud https://cncf.ci/

  11. Certification (Kuberentes)

  12. Certification (CKA & CKAD) Kubernetes管理者認定資格 Kubernetesアプリ開発者認定資格 (ベータ)

  13. Definition of Cloud Native?

  14. What’s cloud native application? • Developing Cloud Native Applications ◦

    Ken Owens (Cisco Systems), May 2017 ◦ https://blog.devnetcreate.io/developing-cloud-native-applications- 94179c53e486 ◦ https://www.cncf.io/blog/2017/05/15/developing-cloud-native-ap plications/ • Cloud Native Application Maturity Model (2015) ◦ https://www.nirmata.com/2015/03/09/cloud-native-application-m aturity-model/ • 「クラウド 提供するアジリティをビジネス加速に役立てる」 →ややエンタープライズ寄り?
  15. Cloud application maturity https://www.nirmata.com/2015/03/09/cloud-native-application-maturity-model/ (by Open Data Center Alliance)

  16. Case study #1 iRidge

  17. iRidge, Inc. • スマホアプリ専業(O2O, Fintech) ◦ システム・インテグレーション • 2008年創業 •

    従業員 70名(エンジニア30名, No Ops)
  18. 技術選択(ツール) 2008 2013 2014 2015 2016 2017 2018 2019? 創業

    SaaS立ち上げ 売上 前年比3倍 EU展開 上場 SRE立ち上げ 300人体制へ App Engineでスタートするも環境が特殊、ベンダーロックイン 懸念 (2011) EC2東京リリースでAWS本格導入 Gitへ 移行、コンテナ技術導入 Kubernetes、CI/CD導入 Registry基盤導入 ベンダーニュートラル Serverless Auto DevOps Unikernel
  19. The Twelve-Factor App原則に従う https://12factor.net/ I. コードベース バージョン管理されている 1つ コードベースと複数 デプロイ

    II. 依存関係 依存関係を明示的に宣言し分離する III. 設定 設定を環境変数に格納する IV. バックエンドサービス バックエンドサービスをアタッチされたリソースとして扱う V. ビルド、リリース、実行 ビルド、リリース、実行 3つ ステージを厳密に分離する VI. プロセス アプリケーションを 1つもしく 複数 ステートレスなプロセスとして実行する VII. ポートバインディング ポートバインディングを通してサービスを公開する VIII. 並行性 プロセスモデルによってスケールアウトする IX. 廃棄容易性 高速な起動とグレースフルシャットダウンで堅牢性を最大化する X. 開発/本番一致 開発、ステージング、本番環境をできるだけ一致させた状態を保つ XI. ログ ログをイベントストリームとして扱う XII. 管理プロセス 管理タスクを 1回限り プロセスとして実行する
  20. CI(/CD)基盤 • イメージビルド 省力化・自動化・標準化 重要 by GitLab Container Registry 非クリーン環境

    クリーンDocker環境 2016〜 2013〜
  21. GitLab CI評価 • UI 洗練感 ない • 企業ユースに 適する •

    Cloud native対応 • GitHub / GHE対応 • CNCF CIにも採用済み The Forrester Wave™: Continuous Integration Tools, Q3 2017 https://www.forrester.com/report/The+Forrester+Wave+Continuous +Integration+Tools+Q3+2017/-/E-RES137261 https://get.gitlab.com/forrester-wave-ci/
  22. アーキテクチャ • システムごとにアーキテクチャをレビュー ◦ マイクロサービスになっているとレビューに時間がかかる • そもそもマイクロサービスとして 開発リソースが足りない • 慣れたウェブアプリフレームワークを使いたい

     → 積極的なマイクロサービス 行わない
  23. マイクロサービス化にこだわらない • 既存コード資産 • 慣れたフレームワーク • I/Oを熟考した「サービス」を実装していく cf.) Spoons (LightStep)

    “The End of Microservices”, Jul 2017: https://lightstep.com/blog/the-end-of-microservices/
  24. (e.g.) Djangoアプリを分離 from django.urls import path from . import views

    urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive), path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail), ]
  25. 外部サービスに注意 Service A Service B Proxy Ext. Service X Service

    C Service D サーキットブレーカーがない で Service B 実装を頑張る Ours Customer’s HTTP/1.1 REST API XML etc.
  26. Kubernetesをもっと身近に 全ソフトウェアエンジニアがKubernetesで動くアプリを開発でき るように

  27. Case study #2 GitLab (OSS)

  28. GitLab: Railsアプリ + 複数M/W All-in-one packages (rpms, debs) →そ ままイメージ化

  29. Cloud-native化 Gitオペレーションがfilesystem にべったり 実装 →垂直分割   gRPC (Go)で実装 →クライアント側: grpc-ruby  →重たい(少しツラい)

    https://dzone.com/articles/3-lessons-from-transitioning-a-monolith-to-cloud-n
  30. Services & Pods https://about.gitlab.com/handbook/infrastructure/production-architecture/

  31. Case study #3 GitHub (github.com)

  32. k8s migration of API & Web of github.com Kubernetes Meetup

    Tokyo #9 https://speakerdeck.com/tnir/kubecon-tips-and-kubernetes-at-github
  33. Connect with Community

  34. コミュニティと 関わり • 社内で一人孤立奮闘・・・頼り ドキュメント • オーガナイザ ◦ Kamiyacho.k8s ◦

    Prometheus Tokyo ◦ GitLab Tokyo & GitLab.JP ◦ Cloud Native Ambassadors ◦ Docker Tokyo • 参加者 ◦ 多数 コミュニティ • 今同じような人がいれ ぜひコミュニティへご参加を!
  35. Summary 1. どんなワークロードもKubernetesで実行できる世界を目指 しましょう(アプリ cloud native化) 2. Cloud nativeなアプリを開発していける仕組み化が重要 3.

    スタートとして“microservices”に拘らないことも大事 4. コミュニティ 皆さまに支えられてやってこれ、社内 コンテ ナ標準化ができた
  36. None