Slide 1

Slide 1 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. ©2019 RAKUS Co., Ltd. 安定した運用ができるまで 株式会社ラクス 楽楽精算運用担当 見形親久

Slide 2

Slide 2 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 自己紹介 • 見形 親久(みかた ちかひさ) 楽楽精算のサービス運用を担当 • 1981年栃木県生まれ、37歳 2004~2015年:複数の会社で受託開発を経験。 2015年:ラクス入社、楽楽精算の運用チームを立ち上げ。 • 趣味はランニング/サウナ/お酒/ネットゲーム

Slide 3

Slide 3 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 本日お話する内容 サービスの成長によって、組織が大きくなると 様々な問題が発生します。 運用の課題に対して、どのように改善し、 安定した運用ができるようになったかお話します。

Slide 4

Slide 4 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 製品紹介 楽楽精算の紹介

Slide 5

Slide 5 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 楽楽精算の紹介 経費・交通費・出張費・旅費・交際費など、お金にかかわる全ての処理を 一元管理できる クラウド型の交通費・経費精算システムです。

Slide 6

Slide 6 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用の課題 開発速度を維持すると運用作業の時間が捻出できない・・・

Slide 7

Slide 7 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用の時間が取れない •顧客からの問合せ •社内のシステムの問合せ •機能リリースの準備 •不具合の対応

Slide 8

Slide 8 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門からの声 •問合せが放置される •リリース日が決まらない •不具合が放置される •etc・・・何も決まらない

Slide 9

Slide 9 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームの立ち上げ 運用作業を一手に対応するチームを作り、問題解決を図る

Slide 10

Slide 10 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームの方針 •運用の対応を最優先とする •他部署とのやり取りは運用チームを窓口とする •速度を優先するため属人化を許容する

Slide 11

Slide 11 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームの担当作業 •顧客問合せの対応 →CS部門からの技術的な質問への回答。 •障害/運用トラブルの対応 →対応方針の策定、及び、関係部署のコントロール。

Slide 12

Slide 12 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームの担当作業 •リリース作業の対応 →スケジュールの策定、進捗管理、リリース作業の実施。 •その他の個別対応案件 →他部署からの相談など、不定形な問題への対応。

Slide 13

Slide 13 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 運用チームを立ち上げた結果 とりあえず運用が回る状態にはなった。 が・・・属人的な状態からは脱却できていない。 日々の作業に追われ、だましだましの運用が続く。

Slide 14

Slide 14 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 数年後 隠れていた問題が顕著化してきた・・・

Slide 15

Slide 15 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. サービスと組織の成長 •サービス関係者は数倍に増加する •飛び交う情報量が膨大になる •人が増えて組織が複雑になる •人事異動などで人が入れ替わる

Slide 16

