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
630
rakusmeetup-number-4-operation
サービスの成長によって、組織が大きくなると様々な問題が発生します。
運用の課題に対して、どのように改善し、安定した運用ができるようになったかお話します。
mekka
August 28, 2019
Tweet
Share
More Decks by mekka
See All by mekka
ArgoCDによるGitOps導入 / ArgoCD GitOps
chmikata
0
70
KEDAで始めるイベント駆動システム #k8snovice / keda-tutorial
chmikata
1
340
新サービス立ち上げに向けたCI/CD環境の構築
chmikata
0
2.4k
rakusmeetup-number-4-infrastructure
chmikata
0
560
Other Decks in Business
See All in Business
CData 製品を使って不動産API を可視化!実際に注文住宅を買ってみるまでの話
cdataj
2
160
コーポレートストーリー(新規投資家様向け会社説明資料)
gatechnologies
1
9.5k
_RINGの会_令和の時代の保険募集実務とプロ代理店の対応.pdf
hakusansai
0
150
P2B Haus法人サポータープランのご提案
sotarok
1
410
HireRoo Culture Deck(日本語)
kkosukeee
2
27k
デジタルツールを活用した収用委員会運営プロジェクト
tokyo_metropolitan_gov_digital_hr
0
280
Japan Open Chain ホワイトペーパー
gugroup
0
320
Go See!で見つけるプロダクト開発の突破口とその実践法
ta0o_o0821
0
170
なぜ施策優先度を意思決定しなければならないのか? 経験から得た要因と対策
mkitahara01985
2
230
サスメド株式会社 Culture Deck
susmed
0
37k
re:Infrastructure_for the NextGen AI/ML and Beyond
ichichi
0
160
Works Human Intelligence
whisaiyo
1
79k
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
Facilitating Awesome Meetings
lara
50
6.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
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つずつ、 問題を改善することが安定への近道。