Slide 1

Slide 1 text

短期間でDevOpsのベストプラク ティスで開発を実現した話 株式会社ビッグツリーテクノロジー&コンサルティング 廣末丈⼠

Slide 2

Slide 2 text

⾃⼰紹介 • 廣末丈⼠ • 株式会社ビッグツリーテクノロジー&コンサルティング • 最近は技術⽀援、開発基盤整備などの仕事が多め • ⾃称フルスタックエンジニア

Slide 3

Slide 3 text

みなさん、DevOpsのベストプラクティス 実践できていますか?

Slide 4

Slide 4 text

DevOpsのベストプラクティス • 継続的インテグレーション • 継続的デリバリー • マイクロサービス • Infrastructure as Code • モニタリングとロギング • コミュニケーションと共同作業 引⽤元: https://aws.amazon.com/jp/devops/what-is-devops/

Slide 5

Slide 5 text

とある開発案件 • 官公庁向け新規のWebサービス開発 • ローンチまでの期間は1ヶ⽉強 • アプリの機能はシンプル (画⾯数6、マスタデータ:4、トランデータ:3程度) • ⼤まかな仕様は提案時に策定済 • AWS利⽤ • 使い捨てでなく、それなりに⻑く使われる想定

Slide 6

Slide 6 text

プロジェクト体制 開発期間 1.5ヶ⽉ 開発メンバ数 3名 開発基盤整備・開発⽀援 1名(わたし) フロントエンド 1名(新卒3年⽬) バックエンド 1名(新卒2年⽬) 勤務形態 ほぼリモート ※⽴ち上げ期に週1出社程度

Slide 7

Slide 7 text

検討したこと • データストア(RDB or NoSQL) • Caas or FaaS • 認証 • CI / CD • Infrastructure as Code(IaC)

Slide 8

Slide 8 text

検討したこと → 中間結果 • データストア(RDB or NoSQL)→ページングあるのでAurora • Caas or FaaS → RDS Proxy GA後だったため、Lambda(FaaS) • 認証 → Cognito • CI / CD → 後述… • Infrastructure as Code(IaC) → 後述…

Slide 9

Slide 9 text

AWS Amplify ⼀択

Slide 10

Slide 10 text

AWS Amplify とは? • AWS Amplify は Web フロントエンド、モバイルアプリの開発を加速 させるために作られたプラットフォーム • サーバーレスなバックエンドの構築するための CLI や、バックエンド と接続するためのライブラリ、Web サイトのホスティングの仕組み を持つ

Slide 11

Slide 11 text

Amplifyの開発スタイル 例:REST API⽣成 1) コマンド実⾏

Slide 12

Slide 12 text

2) オプション選択

Slide 13

Slide 13 text

3) ファイル⽣成 ← ソースファイル ↓インフラ⽣成コード ← カスタマイズパラメータ

Slide 14

Slide 14 text

3) ソースコード 選択したオプションに応じ、ボイラーテンプレートが出⼒される

Slide 15

Slide 15 text

開発。。。 数時間後。。。

Slide 16

Slide 16 text

4) APIのデプロイ pushコマンドでインフラコードとソースコードをAWSに反映 する(裏でCloudFormationを実⾏し、AWSリソース⽣成)

Slide 17

Slide 17 text

検討したこと → 最終結果 • データストア(RDB or NoSQL)→ページングあるのでAurora • Caas or FaaS → RDS Proxy GA後だったため、Lambda(FaaS) • 認証 → Cognito + IAM認証(Amplify Auth) • CI / CD → Amplify Consoleで実現 • Infrastructure as Code(IaC) → Amplify CLIで実現

Slide 18

Slide 18 text

DevOpsのベストプラクティス • 継続的インテグレーション → Amplify Console • 継続的デリバリー → Amplify Console • マイクロサービス → FaaS • Infrastructure as Code → Amplify CLI • モニタリングとロギング → CloudWatch(Logs/Metrics) • コミュニケーションと共同作業 → 後述… 引⽤元: https://aws.amazon.com/jp/devops/what-is-devops/

Slide 19

Slide 19 text

開発者 Cloud Formation CloudFront + S3 Cognito IAM認証 Aurora with RDS Proxy Batch Code Commit ⾃動 デプロイ Amplify Console Amplify CLI (amplify push) 担当者 API GateWay + Lambda アーキテクチャ CSV作成⽤バッチ CSV配置 開発時の 随時の環境反映 CSV ダウンロード

Slide 20

Slide 20 text

開発者 Cloud Formation CloudFront + S3 Cognito IAM認証 Aurora with RDS Proxy Batch Code Commit ⾃動 デプロイ Amplify Console Amplify CLI (amplify push) 担当者 API GateWay + Lambda Amplifyで⽣成可能なリソース CSV作成⽤バッチ CSV配置 開発時の 随時の環境反映 CSV ダウンロード 対象外 リソース 個別にCfnで⽣成

Slide 21

Slide 21 text

Amplify良かったこと(その他) • ブランチプレビュー 機能ブランチでプレビュー環境作成。リソース(バックエンド、 DB含め)を丸ごと作成し、⼀早いフィードバックをもらえる 運⽤後の複数機能の並⾏開発、バグフィックス+機能の並⾏開発 などでもスムースに対応できた • レジリエンス サーバレス前提のため、障害に強く、東京リージョンなどで発⽣ する⼀時的な障害などにも基本最短時間で復旧できた

Slide 22

Slide 22 text

コミュニケーションと共同作業について

Slide 23

Slide 23 text

検討事項 • 若⼿メンバー育成 • 仕様のやりとり • その他もろもろ。。。 ・モブワーク 画⾯共有、VS Code Live Shareなど活⽤し、ナレッジ共有&課題に対応 ・1 on 1 定期的にメンバの現状や悩みを確認。メンバとのコミュニケーションの障 壁を低くし、メンバに応じた動機付けのポイントなどを探った。 実施したこと

Slide 24

Slide 24 text

結果、残業もほとんどなく 無事、ローンチ。 安定運⽤も実現できています。

Slide 25

Slide 25 text

まとめ • Amplify CI/CD, IaCなどを省⼒化できるAmplifyにどっぷりハマる。ユース ケースに応じて活⽤することで、運⽤もスムースに • 共同作業 モブワーク(Live Share)、1 on 1などでリモート課題に対応

Slide 26

Slide 26 text

ご静聴ありがとうございました!