$30 off During Our Annual Pro Sale. View Details »

rakusmeetup-number-4-operation

mekka
August 28, 2019

 rakusmeetup-number-4-operation

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

mekka

August 28, 2019
Tweet

More Decks by mekka

Other Decks in Business

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. #RAKUSMeetup
    ©2019 RAKUS Co., Ltd.
    作業ミスによるサービス停止
    元環境(子)
    sequence-A backup
    バック
    アップ
    複製


    複製2(子)
    sequence-A
    親側のシーケンスを参照するよう設定していた。
    そのため、バックアップから複製した
    タイミングのシーケンス番号に戻ってしまった
    複製1(親)
    sequence-A
    複製

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide