iOSエンジニアの西川です! kurashiru(クラシル)のiOSアプリの開発を担当しています。
前回のdely engineering blogで紹介させていただいたAPOLLO計画にアストロノート一号として選ばれた僕がこの計画の感想を書いていきたいと思います。
未来のSREを最速で育てる!dely流SRE育成術、APOLLO計画の紹介
APOLLO計画ではSRE候補者のことをアストロノートと呼んでいます。
アストロノート1号への道のり
私のdelyでの業務は冒頭でも述べた通りkurashiru(クラシル)のiOSアプリ開発です。 しかし、delyで日々過ごしているうちにkurashiru(クラシル)の大規模トラフィックを捌くSREの業務に興味がでてきました。 そこでSREの業務に興味があることを伝え、今回のこのAPOLLO計画に参加することになりました。
APOLLO計画
1.インフラ構築
APOLLO計画を受ける前の僕のスキルセットはアプリAPI用のVPSサーバーを構築した程度でAWSについてはほとんど知識がない状態でした。
なので事前にAWSの用語の知識を簡単にまとめてくれたものを渡してもらいそれを頭にいれて本番にいどみました。そのおかげでインフラ構築自体はスムーズに進んでいきました。
具体的にはElastic Load Balancerの作成、EC2インスタンスの作成、セキュリティグループやAuto Scalingグループの作成です。
しかし、それぞれがどのように動作していてどういう役割をしているのかを一人で理解することは厳しかったのでその都度質問していました。質問するとすぐに的確な答えがかえってくるのでその場で理解することができました。
またどこまでが正常に動いていてどこが原因で動いていないかを確認するためにNginxのアクセスログやFluentdのエラーログの見方などを最後に教わりました。iOS開発でもデバッグのためにログをみますが、それとは違い”こうゆうところを見るのか〜”ととても新鮮で学ぶことが多かったです。
2.障害対応
いよいよ本番です。課題内容の簡単な説明を受け障害対応スタートです。
今回の障害は
EC2インスタンス内での変更作業によって、正常稼働しないAMIがリリースされました。障害から復旧させ、原因の追求と対応をしてください。
という内容のものでした。
障害対応中はslackで分報チャンネルを作ってそこに今どんな作業をやっていて、どんなことを考えながらその作業をしているのかを書いていきます。これをやることでどの部分で詰まっているかを伝えることができるとともに障害のログを残せるのでもし同じことが起きたときにすぐ対処ができます。
まずはどこにボトルネックがあるのかの検証を行っていきました。具体的にはnginxのアクセスログをtailしながらcurlでリクエストを送ってみてどうなるかや、td-agentのログを追ってみたりしていました。実際にやってみるとエラーをみつけることはできるもののそれがどんな要因でエラーになっているのかをなかなか突き止めることができません。ヒントをもらいながら試行錯誤して動いていない部分を特定していきます。思っていた以上に大変で時間だけがどんどん過ぎていき焦りながら必死でやっていました。結局すべての問題を解決することはできずに終わりましたが、今起きている障害にどういうフローで対処していったらいいのかを実際に体験できたのは本当に貴重な体験になりました。
反省としては今起きている障害がどんな障害かを理解するために時間を使い過ぎたことです。 優先させるべきはいち早く正常な状態に回復させ、被害の影響を最小限に抑えることでした。
3.振り返り
今回このAPOLLO計画に参加して学んだことは以下の2つです。
- AWSのEC2インスタンスやELBの仕組みが今までより明確になった
- 障害が起きたときのデバッグの仕方を実際に体験でき、障害が起きそうな部分、ボトルネックになりそうな部分を見分ける思考が少し身についた
このAPOLLO計画を繰り返すことによってSREとしてスキルを最速で身につけることができる可能性を感じました。
delyではAPOLLO計画でSREになってみたいというエンジニアの方、我こそはという最強SREを募集しています。 是非Wantedlyから応募してください!!