Slide 1

Slide 1 text

freee 株式会社 システムテスト自動化カンファレンス 後半 2018.12.08 システムテスト自動化カンファレンス2018

Slide 2

Slide 2 text

今年1月にfreeeにSREとしてJoin それまではSSD作ってました サービスインフラ構築、監視、生産性改善、マイク ロサービス化推進、 色々やってます Github: at-k Twitter: at_k Atsushi Kawamura 河村 篤志 freee株式会社 2

Slide 3

Slide 3 text

3 これまでのおはなし(前半はこちら) ● エンジニア・プロジェクトの増加 ○ テストにかかる時間が急増 ○ テストの効率改善が急務 ● テスト環境の構築が大変 ○ 属人性いっぱい ○ マイクロサービス化による環境構築が面倒に ○ 環境構築方法の改善が必要

Slide 4

Slide 4 text

4 作りました テスト工程を加速する Pull Request評価環境構築基盤 全部クラウドで。

Slide 5

Slide 5 text

5 コンセプト Pull Requestのレビュー → E2Eテスト → マージ、のサイクルを高速に回したい ● Pull Request作成をトリガに、可能なところは自動でやる ○ ユニットテスト (実現済み) ○ コード静的解析 (実現済み) ○ Pull Requestを反映したシステムの自動構築 (NEW!) ○ Pull Requestを反映したシステムに対するE2Eテストの自動実行 (NEW!) ● Pull Request(GitHub)が中心のオペレーション ○ なるべくGitHub上で完結できるような作りに ○ GitOpsの実現

Slide 6

Slide 6 text

6 デモ

Slide 7

Slide 7 text

7 PRレビューの流れ developer reviwer QA PR 作成 環境構築 変更確認 動作確認 修正 依頼 環境更新 追加 コミット 再確認 QA依頼 E2E 実行 E2E 結果 確認 LGTM マージ

Slide 8

Slide 8 text

8 全体像 全部クラウド API Gateway Lambda S3 ELB EC2 ECR Parameter Store CodePipeline セットアップ 参照 reviewer github Event hook setup start pull request 作成

Slide 9

Slide 9 text

9 GitHub連携 ● Webhook利用 ○ 以下を選択 ■ Issues comments ■ Labels ■ Pull Requests ■ Pushes

Slide 10

Slide 10 text

10 GitHub連携 ● 対象Pull Requestに投稿されたコメントを解析してコマンド実行 ○ 死活確認 ○ 環境確認 ○ 設定変更 ○ その他 50円 / 1時間

Slide 11

Slide 11 text

11 環境構築 ● ECRのdocker imageでコンテナ起動 ○ docker imageは常に最新を維持 ■ bundle install, yarn install済み ● git checkoutでPRのコードを取得 ● assetsはcircle ciでbuildされたものを流用 ● DBはmysql dump取り込み & db:migrate Lambda S3 ELB EC2 ECR Parameter Store CodePipeline 認証情報管理 PRマージに フックして docker build実行 PR固有設定 セットアップスクリプト テスト結果

Slide 12

Slide 12 text

12 プロジェクトの進め方 アプリケーションエンジニア、QAエンジニア、SREが共同で推進 ● アプリケーションエンジニア ○ docker化やチューニング(起動の高速化等)の推進 ○ アプリケーション起因の問題へのアドバイス ● SRE ○ インフラ整備 ○ コンポーネントつなぎ込み、自動化 ○ インターン生にもかなり(基本アーキは全部)お手伝いいただきました! ● QA ○ 要件定義、機能設計 ○ E2E自動化

Slide 13

Slide 13 text

13 期待される効果 ● 誰でも、独立した環境が、すぐに、構築できる ○ レビュー、QAが誰でもすぐに始められる ○ 評価環境を持っていない人はわざわざ作る必要が無い ○ 環境を持っている人も自分の環境を汚したり、PR用にセットアップする必要がない ● 最新の評価環境が常に維持される ○ バージョン誤りによるレビューQAの誤認を防ぐ ● 評価環境のスペックを柔軟に変えられる ○ 性能が必要な評価をすばやく行える ● 大量のテスト環境を一気に用意できる ○ テストの並列度を上げられる

Slide 14

Slide 14 text

14 課題と今後 ● 使い勝手を上げていく ○ 起動をもっと早く、早く ○ すべての機能・マイクロサービスが揃っていない ○ 異なるバージョン感のマイクロサービス結合テスト ● 環境構築の柔軟性を上げる ○ より簡単なスケーリング ○ リソース管理効率の最適化 ● コスト最適化 ○ 自動スケーリング ○ 不要リソースの自動検出・停止 ● モニタリング ○ 使用状況監視、ロギング

Slide 15

Slide 15 text

15 終わり

Slide 16

Slide 16 text

スモールビジネスに携わる すべての人が「創造的な活動」に フォーカスできるよう