Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
多数のプロダクトを開発・運用するためのツール環境
Search
Hiroki Matsumoto
March 17, 2023
Technology
210
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
270
CI/CD環境としてGitHub Actionsを選んだ理由
hirokimatsumoto
0
260
初めてのPSI試験 with Vault Associate
hirokimatsumoto
0
280
デプロイメント手法を選択する/Decide the way of deployment
hirokimatsumoto
2
1.1k
Podライフサイクルを体験する/ux-with-pod-lifecycle
hirokimatsumoto
1
600
Effective Container with VSCode Remote Container
hirokimatsumoto
0
190
GKE+Argo workflow
hirokimatsumoto
1
620
Ansibleをやろうと思ったきっかけ/The-reason-why-I-want-to-learn-Ansible
hirokimatsumoto
0
130
GraalVM Native Imageが 見せた未来/graalvm-native-image showed the future
hirokimatsumoto
2
560
Other Decks in Technology
See All in Technology
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
2
350
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
230
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
18
14k
IR Today: Theory, Practice, and Agents
dtunkelang
0
310
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
670
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
110
AWS FinOps Agent 結局何が得意なの?
siromi
0
230
Amazon Bedrock Agents ClassicからAmazon Bedrock AgentCoreへ移行した際、ガードレール設定が2箇所に割れた話
matsunobu
0
170
【Findyテック文化祭ワークショップ】新卒エンジニア&採用担当と作る、 なりたい姿と今やるべき一歩
dip_tech
PRO
0
150
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
150
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
510
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
210
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
2
11k
What's in a price? How to price your products and services
michaelherold
247
13k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
Art, The Web, and Tiny UX
lynnandtonic
304
22k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
290
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
960
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
450
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
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