見出し画像

2018-11-05 JDDStudy #4 最新DevOps事例勉強会!サーバーレスアーキテクチャとコンテナの話。

2018/11/05 に開催された JDDStudy #4 最新DevOps事例勉強会!サーバーレスアーキテクチャとコンテナの話。 のイベントレポートです。

●イベントのテーマ
コンテナがいいのか?サーバーレスがいいのか?よりよい開発環境構築のために頭を悩ませている方も多いのではないでしょうか??
AWSを含む3社の開発技術動向をお話いただきます。

■AWSにおける Microservices Architecture と DevOps を推進する組織と人とツール

アマゾン ウェブ サービス ジャパン株式会社 福井 厚さん

●なぜDevOpsなのか
・俊敏さが必要になった
  クラウド活用で少ない資金ですばやく配布して、すばやくフィードバックを得る
・必要な組織、人
  要求の変化に柔軟に対応
  自動化を推進
  フィードバックを得て、すばやく意思決定

●人、組織、文化、プラクティス、ツール
・DevOpsとは
  ソフトウェ開発のライフサイクル
・Culture
  壁を取り払う
  所有権と説明責任をチームに
  個人に対する責任は小さく
  小さなチーム
  常に改善して高みを目指す
・Practices
  CI/CD
  Microservices
  Infrastructure as code
    アプリもインフラも、可能な限り自動化
    宣言的に定義
    セキュリティを含める
    モニタリング、ロギング、監査
  モニタリングとロギング
    メトリクスとログをトラッキングして分析
    しきい値を超えたら何かする
  自動ロールバック
    失敗時の最速リカバリはロールバック
    まずロールバック。後でログ、グラフからデバッグ
  コードは全てコードリポジトリで
    アプリ、インフラ、ドキュメント
    amazonではベテラン2人のレビューがないとリリースできない
・Tools

●AmazonでのDevOpsストーリー
・歴史
  amazonもモノリシックだった
    ブラックフライデー:金曜ビルドが月曜来ても終わらない
    スケールアップの限界
  → Microservicesへ
・ルールが生まれた
  Two-pizza team
  You build it, you run it.
・AmazonのOLPから3つ抜粋
  Customer Obsession
  Ownership
  Bias for Action
・開発の進め方
  MVP
  PR/FAQ
    プレスリリースから書く
  6 pager / 1 pager
    スライドではなくナラティブ

●フルマネージドなサービスで実現するDevOps
・CodeStar
  ・Cloud9
  ・CodePipeline
    ・CodeCommit
    ・CodeBuild
    ・CodeDeploy
    ・CloudFormation
  ・AWS X-Ray

■小さい組織も導入できるサーバーレスアーキテクチャとDevOps

株式会社ukka Hiroki Uemoto さん

●サービス
  OWNERS

●はじめからまとめ
・サーバーレス採用してよかった
・最初からDevOps整えてよかった
・小さい組織だからこそ

●なぜサーバレスに決めたか
  経験があった
  ミドルの細かい設定に力を使いたくなかった
・メリット
  スケーラブル
  運用が楽
  安い!:EC2 $100 -> ほぼゼロ
・デメリット
  RDSが使えない -> DynamoDB
    コネクションが食いつぶされる
  言語が限られる
・注意
  Lambdaの同時実行数上限は 1,000
    申請して 10,000 まで挙がった
  実行時間は 5min -> 15min になった
    バッチは注意
  API Gatewayからテキスト以外は配信しない
    staticなものはS3 + CloudFront
    -> 領収書PDFで一日調べて諦めた
※実装なしでDynamoDB -> Athenaにデータを流せた
  AWS Glue
  ETL で json -> S3
  Athenaでクエリ
  AWSのコンソールだけで行けた
  ※代わりに、値段は高かった

●DevOps
・ローカル環境をdocker化
  ・環境構築で時間を割いてほしくない
  ・docker, docker-machine, docker-compose で済ませた
・issue管理
  ・GitHub + ZenHub
  ・Git Flow
・デプロイ
  ・Circle CI
    developへマージ -> staging環境へ自動デプロイ
    masterはマージ -> production環境へ自動デプロイ
・テスト
  ・pushの度
  ・重要な部分はがっつり、それ以外はできるだけ
    間違ったクレカ番号の人力テストとかはCIに
    目的はリードタイムの短縮
  ・テストケース管理:TestCaseLab
    結果をissueとリンクできる
    $28でユーザ無制限 / 500ケースまで
    動きは重い

●まとめ
・DevOpsは、はじめから整えておくと楽
  ・デプロイはCIに任せる
  ・testは重要なところだけでも書く
  ・testを外注するなら管理ツールも導入

■プロジェクトにおけるDevOpsプロセス事例

Japan Digital Design株式会社 Takuya Noguchi さん

●20人で7プロジェクト
  -> 少人数で回す必要がある

●DevOps with Docker/Kubernetes
  managed Kubernetes
  GitOps

●Kubernetes と Serverless
  vs ではなく、両方使う

●Work like OSS
  GitLab, Inc. の "Remote Only" Mnifesto
  Agile, Scrum

●Collaborate with Communities

■mini projectにおけるサーバーレス事例

Japan Digital Design株式会社 Yoshiki Ozaki さん

●mini project
  CEATEC JAPAN 2018向けに作った
  次世代っぽいATM

●チーム
  ProductManager
  CXO
  Android
  Frontend
  Backend
  +
  Designer

●技術スタック
  Vue, Lottie, Firebase, CloudFunctions, Firestore
  WebUSB

●ツール
  Jira
  テストコードなし
  prettier-eslint

●CI/CD
  GitLabCI -> firebase deploy
  Hockeyappでテスト端末にデプロイ

●Monitor
  Firebaseが落ちたらまずい
  → Firebase提供のincident.jsonを監視
   アプリ内で、サマリ、アラート
   オフライン対応も必要

※Auth0
  フロントエンドで完結するから自由度が高い

■感想

AWSさんの文化は何度聞いても、自分の状況に応じて新しい学びがありますね!プレスリリースから書くのは、エレベータピッチに近い効果が得られそうだし、6pager/1pagerは、ストーリーで伝えるAkatsukiさんのお話を連想しました。文化、プラクティス、ツールをバランスを取りながら進めていくには何をすれば良いか考え続けていきたいです。

「DynamoDB -> Athena への流し込み」便利そうですね!ukkaさんのお話はアーキテクチャとDevOpsでとった戦術が、とても分かりやすくまとまっていました。伝わりやすくなるポイントは何なのか、とても気になります。

考えるための視点をたくさんいただける場でした。ありがとうございます。

この記事が参加している募集

いつも応援していただいている皆さん支えられています。