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
rakusmeetup-number-4-operation
Search
mekka
August 28, 2019
Business
1
580
rakusmeetup-number-4-operation
サービスの成長によって、組織が大きくなると様々な問題が発生します。
運用の課題に対して、どのように改善し、安定した運用ができるようになったかお話します。
mekka
August 28, 2019
Tweet
Share
More Decks by mekka
See All by mekka
ArgoCDによるGitOps導入 / ArgoCD GitOps
chmikata
0
31
KEDAで始めるイベント駆動システム #k8snovice / keda-tutorial
chmikata
1
310
新サービス立ち上げに向けたCI/CD環境の構築
chmikata
0
2.2k
rakusmeetup-number-4-infrastructure
chmikata
0
500
Other Decks in Business
See All in Business
(5枚)KPIマネジメントにおけるPDCAサイクルの全体像
nyattx
PRO
1
1.4k
NAGANO STARTUP STUDIO_startupclub_introduction
1romatsuhisa
0
650
パーソルクロステクノロジー_GS統括本部_SSOL統括本部_紹介資料
pptssol
0
17k
(6枚)社会人に最適な超効率的な練習のやり方「分解統合練習」徹底解説
nyattx
PRO
3
190
オレンジスピリッツ 会社説明資料/Introduction
orangespirits
0
13k
払いすぎていませんか?AWSコスト最適化へのはじめの一歩
o2mami
1
1.3k
タケウチグループRecruit
takeuchigroup
0
170
クラスメソッド_会社紹介資料_202407 / introduction to classmethod for engineers
classmethod_jinji
1
1.3k
相続チェックリスト
wf714201
0
270
問題を明確にする方法 / How To Clarify The Problem
tbpgr
1
280
(3枚)営業のためのマーケティングマネジメントの全体像(コスト検証)
nyattx
PRO
2
1.2k
FAST COMPANY DECK
fastinc
0
340
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Debugging Ruby Performance
tmm1
71
11k
Making Projects Easy
brettharned
111
5.7k
Into the Great Unknown - MozCon
thekraken
20
1.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
79
5.1k
Building Flexible Design Systems
yeseniaperezcruz
323
37k
A Philosophy of Restraint
colly
200
16k
The Invisible Customer
myddelton
117
13k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
224
21k
The Illustrated Children's Guide to Kubernetes
chrisshort
39
47k
Building Adaptive Systems
keathley
34
2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
17
1.5k
Transcript
#RAKUSMeetup ©2019 RAKUS Co., Ltd. ©2019 RAKUS Co., Ltd. 安定した運用ができるまで
株式会社ラクス 楽楽精算運用担当 見形親久
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 自己紹介 • 見形 親久(みかた ちかひさ)
楽楽精算のサービス運用を担当 • 1981年栃木県生まれ、37歳 2004~2015年:複数の会社で受託開発を経験。 2015年:ラクス入社、楽楽精算の運用チームを立ち上げ。 • 趣味はランニング/サウナ/お酒/ネットゲーム
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 本日お話する内容 サービスの成長によって、組織が大きくなると 様々な問題が発生します。 運用の課題に対して、どのように改善し、 安定した運用ができるようになったかお話します。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 製品紹介 楽楽精算の紹介
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 楽楽精算の紹介 経費・交通費・出張費・旅費・交際費など、お金にかかわる全ての処理を 一元管理できる クラウド型の交通費・経費精算システムです。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用の課題 開発速度を維持すると運用作業の時間が捻出できない・・・
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用の時間が取れない •顧客からの問合せ •社内のシステムの問合せ •機能リリースの準備 •不具合の対応
#RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門からの声 •問合せが放置される •リリース日が決まらない •不具合が放置される •etc・・・何も決まらない
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームの立ち上げ 運用作業を一手に対応するチームを作り、問題解決を図る
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームの方針 •運用の対応を最優先とする •他部署とのやり取りは運用チームを窓口とする •速度を優先するため属人化を許容する
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームの担当作業 •顧客問合せの対応 →CS部門からの技術的な質問への回答。 •障害/運用トラブルの対応 →対応方針の策定、及び、関係部署のコントロール。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームの担当作業 •リリース作業の対応 →スケジュールの策定、進捗管理、リリース作業の実施。 •その他の個別対応案件 →他部署からの相談など、不定形な問題への対応。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームを立ち上げた結果 とりあえず運用が回る状態にはなった。 が・・・属人的な状態からは脱却できていない。 日々の作業に追われ、だましだましの運用が続く。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 数年後 隠れていた問題が顕著化してきた・・・
#RAKUSMeetup ©2019 RAKUS Co., Ltd. サービスと組織の成長 •サービス関係者は数倍に増加する •飛び交う情報量が膨大になる •人が増えて組織が複雑になる •人事異動などで人が入れ替わる
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 開発部内はどうなったか • チーム同士が疎遠になる →チームが大きくなり、コミュニケーションが減少。 他チームに無関心になる。(トラブルは運用にお任せ・・・の空気
• スキルにバラツキが出る →若いメンバーが増えたが、スキル/経験が不足しており、 対応レベルを一定にするのが難しくなった。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門と開発はどうなったか • チーム同士が疎遠になる →チームが大きくなったことで、コミュニケーションが減少。 話しかけづらい空気になる。
• 人事異動の影響が出る →開発窓口のメンバーが異動になる。 後任の担当は経験が浅く、話がまとまらない。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門からの声 •誰に相談すればよいか分からない •情報がどこにあるか分からない •障害の影響範囲が分からない •etc・・・ルールが不明瞭でよく分からない
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 障害事例の紹介 実際に発生した障害と問題点を見ていく
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによるサービス停止 PostgreSQLの継承で複数の環境を跨いで データを管理する環境を構築していた。 作業中の停止時間を短縮するため、可能な限りオンラインで 作業を進めたのが裏目に出て、内部でシーケンスの重複が発生。
該当の環境のサービスが停止した。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによるサービス停止 元環境(子) sequence-A backup バック
アップ 複製 継 承 複製2(子) sequence-A 親側のシーケンスを参照するよう設定していた。 そのため、バックアップから複製した タイミングのシーケンス番号に戻ってしまった 複製1(親) sequence-A 複製
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによるサービス停止 【原因】 オンライン状態で作業をする場合、バックアップ時点と データがずれる可能性を考慮できていなかった。 【反省点】
メンバー間のレビューでは気づかなかったが、開発/運用の リーダー層がチェックしていれば気づけていた・・・
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによる本番設定の巻き戻り バックアップからデータを復元するため、 影響範囲の洗出しを行っていた。 ◯◯機能の設定有無で判断するため、CS部門に確認していたが、 認識に齟齬があったことで、設定済みの顧客のデータも
復元してしまい、設定内容が初期化されてしまった。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによる本番設定の巻き戻り 問題のやりとり データの復元作業でXX社様に影響がないか確認したいのですが、 お客様は◯◯機能って利用されていますか?(開発) →予定はありますが、利用開始前です。(CS部門)
「利用開始前 = まだ利用していない = 設定していない」という 先入観が働き、そのまま作業を実施してしまった。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによる本番設定の巻き戻り 【原因】 説明が不足しており、CS部門側に正しく状況が伝わっていなかった。 また、口頭のやり取りのため、第三者のチェックもできていなかった。 【反省点】
前任者は知見が豊富だったため、この内容でも「設定が初期化される!」 と検知できていたが、それは過度の期待でそこに甘えていた・・・
#RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 運用チームにてデータ連携システムの バックアップ機能の追加を行っていた。 運用チームの改修の裏側で開発チームも 別の修正行っていたことを把握しておらず、
リリース時にデグレード、機能停止となってしまった。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 master 運用 開発 Mergeは??
#RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 master 運用 開発 SVNからの移行を並行していた
ので、初Pushだった・・・ SVN
#RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 【原因】 SVNの最新コードをGitへ移行、その後、branchを作成した上で Pushしていれば問題は回避出来ていた。 【反省点】
開発/運用チームそれぞれが、お互いの作業内容を理解していれば、 Git移行を並行していたとしても気がついていた・・・
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題の分析と対策 2019年に入り現状の品質ではまずい・・・となり、 2018年のトラブルを振返って対策を検討した
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 開発部門内でのコミュニケーション不足 • 開発/運用チーム間の情報共有が出来ていない •
コミュニケーション不足を認識し、 情報共有が円滑になるよう日次のMTGを設けた • 十分なレビュー体制が構築できていない • 開発/運用チーム双方の視点で確認できるよう、 クロスレビューを実施するルールを設けた
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 CS部門とのコミュケーション不足 • お互いに距離感があり、協力する体制になっていない •
お互いの不満や要望を正直にぶつけ、 協力していくための体制(対応チーム)を構築 • CS部門へ定期的に課題をヒアリング、 資料の作成、ツールの構築などを協力 • 気軽にやり取りが出来るようチャットルームを開設
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 特定個人への依存した運用 • 障害対応が個人スキルに依存している •
障害発生時の対応フローを作成、 開発/CS部門で合意して標準ルールに定めた • Redmineに障害管理の仕組みを構築、 情報を集約、進捗状況も把握出来るようにした
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 振返りができていない • 根本対策が打てておらず、類似の問題を起こしている •
定期的な振返りのMTGを設置、障害があった場合は 各チームのリーダーにて振返りを実施するルールを設けた • 開発内で完結しない問題については、 関係部署を招集して振返りを実施するルールを設けた
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 対策の結果 トラブルの件数、他部署評価はどう変わったか
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 2017~2019年の障害件数 重大な障害の件数は「18件 →1件」に 障害件数 2017年度
2018年度 2019年度 Sランク 2 0 0 Aランク 16 6 1
#RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門からの評価 •窓口が明確になり、話がスムーズになった •Redmineで聞かなくても状況が分かる •必要な情報は資料を見れば分かる •話を聞きやすい、聞けば説明してくれる
#RAKUSMeetup ©2019 RAKUS Co., Ltd. 開発チームからの評価 •開発に集中できる •他部署への調整がスムーズ •運用の課題が可視化されて分かりやすい •課題が明確なので協力できる
#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ 改善したポイントのまとめ
#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ •コミニュケーション サービスは皆で作るもの、協力する必要がある。 そのために普段のコミュニケーションが重要であり、 それが出来る組織、雰囲気作りが大切。
これが出来ていないと他人事になってしまう。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ •ルールの明確化 立ち上げは属人的でも良いが、いつか破綻する日が来る。 過剰にせず、最低限必要な品質を定めて、 誰でもできるルール作りを目指す。
作ったルールは確実に見えるところに掲げ、 全員の共通認識とすることが大切。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ •振り返り 障害対応などは、スピード勝負になりがちなので、 喉元を過ぎるとつい忘れがちになる。 確実に記録を残し、定期的な振返りの場を
設けることで改善を進める。
#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ 運用は人間が多く関わってくるため、 プログラムの様にtrue/falseとはならない。 関係づくりから始め、協力して1つずつ、 問題を改善することが安定への近道。