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でとった戦術が、とても分かりやすくまとまっていました。伝わりやすくなるポイントは何なのか、とても気になります。
考えるための視点をたくさんいただける場でした。ありがとうございます。
この記事が参加している募集
いつも応援していただいている皆さん支えられています。