rakusmeetup-number-4-operation

Af9db90220551fb78d294987b6296fbf?s=47 chmikata
August 28, 2019

 rakusmeetup-number-4-operation

サービスの成長によって、組織が大きくなると様々な問題が発生します。
運用の課題に対して、どのように改善し、安定した運用ができるようになったかお話します。

Af9db90220551fb78d294987b6296fbf?s=128

chmikata

August 28, 2019
Tweet

Transcript

  1. #RAKUSMeetup ©2019 RAKUS Co., Ltd. ©2019 RAKUS Co., Ltd. 安定した運用ができるまで

    株式会社ラクス 楽楽精算運用担当 見形親久
  2. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 自己紹介 • 見形 親久(みかた ちかひさ)

    楽楽精算のサービス運用を担当 • 1981年栃木県生まれ、37歳 2004~2015年:複数の会社で受託開発を経験。 2015年:ラクス入社、楽楽精算の運用チームを立ち上げ。 • 趣味はランニング/サウナ/お酒/ネットゲーム
  3. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 本日お話する内容 サービスの成長によって、組織が大きくなると 様々な問題が発生します。 運用の課題に対して、どのように改善し、 安定した運用ができるようになったかお話します。

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

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

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

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

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

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

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

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

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

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

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

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

  16. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 開発部内はどうなったか • チーム同士が疎遠になる →チームが大きくなり、コミュニケーションが減少。 他チームに無関心になる。(トラブルは運用にお任せ・・・の空気

    • スキルにバラツキが出る →若いメンバーが増えたが、スキル/経験が不足しており、 対応レベルを一定にするのが難しくなった。
  17. #RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門と開発はどうなったか • チーム同士が疎遠になる →チームが大きくなったことで、コミュニケーションが減少。 話しかけづらい空気になる。

    • 人事異動の影響が出る →開発窓口のメンバーが異動になる。 後任の担当は経験が浅く、話がまとまらない。
  18. #RAKUSMeetup ©2019 RAKUS Co., Ltd. CS部門からの声 •誰に相談すればよいか分からない •情報がどこにあるか分からない •障害の影響範囲が分からない •etc・・・ルールが不明瞭でよく分からない

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

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

    該当の環境のサービスが停止した。
  21. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによるサービス停止 元環境(子) sequence-A backup バック

    アップ 複製 継 承 複製2(子) sequence-A 親側のシーケンスを参照するよう設定していた。 そのため、バックアップから複製した タイミングのシーケンス番号に戻ってしまった 複製1(親) sequence-A 複製
  22. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによるサービス停止 【原因】 オンライン状態で作業をする場合、バックアップ時点と データがずれる可能性を考慮できていなかった。 【反省点】

    メンバー間のレビューでは気づかなかったが、開発/運用の リーダー層がチェックしていれば気づけていた・・・
  23. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによる本番設定の巻き戻り バックアップからデータを復元するため、 影響範囲の洗出しを行っていた。 ◯◯機能の設定有無で判断するため、CS部門に確認していたが、 認識に齟齬があったことで、設定済みの顧客のデータも

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

    「利用開始前 = まだ利用していない = 設定していない」という 先入観が働き、そのまま作業を実施してしまった。
  25. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 作業ミスによる本番設定の巻き戻り 【原因】 説明が不足しており、CS部門側に正しく状況が伝わっていなかった。 また、口頭のやり取りのため、第三者のチェックもできていなかった。 【反省点】

    前任者は知見が豊富だったため、この内容でも「設定が初期化される!」 と検知できていたが、それは過度の期待でそこに甘えていた・・・
  26. #RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 運用チームにてデータ連携システムの バックアップ機能の追加を行っていた。 運用チームの改修の裏側で開発チームも 別の修正行っていたことを把握しておらず、

    リリース時にデグレード、機能停止となってしまった。
  27. #RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 master 運用 開発 Mergeは??

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

    ので、初Pushだった・・・ SVN
  29. #RAKUSMeetup ©2019 RAKUS Co., Ltd. リリース作業ミスによる機能停止 【原因】 SVNの最新コードをGitへ移行、その後、branchを作成した上で Pushしていれば問題は回避出来ていた。 【反省点】

    開発/運用チームそれぞれが、お互いの作業内容を理解していれば、 Git移行を並行していたとしても気がついていた・・・
  30. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題の分析と対策 2019年に入り現状の品質ではまずい・・・となり、 2018年のトラブルを振返って対策を検討した

  31. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 開発部門内でのコミュニケーション不足 • 開発/運用チーム間の情報共有が出来ていない •

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

    お互いの不満や要望を正直にぶつけ、 協力していくための体制(対応チーム)を構築 • CS部門へ定期的に課題をヒアリング、 資料の作成、ツールの構築などを協力 • 気軽にやり取りが出来るようチャットルームを開設
  33. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 特定個人への依存した運用 • 障害対応が個人スキルに依存している •

    障害発生時の対応フローを作成、 開発/CS部門で合意して標準ルールに定めた • Redmineに障害管理の仕組みを構築、 情報を集約、進捗状況も把握出来るようにした
  34. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 問題と対策 振返りができていない • 根本対策が打てておらず、類似の問題を起こしている •

    定期的な振返りのMTGを設置、障害があった場合は 各チームのリーダーにて振返りを実施するルールを設けた • 開発内で完結しない問題については、 関係部署を招集して振返りを実施するルールを設けた
  35. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 対策の結果 トラブルの件数、他部署評価はどう変わったか

  36. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 2017~2019年の障害件数 重大な障害の件数は「18件 →1件」に 障害件数 2017年度

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

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

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

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

    これが出来ていないと他人事になってしまう。
  41. #RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ •ルールの明確化 立ち上げは属人的でも良いが、いつか破綻する日が来る。 過剰にせず、最低限必要な品質を定めて、 誰でもできるルール作りを目指す。

    作ったルールは確実に見えるところに掲げ、 全員の共通認識とすることが大切。
  42. #RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ •振り返り 障害対応などは、スピード勝負になりがちなので、 喉元を過ぎるとつい忘れがちになる。 確実に記録を残し、定期的な振返りの場を

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