Slide 16 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 開発部内はどうなったか • チーム同士が疎遠になる →チームが大きくなり、コミュニケーションが減少。 他チームに無関心になる。(トラブルは運用にお任せ・・・の空気 • スキルにバラツキが出る →若いメンバーが増えたが、スキル/経験が不足しており、 対応レベルを一定にするのが難しくなった。

Slide 17

Slide 17 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門と開発はどうなったか • チーム同士が疎遠になる →チームが大きくなったことで、コミュニケーションが減少。 話しかけづらい空気になる。 • 人事異動の影響が出る →開発窓口のメンバーが異動になる。 後任の担当は経験が浅く、話がまとまらない。

Slide 18

Slide 18 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門からの声 •誰に相談すればよいか分からない •情報がどこにあるか分からない •障害の影響範囲が分からない •etc・・・ルールが不明瞭でよく分からない

Slide 19

Slide 19 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 障害事例の紹介 実際に発生した障害と問題点を見ていく

Slide 20

Slide 20 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによるサービス停止 PostgreSQLの継承で複数の環境を跨いで データを管理する環境を構築していた。 作業中の停止時間を短縮するため、可能な限りオンラインで 作業を進めたのが裏目に出て、内部でシーケンスの重複が発生。 該当の環境のサービスが停止した。

Slide 21

Slide 21 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによるサービス停止 元環境(子) sequence-A backup バック アップ 複製 継 承 複製2(子) sequence-A 親側のシーケンスを参照するよう設定していた。 そのため、バックアップから複製した タイミングのシーケンス番号に戻ってしまった 複製1(親) sequence-A 複製

Slide 22

Slide 22 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによるサービス停止 【原因】 オンライン状態で作業をする場合、バックアップ時点と データがずれる可能性を考慮できていなかった。 【反省点】 メンバー間のレビューでは気づかなかったが、開発/運用の リーダー層がチェックしていれば気づけていた・・・

Slide 23

Slide 23 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによる本番設定の巻き戻り バックアップからデータを復元するため、 影響範囲の洗出しを行っていた。 ◯◯機能の設定有無で判断するため、CS部門に確認していたが、 認識に齟齬があったことで、設定済みの顧客のデータも 復元してしまい、設定内容が初期化されてしまった。

Slide 24

Slide 24 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによる本番設定の巻き戻り 問題のやりとり データの復元作業でXX社様に影響がないか確認したいのですが、 お客様は◯◯機能って利用されていますか?(開発) →予定はありますが、利用開始前です。(CS部門) 「利用開始前 = まだ利用していない = 設定していない」という 先入観が働き、そのまま作業を実施してしまった。

Slide 25

Slide 25 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによる本番設定の巻き戻り 【原因】 説明が不足しており、CS部門側に正しく状況が伝わっていなかった。 また、口頭のやり取りのため、第三者のチェックもできていなかった。 【反省点】 前任者は知見が豊富だったため、この内容でも「設定が初期化される!」 と検知できていたが、それは過度の期待でそこに甘えていた・・・

Slide 26

Slide 26 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 運用チームにてデータ連携システムの バックアップ機能の追加を行っていた。 運用チームの改修の裏側で開発チームも 別の修正行っていたことを把握しておらず、 リリース時にデグレード、機能停止となってしまった。

Slide 27

Slide 27 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 master 運用 開発 Mergeは??

Slide 28

Slide 28 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 master 運用 開発 SVNからの移行を並行していた ので、初Pushだった・・・ SVN

Slide 29

Slide 29 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 【原因】 SVNの最新コードをGitへ移行、その後、branchを作成した上で Pushしていれば問題は回避出来ていた。 【反省点】 開発/運用チームそれぞれが、お互いの作業内容を理解していれば、 Git移行を並行していたとしても気がついていた・・・

Slide 30

Slide 30 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題の分析と対策 2019年に入り現状の品質ではまずい・・・となり、 2018年のトラブルを振返って対策を検討した

Slide 31

Slide 31 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 開発部門内でのコミュニケーション不足 • 開発/運用チーム間の情報共有が出来ていない • コミュニケーション不足を認識し、 情報共有が円滑になるよう日次のMTGを設けた • 十分なレビュー体制が構築できていない • 開発/運用チーム双方の視点で確認できるよう、 クロスレビューを実施するルールを設けた

Slide 32

Slide 32 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 CS部門とのコミュケーション不足 • お互いに距離感があり、協力する体制になっていない • お互いの不満や要望を正直にぶつけ、 協力していくための体制(対応チーム)を構築 • CS部門へ定期的に課題をヒアリング、 資料の作成、ツールの構築などを協力 • 気軽にやり取りが出来るようチャットルームを開設

Slide 33

Slide 33 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 特定個人への依存した運用 • 障害対応が個人スキルに依存している • 障害発生時の対応フローを作成、 開発/CS部門で合意して標準ルールに定めた • Redmineに障害管理の仕組みを構築、 情報を集約、進捗状況も把握出来るようにした

Slide 34

Slide 34 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 振返りができていない • 根本対策が打てておらず、類似の問題を起こしている • 定期的な振返りのMTGを設置、障害があった場合は 各チームのリーダーにて振返りを実施するルールを設けた • 開発内で完結しない問題については、 関係部署を招集して振返りを実施するルールを設けた

Slide 35

Slide 35 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 対策の結果 トラブルの件数、他部署評価はどう変わったか

Slide 36

Slide 36 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 2017~2019年の障害件数 重大な障害の件数は「18件 →1件」に 障害件数 2017年度 2018年度 2019年度 Sランク 2 0 0 Aランク 16 6 1

Slide 37

Slide 37 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門からの評価 •窓口が明確になり、話がスムーズになった •Redmineで聞かなくても状況が分かる •必要な情報は資料を見れば分かる •話を聞きやすい、聞けば説明してくれる

Slide 38

Slide 38 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 開発チームからの評価 •開発に集中できる •他部署への調整がスムーズ •運用の課題が可視化されて分かりやすい •課題が明確なので協力できる

Slide 39

Slide 39 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ 改善したポイントのまとめ

Slide 40

Slide 40 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ •コミニュケーション サービスは皆で作るもの、協力する必要がある。 そのために普段のコミュニケーションが重要であり、 それが出来る組織、雰囲気作りが大切。 これが出来ていないと他人事になってしまう。

Slide 41

Slide 41 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ •ルールの明確化 立ち上げは属人的でも良いが、いつか破綻する日が来る。 過剰にせず、最低限必要な品質を定めて、 誰でもできるルール作りを目指す。 作ったルールは確実に見えるところに掲げ、 全員の共通認識とすることが大切。

Slide 42

Slide 42 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ •振り返り 障害対応などは、スピード勝負になりがちなので、 喉元を過ぎるとつい忘れがちになる。 確実に記録を残し、定期的な振返りの場を 設けることで改善を進める。

Slide 43

Slide 43 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ 運用は人間が多く関わってくるため、 プログラムの様にtrue/falseとはならない。 関係づくりから始め、協力して1つずつ、 問題を改善することが安定への近道。