Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ベンチャー入社後の3年間でDevOps実践して開発・運用体験を劇的に改善した話
Search
Tomohiko Ozawa
June 22, 2023
Programming
1
310
ベンチャー入社後の3年間でDevOps実践して開発・運用体験を劇的に改善した話
Tomohiko Ozawa
June 22, 2023
Tweet
Share
More Decks by Tomohiko Ozawa
See All by Tomohiko Ozawa
カスタム GitHub Actions 超入門
kota65535
5
3.2k
Other Decks in Programming
See All in Programming
教えて!スクラムコーチ品質とスピードのバランスはどうすりゃいいの?
pinboro
0
100
Exploring Type-Informed Lint Rules in Rust based TypeScript Linters
unvalley
3
620
株式会社ゼネテック
genetec
0
120
SIMD Parallel Programming with the Vector API
josepaumard
0
250
Amazon Aurora Serverless v2が意外と高かった話と、AWS Database Migration Serviceの話
satoshi256kbyte
1
110
RailsConf 2024: Riffing on Rails: sketch your way to better designed code
kaspth
0
210
Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect
yasaichi
7
1.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
0
120
酒飲んでたらテックリードになった話
spbaya0141
0
210
otelcol receiver 自作RTA / Pepabo Tech Conference #22 春のSREまつり
arthur1
0
640
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
49
16k
Using "modern" Ruby to build a better, faster Homebrew
mikemcquaid
0
110
Featured
See All Featured
Embracing the Ebb and Flow
colly
80
4.2k
Designing for Performance
lara
601
67k
Writing Fast Ruby
sferik
622
60k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Typedesign – Prime Four
hannesfritz
36
2.1k
GraphQLの誤解/rethinking-graphql
sonatard
56
9.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
67
14k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
The Illustrated Children's Guide to Kubernetes
chrisshort
32
47k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Happy Clients
brianwarren
92
6.4k
Transcript
© 2023 SRE Holdings Corporation 証券コード:2980 © 2023 SRE Holdings
Corporation 3 DevOps 2023/06/21
© 2023 SRE Holdings Corporation SRE Holdings 2 2014 2019
SRE / AI DX DX IT
© 2023 SRE Holdings Corporation • (@kota65535) • • ⁃
⁃ ⁃ ⁃ CI/CD ⁃ • AWS ⁃ AWS Certified Solution Architect Professional 3
© 2023 SRE Holdings Corporation • Dev Ops • 2
• DevOps 4
© 2023 SRE Holdings Corporation • • • • DevOps
5
© 2023 SRE Holdings Corporation • Continuous Integration ⁃ •
Continuous Delivery ⁃ • Microservices ⁃ IF ⾒ • Infrastructure as Code ⁃ • Monitoring and Logging ⁃ • Communication and Collaboration ⁃ DevOps by AWS 6
© 2023 SRE Holdings Corporation 1. ⁃ ⁃ ⁃ CI/CD
2. 3. ⁃ DevOps 7
© 2023 SRE Holdings Corporation 8 Backend Java Spring Boot
MySQL OpenAPI Docker AWS ECS Python FastAPI Frontend Infra/Monitoring TypeScript React Material UI Emotion AWS S3 AWS CloudFront Vitest Cypress AWS Terraform Ansible GitHub GitHub Actions Envoy CloudWatch CI/CD X-Ray SonarCloud Trivy Vite
© 2023 SRE Holdings Corporation 9
© 2023 SRE Holdings Corporation • CI/CD : GitHub Actions
⁃ GitHub ⾒ ⁃ Action • setup-java: Java • github-openvpn-connect-action: OpenVPN • : GitHub Flow ⁃ main Feature ⁃ vs. Git Flow • Web • • ⁃ ⁃ CI/CD 10
© 2023 SRE Holdings Corporation • App Repo ⁃ ⁃
⁃ • : foo-front, foo-back ⁃ CI • Infra Repo ⁃ (Terraform) ⁃ App Repo ⁃ • : dev, stg, prod ⁃ CD 11 foo ├── build.gradle ├── foo-back └── foo-front foo-infra ├── envs │ ├── dev │ ├── prod │ └── stg ├── files └── modules
© 2023 SRE Holdings Corporation App Repo CI 12
© 2023 SRE Holdings Corporation • 1 2 • •
Pros. ⁃ ⁃ ⁃ • Cons. ⁃ CI ⁃ ⾒ • : ⁃ 1 ~8 ⁃ ⁃ ⾒ 頻 App Repo - vs 13
© 2023 SRE Holdings Corporation • • • GNU Make
⁃ ⁃ ⾒ • Bazel ⁃ ⁃ • Gradle ⁃ ⁃ Java 頻 ⁃ App Repo - 14
© 2023 SRE Holdings Corporation • Pros. ⁃ ⁃ Java
⁃ ⁃ ⁃ Gradle Wrapper ⁃ Groovy • Cons. ⁃ • • IntelliJ App Repo - Gradle 15
© 2023 SRE Holdings Corporation • Language-agnostic • clean ⁃
• check ⁃ • assemble ⁃ • build ⁃ check, assemble App Repo - Gradle 16
© 2023 SRE Holdings Corporation • App Repo - Gradle
(1/3) 17 assemble jar dockerBuild (Java) assemble npmBuild (Node) zip check test checkstyle check npmTest eslint
© 2023 SRE Holdings Corporation • App Repo - Gradle
(2/3) 18 assemble check assemble npmBuild (Node) zip check npmTest eslint assemble jar dockerBuild (Java) check test checkstyle
© 2023 SRE Holdings Corporation • App Repo - Gradle
(3/3) 19 assemble check assemble npmBuild (Node) zip check npmTest eslint assemble jar dockerBuild (Java) check test checkstyle
© 2023 SRE Holdings Corporation • • ⁃ ⁃ build
• ⁃ ⁃ check App Repo - (1/4) 20 Backend Frontend Build Check 📝
© 2023 SRE Holdings Corporation 1. ⁃ paths- lter ⁃
• • 2. ⁃ Gradle Project ⁃ App Repo - (2/4) 21 foo-back: - foo-back/** - * foo-front: - foo-front/** - * $ cd foo-back $ gradle dependentProjects –q :foo-front
© 2023 SRE Holdings Corporation • Composite Action • App
Repo - (3/4) 22 prepare-build: runs-on: ubuntu-latest outputs: changed: ${{ steps.services.outputs.changed }} # 変更されたサービスのリスト affected: ${{ steps.services.outputs.affected }} # 影響のあるサービスのリスト steps: - name: Checkout uses: actions/checkout@v3 - name: Get services uses: ./.github/actions/get-services id: services
© 2023 SRE Holdings Corporation • Matrix App Repo -
(4/4) 23 build-changed: needs: - prepare-build if: ${{ needs.prepare-build.outputs.changed != '[]' }} strategy: matrix: service: ${{ fromJSON(needs.prepare-build.outputs.changed) }} uses: ./.github/workflows/build-service.yml with: service: ${{ matrix.service }} check-affected: needs: - prepare-build if: ${{ needs.prepare-build.outputs.affected != '[]' }} strategy: matrix: service: ${{ fromJSON(needs.prepare-build.outputs.affected) }} uses: ./.github/workflows/check-service.yml with: service: ${{ matrix.service }}
© 2023 SRE Holdings Corporation App Repo - CI 24
© 2023 SRE Holdings Corporation App Repo - CI: Build
(1/4) 25
© 2023 SRE Holdings Corporation • PR / PR Push
• Gradle build / check App Repo - CI: Build (2/4) 26
© 2023 SRE Holdings Corporation • (Sonar Scanner) ⁃ ⁃
SonarCloud • PR App Repo - CI: Build (3/4) 27
© 2023 SRE Holdings Corporation • Slack • App Repo
- CI: Build (4/4) 28 •
© 2023 SRE Holdings Corporation App Repo - CI: Release
(1/6) 29
© 2023 SRE Holdings Corporation • PR / PR Push
• Gradle build / check App Repo - CI: Release (2/6) 30
© 2023 SRE Holdings Corporation • (Sonar Scanner) App Repo
- CI: Release (3/6) 31
© 2023 SRE Holdings Corporation • CodeArtifact Publish ⁃ Bundle
(Jar) ⁃ OpenAPI Document (YAML) • ECR Push ⁃ Docker Image • API & Publish ⁃ OpenAPI YAML HTML ⁃ Redoc ⁃ S3 App Repo - CI: Release (4/6) 32
© 2023 SRE Holdings Corporation • Infra Repo Release ⁃
Repository Dispatch ⁃ • • • App Repo - CI: Release (5/6) 33 { "services": [ { "name": "foo-back", "version": "1.2.3", "island": "01" } ] }
© 2023 SRE Holdings Corporation • Slack • @here ⁃
Release App Repo - CI: Release (6/6) 34
© 2023 SRE Holdings Corporation Infra Repo CD 35
© 2023 SRE Holdings Corporation Infra Repo - CD 36
© 2023 SRE Holdings Corporation • App Repo Release •
TF Infra Repo CD: Bump 37
© 2023 SRE Holdings Corporation Infra Repo CD: Plan (1/4)
38
© 2023 SRE Holdings Corporation Infra Repo CD: Plan (2/4)
39 • Bump Push • Terraform Plan
© 2023 SRE Holdings Corporation Infra Repo CD: Plan (3/4)
40 • PR PR Plan ⁃ [Click here] Plan
© 2023 SRE Holdings Corporation Infra Repo CD: Plan (4/4)
41 • main Slack Plan • Apply
© 2023 SRE Holdings Corporation Infra Repo CD: Apply (1/4)
42
© 2023 SRE Holdings Corporation Infra Repo CD: Apply (2/4)
43 • Apply OK ⁃ • Terraform Apply ⁃ Plan Plan
© 2023 SRE Holdings Corporation Infra Repo CD: Apply (3/4)
44 • ⁃ CodeDeploy ECS Blue/Green
© 2023 SRE Holdings Corporation Infra Repo CD: Apply (4/4)
45 • ⁃ CodeArtifact Bundle ⁃ Hosting S3 ⁃ CloudFront
© 2023 SRE Holdings Corporation • ⁃ GitHub Template repository
• 46
© 2023 SRE Holdings Corporation • Terraform Providers ⁃ terraform-provider-maven
⁃ terraform-provider-unarchive ⁃ terraform-provider-temporary • Terraform Modules ⁃ terraform-aws-github-work ow-dispatch ⁃ terraform-aws-github-work ow-dispatch-slack ⁃ terraform-aws-s3-deployment CI/CD OSS 47 • GitHub Actions ⁃ github-terraform-plan-comment-action ⁃ github-terraform-plan-slack-action ⁃ github-workflow-dispatch-action ⁃ github-workflow-dispatch-slack-action ⁃ github-openvpn-connect-action ⁃ github-asdf-parse-action ⁃ github-git-config-action ⁃ github-template-sync-action ⁃ github-template-rename-action
© 2023 SRE Holdings Corporation • ⁃ PR 10 Dev
⁃ ⁃ • ⁃ ⁃ • ⁃ ChatOps Apply ⁃ 築 CI/CD 48
© 2023 SRE Holdings Corporation DX (Developer Experience) 1 49
© 2023 SRE Holdings Corporation