こんにちは、アスクルの いのだい と申します。
私はLOHACOの運用エンジニアチームのマネジャーをやっています。
「運用」と聞くと、どんなことを思い浮かべるでしょうか。
この言葉の解釈は企業や現場によってさまざまだと思います。
当エントリーでは、LOHACOの運営に携わる運用エンジニアの熱い思いと葛藤をつづります。
簡単にチームのプロフィールと業務内容をご紹介
運用エンジニアチームには4名(以下、メンバー)が在籍しております。
それぞれの畑で運用経験を積み、いろいろな思いを抱きながら縁あって同じチームで働くことになりました。
チームは本番環境に変更を加える権限を持ち、サービスの安定した稼働を維持しつつ、
アプリケーションリリースを始めとした本番環境への更新をより安全に行うことを担保します。
システムで発生するアラートの監視を行っており、致命的なエラーが発生した場合は業務時間外にテレワークで対応を行うことがあります。
また、システム面だけでなくLOHACOのサービス運営業務の改善にも携わっています。
自分たちでプログラムを書いて運用ツールを作ることもあります。
以上は業務のうちの一部です。一言で言うと、いろいろやる人です。
では、そんなメンバーは運用エンジニアという仕事に対してどのような考えを持っているのでしょうか??
マネジャーとしての反省と奮起
これまでメンバー全員で腰を据えて会話する機会を作らず、チーム立ち上げから1年半が過ぎようとしていました。
立ち上げ当初からマネジャーである私は大いに反省しました。
我々のチームは何をすべきなのか、目指すものは何なのか。
そもそも、我々が運用エンジニアで居る意味は何なのか。
そういった思いをメンバー同士でぶつけ合い、チームの軸を作っていこうと考えました。
いま大事なのは、メンバーが抱く運用エンジニアに対する思いを言葉に表して、十分に議論を交わすことです。
通常行っているような30分や1時間といったミーティングでは、議論が深まる前に終わってしまいます。
かといって、オフィスに居るとまとまった時間を取ることが難しい。
そこで・・・
思い切って外に出て、ひたすら語り合おうじゃないか!!
合宿するぞ
2018年12月某日、お昼過ぎにオフィスを飛び出して会議スペースにこもりました。
こんな場所。
当日の流れです。
13:00 入室。
~数分 軽くアイスブレイク。
~18:00 休憩を1回挟み、ひたすら議論。
事前に用意したアジェンダは、こんな内容です。
①運用エンジニアは何のために居るか。皆が思う運用エンジニアとは??
②運用チームとして達成したいことは何か??
③運用チームの理想の姿とは??
④運用チームに必要なスキルセットは??
結果、大部分の時間を①に費やしました。
ここから先は話し合った内容を(ほぼ)改変なしでお届けします。
読んでいただいた皆様に少しでも運用エンジニアについて知る・考えるきっかけになればうれしいです。
それではどうぞ。
①運用エンジニアは何のために居るか。皆が思う運用エンジニアとは??
運用エンジニアとは何たるか
システム運用・保守について一般的に以下のように言われている。
運用:システム・サービスを停止させない
保守:予測できないできごとに対処することや不具合対応
※諸説あり
LOHACOの現場では 運用=なんでもする人 のイメージ。
オペレータとエンジニアをはっきり分けた方が良いのでは??
オペレータ:作業を確実に行う人。
エンジニア:手順を作成したり、また無駄な作業を減らす対策をしたり。ツール開発のコーディングもする。
運用エンジニアとは、浅く広く、一気通貫で見られる人。
コンポーネント間の影響がわかる人。
入社する時、運用チームの仕事に
・監視
・障害対応
・環境セットアップ
が入っていると思っていた。 ※インフラは別チームが担当しており、セットアップは実施しない
他チーム(※)は、運用チームとインフラチームの分担が見えてない。 ※企画や開発のメンバー
ツール自動化などのネタは、きちんとゴールを設定して時間を割いてやるべき。
今はなんとなく空き時間にやっている。
bynameでアサインされて、チームとしての動きができていないのでは??
プロジェクトに入るのはいいが、チームとしての動きをどうすればいいかわからない。
楽しいことは??
運用改善をすること。
パフォーマンスについての相談窓口になること。
手順を自動化すること。
エクセルを使わずに済むようにすること。
運用エンジニアのミッションは??
運用作業を減らしていく。例えば消防士。仕事がなくなることが究極。
運用作業を整備すること。また、小さい変化に気づくことができること。
明確なルールを決めて、サービス内外の手順化・効率化を図ること。
最後のとりでであり、最終チェックをできること。時間を取ってでももっとしっかりやるべき。
運用チームが抜けると何が起きる??
手作業が多いので、開発の時間が増す。
管理ツール(※)に機能を載せないとまずいことに気づく。 ※社内向けの管理ツール
システムアラートが放置される。
バッチエラーのケア。知識がないので困る。
DBが死ぬ(!) ※例 データやトランザクションの増大によってデータベースが高負荷となり、最悪ダウンすることを指す
②運用チームとして達成したいことは何か??
運用チームがやらなきゃ進まないものを共通目標にして、チームとしてやっていきたい。
サービスの裏側を担保するのが運用チームでは。
③運用チームの理想の姿とは??
監視で張り付く&チューニングをしまくる。
運用作業が消えること。
何かが起こった時にすぐ対応できる。
④運用チームに必要なスキルセットは??
ITスキル
→サーバーを立ててセットアップしてアプリケーションを動かせるレベルは最低限ほしい
→なおよし:インフラ、アプリケーション開発
IT以外のスキル
→やりたいことが明確で、与えなくても勝手に進めていく
→裏側をよくすることにフォーカスする視点を持っている
Linux・DB・ネットワーク・インフラ → エンジニアとして当たり前の知識を持っておく必要がある
運用だからこれ、という必要スキルは「ない」 ※しかし後日談で経験が物を言うよね という話になり・・・
今の運用チームにはインフラ知識、Javaなどのアプリケーション開発が足りない。
忙しさをちゃんと分析すると、エンジニアがすべきことが見えてくる??
その他
成果が見えにくい!!!
定性的な観点でも評価してもらえる風土を作りたい。 ※アスクルでは既に定性評価も行っている。
評価のためにあえて成果がわかりやすいプロジェクトに入っている時があった。
事業の目標は運用業務に落とし込みにくい。
フロントエンドはサイトスピードを求められているので評価しやすいし、認知されやすい。
数字に表せない価値がある。例えばシステムがクリーンな状態、健康な状態。
時間やお金に落とし込めない。落とし込んでも微々たるもの。
セキュリティ対策など、むしろコストを上げがち。
合宿をしてみてわかったこと
今回の合宿で、メンバー同士で運用エンジニアに対する思いを共有し議論することができました。
合宿を通して初めてわかったことがあります。それは、メンバー全員が広く社内にフォーカスしていることです。
メンバーから感じられた価値観は以下のようなものがありました。
- サービスの利用者にとっても、運営する関係者にとってもよいサービスであること
- サービスを中から綺麗にすること
- それらをエンジアリングによって解決できること
チームとして理想を追い求めて突き進めるように運営を続けて、やりがいを持って運用エンジニアで居られる環境づくりを目指します。
また動きがあれば記事に書きたいと思います!
駄文が多い中、ここまでお読みいただきありがとうございました。