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
多数のプロダクトを開発・運用するためのツール環境
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Hiroki Matsumoto
March 17, 2023
Technology
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
多数のプロダクトを開発・運用するためのツール環境
Hiroki Matsumoto
March 17, 2023
More Decks by Hiroki Matsumoto
See All by Hiroki Matsumoto
システム改善・育成のための障害対応訓練
hirokimatsumoto
0
260
CI/CD環境としてGitHub Actionsを選んだ理由
hirokimatsumoto
0
250
初めてのPSI試験 with Vault Associate
hirokimatsumoto
0
270
デプロイメント手法を選択する/Decide the way of deployment
hirokimatsumoto
2
1.1k
Podライフサイクルを体験する/ux-with-pod-lifecycle
hirokimatsumoto
1
590
Effective Container with VSCode Remote Container
hirokimatsumoto
0
180
GKE+Argo workflow
hirokimatsumoto
1
610
Ansibleをやろうと思ったきっかけ/The-reason-why-I-want-to-learn-Ansible
hirokimatsumoto
0
120
GraalVM Native Imageが 見せた未来/graalvm-native-image showed the future
hirokimatsumoto
2
550
Other Decks in Technology
See All in Technology
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.3k
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
200
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.7k
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.4k
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
150
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
210
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
2
450
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.5k
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
200
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
780
モダンフロントエンド 開発研修
recruitengineers
PRO
3
560
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
170
Featured
See All Featured
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
The Language of Interfaces
destraynor
162
27k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Accessibility Awareness
sabderemane
1
170
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Transcript
多数のプロダクトを開発・運⽤するための ツール環境 March 17th, 2023 Matsumoto Hiroki Marketing Cloud Platform
Department Rakuten Group, Inc.
2 Profile 松本宏紀 ( Matsumoto Hiroki ) • Reliability Engineering
Team • Software Engineer • Joined Rakuten in 2020 • Published • OSS: Passenger Go Exporter • Presentation: デプロイメント⼿法を選択する ~ Flagger/Argo Rollouts ~ • GKE + Java + Cassandra → Ruby + Go + Kubernetes ( Private Cloud / AKS ) • Twitter : @hirokimatsumo13
3 Table of Contents 1. 扱っているプロダクト群 2. 運⽤環境 3. 開発環境
4. 今後
4 扱っているプロダクト群 楽天グループ全体で利⽤される様々なプラットフォームの開発・運⽤を担当。 ShortURL Platform ショートURL管理 Lottery Platform くじ管理 Questionnaire
Platform アンケート管理 Video Platform 動画管理 SUSUMERU Platform SNS投稿管理 Campaign Application Tool キャンペーン管理 Digital Media Center 画像管理 +2 Products
5 扱っているプロダクト群 ShortURL Platform Lottery Platform Questionnaire Platform Video Platform
SUSUMERU Platform Campaign Application Tool Kubernetes環境下で多数のサービスが稼働している状態。 Digital Media Center +2 Products Kubernetes Ruby Golang Kubernetes Ruby Kubernetes Ruby Kubernetes Ruby Kubernetes Ruby Kubernetes Ruby Golang Kubernetes PHP
6 運⽤環境 - Kubernetes Private Cloud Multi regionで構築。またPrivate Cloud環境を主軸に、部分的にはAzure (Azure
Kubernetes Engine) を利⽤。 Azure <<Japan East>> Kubernetes Cluster <<Japan West>> Kubernetes Cluster Prometheus+ Grafana <<Japan East>> Kubernetes Cluster <<Japan West>> Kubernetes Cluster Prometheus + Grafana Elastic Cloud Slack PagerDuty Teams HashiCorp Vault
7 運⽤環境 - Kubernetes Cluster CPU Deployments Traffics 12 over
400 cpus over 50 over 6,000 req/sec
8 運⽤環境 – メンバー Senior Operators Middle Operators Junior Operators
2 3 2 各⾃が全てのプロダクトのインシデント対応、リリースなどを⾏なっている状態。 また運⽤メンバーは専任ではなく、全員がDevOpsとして開発も担当。
9 すごい⼤変だと思う
10 運⽤環境 – 楽に管理するために 複数クラスタ管理は⼤変 Logging / APMはKibana、MetricsはGrafanaで管理できているが、特定podだけ問題が発⽣、特定 nodeだけで問題が発⽣する場合がある。その場合、kubernetesの状況を確認したり、nodeの corden,
drainすることもあるが正直Terminalでのクラスタ切り替えめんどくさい。 定常的には開発環境のクラスタを利⽤してるので複数のクラスタを同時に利⽤したい。
11 運⽤環境 – 楽に管理するために Tool 所感 Rancher Private Cloud環境においてはcluster admin権限をもっていないので
利⽤できない。 k9s 複数クラスタを扱いやすい。 でも、logsやexecで⾊々⽴ち上げて管理しようと思うと、ちょっと ⼤変。(でも素のkubectlで扱うよりは断然楽だし安全) Lens (OpenLens) GUIでとても使いやすい。バグっぽい動きをバージョンアップの都度 みせるが、圧倒的使いやすさ︕
12 運⽤環境 – Lens Unable to skip login page https://github.com/lensapp/lens/issues/5444
あるバージョンからログインが必須になった。 認証情報の連携や、クラスタ情報をどこか別のサーバーなどに送信されるのは避けたい。
13 運⽤環境 – Lens ⾃分でビルドしちゃう https://github.com/h-r-k-matsumoto/lens/releases https://github.com/h-r-k-matsumoto/lens/blob/release/main/.github/workflows/release.yaml Core部分 ( Open
Lens)に関しては、ソースが公開されているので独⾃ビルドして認証部分が含まれ ていないビルドイメージを作成して利⽤。
14 運⽤環境 – Lens Remove in-tree extensions to help facilitate
a more secure and faster booting lens https://github.com/lensapp/lens/pull/6775 あるバージョンからpodのメニューからShell、Attachが無くなった。
15 運⽤環境 – Lens ⾃分でカスタマイズしちゃう 6ed16da︓もう直接埋め込んでしまえと変更 https://github.com/h-r-k-matsumoto/lens-extension-menu ちゃんとした拡張モジュールとして作成。でも・・・ https://github.com/lensapp/lens/issues/6846 アンインストールできないバグなどがあった
( 6.4.0で修正予定 すでに修正済み)
16 運⽤環境 可⽤性を限りなく⾼める。⾃⽴的復旧環境を構築することが⼤事。 もっと扱えるプロダクトをスケールアウトできるようにしたい。 そのためには、⼿間が掛からない運⽤環境を⽬指さなければならない。 故障は発⽣する。すぐ調査〜復旧するためのツール環境の構築。 Metrics、Logging、Operationsそれぞれ⼀元管理できる環境だとやはり操作性は良い。 偶発的に発⽣するNodeの問題などに対処するためにはkubectlを楽に、且つ安全に扱える環境を構 築した⽅が良い。
17 開発環境 楽に環境構築を作りたい。あまり負荷がかからない環境で開発したい。 扱うプロダクトも多数あるので、個⼈の開発環境ではkindは利⽤せず、単純にアプリケーション開 発のみに焦点を当てている。 Individuals (Mac OS) Lima VS
Code + Dev Container AppRepository Dockerfile compose.yaml .devcontainer ManifestsRepository manifest files CI/CD: GitHub Actions Staging
18 開発環境 Lima https://lima-vm.io/ 以前はDocker Desktopを使っていたがライセンス変更に伴い、LimaによるLinux仮想環境に移⾏。 Docker⽤環境構築の例( docker.yaml )もあるので、容易に利⽤できる。 v0.14.0からはVirtualization
frameworkがサポートされた。( リリースバイナリとして利⽤できたの は実質使えたのはv0.14.1から︖)
19 開発環境 Macでファイルアクセスが遅い問題 Rspecの実⾏で起動時に1分以上かかる場合があった。 恐らくvolume mountしているファイルが多いと、ものすごく時間がかかる︖ ※各個⼈の環境差異もある 個⼈的には下記を留意することで遅い問題は回避できてそう。 • Volume
mountするのは最⼩限に • Virtualization Frameworkを利⽤する volumes: -.:/rails:cached -../framework:/framework:cache
20 開発環境 VS Code + Dev Container https://code.visualstudio.com/docs/devcontainers/containers とにかくPCに⾊々インストールするのが嫌。バージョンアップも管理するのも嫌。 全部コンテナの中に詰め込んでしまう。
必要なサービス ( MySQL, Redis ) 周りも全てコンテナ化。 後はroot権限を必要とするような環境構築を⾏わない。hosts 書き換えなどはOpsも担当するメン バーにとってはかなり危険な⾏為。環境毎の設定の⽤意や、DockerのNetwork aliasにてコンテナ、 およびdocker networkに閉じられたネットワーク空間で安全に開発することができる。
21 開発環境 インストール・設定が必要なものは最⼩限に。 OS依存部分はOSのUpgradeによって動かなくなることも度々ある。 また、DevOpsとして⾃⾝のネットワーク環境に変更を加えてしまうもの(/etc/hostsの書き換えなど) は、かなり危険。 コンテナ環境、およびコンテナのNetwork (+alias)に閉じられた空間で開発した⽅が安全。 ホストOSに依存するものは原則Lima +
Docker + VSCodeのみ。Golangなどはインストールしていな い。
22 今後 30分でセットアップ完了に。 新規参画メンバーやPC交換時、セットアップ作業が無いと⾔えるほど楽な状態にしたい。 Office 365 ( like Google workspace)のように、全てWebで完結する世界を⽬指す。
運⽤環境 • まだ⾃分たちの要件に合うようなツールは⾒つからず・・・。 開発環境 • GitHub Enterprise + Codespaces Enterprise Cloudのみ。GitHub Enterprise未対応なので利⽤できず • Gitpod Dedicated ( Self Hosted ) • まだearly access。要アーキテクチャ確認
None