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

Cloud Native Apps

tnir
April 19, 2018

Cloud Native Apps

Cloud Native Apps入門

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

tnir

April 19, 2018
Tweet

More Decks by tnir

Other Decks in Technology

Transcript

  1. @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 プロポーザルレビュアー 公式サイト レスポンシブ対応
  2. 質問 • みなさん ロール なんですか? ◦ インフラエンジニア ◦ SRE ◦

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

    Case study • iRidge • GitLab • GitHub まとめ • 成果と課題
  4. “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/
  5. Cloud Native Computing Foundation • 2015年にKubernetesプロジェクト 寄贈先としてLinux Foundation もとでスタート •

    20プロジェクト(2018年4月現在) • メンバーシップ(スポンサー) ◦ ~ 180社 (2018年4月現在) • Technical Oversight Committee • Governing Board • Staff
  6. 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/ • 「クラウド 提供するアジリティをビジネス加速に役立てる」 →ややエンタープライズ寄り?
  7. 技術選択(ツール) 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
  8. The Twelve-Factor App原則に従う https://12factor.net/ I. コードベース バージョン管理されている 1つ コードベースと複数 デプロイ

    II. 依存関係 依存関係を明示的に宣言し分離する III. 設定 設定を環境変数に格納する IV. バックエンドサービス バックエンドサービスをアタッチされたリソースとして扱う V. ビルド、リリース、実行 ビルド、リリース、実行 3つ ステージを厳密に分離する VI. プロセス アプリケーションを 1つもしく 複数 ステートレスなプロセスとして実行する VII. ポートバインディング ポートバインディングを通してサービスを公開する VIII. 並行性 プロセスモデルによってスケールアウトする IX. 廃棄容易性 高速な起動とグレースフルシャットダウンで堅牢性を最大化する X. 開発/本番一致 開発、ステージング、本番環境をできるだけ一致させた状態を保つ XI. ログ ログをイベントストリームとして扱う XII. 管理プロセス 管理タスクを 1回限り プロセスとして実行する
  9. 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/
  10. (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), ]
  11. 外部サービスに注意 Service A Service B Proxy Ext. Service X Service

    C Service D サーキットブレーカーがない で Service B 実装を頑張る Ours Customer’s HTTP/1.1 REST API XML etc.
  12. k8s migration of API & Web of github.com Kubernetes Meetup

    Tokyo #9 https://speakerdeck.com/tnir/kubecon-tips-and-kubernetes-at-github
  13. コミュニティと 関わり • 社内で一人孤立奮闘・・・頼り ドキュメント • オーガナイザ ◦ Kamiyacho.k8s ◦

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

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