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
620
rakusmeetup-number-4-operation
サービスの成長によって、組織が大きくなると様々な問題が発生します。
運用の課題に対して、どのように改善し、安定した運用ができるようになったかお話します。
mekka
August 28, 2019
Tweet
Share
More Decks by mekka
See All by mekka
ArgoCDによるGitOps導入 / ArgoCD GitOps
chmikata
0
55
KEDAで始めるイベント駆動システム #k8snovice / keda-tutorial
chmikata
1
330
新サービス立ち上げに向けたCI/CD環境の構築
chmikata
0
2.3k
rakusmeetup-number-4-infrastructure
chmikata
0
550
Other Decks in Business
See All in Business
Theoria technologies:About Us
theoriatec2024
1
2.1k
バイセルのものさし(Ver. 1.1)
buyselltechnologies
0
200
la belle vie Inc. Company Introduction for Engineers
recruiting
0
820
株式会社Beer and Tech/HitoHana(ひとはな) 採用資料 2024.11
beerandtech_recruiter
1
580
アルプ株式会社/会社紹介資料
alpinc
0
470
ARI会社説明
arisaiyou
0
4.3k
akippa株式会社 - 会社紹介資料
akippa
3
58k
メタバースを活用した観光PR
tokyo_metropolitan_gov_digital_hr
0
320
BrainPad_AC_202411
brainpadpr
2
9.1k
Nstock 採用資料 / We are hiring
nstock
26
250k
コーチ・エィ_会社紹介資料
coacha
1
990
Backlogで1on1を進化させる!メンバーの成長を促すアプローチ
kohsakusaito
PRO
2
230
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Fireside Chat
paigeccino
34
3k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
For a Future-Friendly Web
brad_frost
175
9.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
A better future with KSS
kneath
238
17k
Bash Introduction
62gerente
608
210k
A Modern Web Designer's Workflow
chriscoyier
693
190k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Facilitating Awesome Meetings
lara
50
6.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
The Pragmatic Product Professional
lauravandoore
31
6.3k
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つずつ、 問題を改善することが安定への近道。