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

システムテスト自動化カンファレンス2018

Atsushi Kawamura
December 08, 2018
7.9k

 システムテスト自動化カンファレンス2018

登壇タイトル「freeeの品質トゥギャザー」の後半分です

Atsushi Kawamura

December 08, 2018
Tweet

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. 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固有設定
    セットアップスクリプト
    テスト結果

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide