SREチームの事例紹介こんにちは、SREチームの千代田です。今回はくらしのマーケットにおけるSREチームの事例を紹介します。SREチームについてみんなのマーケットでは今年、SREチームを新設しました。Opsの対立を避け、高速なサイクルでデプロイを安全に行えるようにしたいオペレーションを自動化し、サービスが拡大しても少人数で回せるようにしたい本番環境だけでなく、開発速度向上のために開発環境の改善を進めたい障害対応できるポジションを増やしたいもともと一部のエンジニアとCTOが対応するといった形で、チームとしての体制が組まれておらず属人化が発生している情報の共有方法に問題があり、対応したエンジニアしか詳細を知らない誰かが入れたサービスだけど、それを入れた詳しい人がもういない昔誰かがやったことなのにそのときの手順が存在しないなどといったものが主な要因として挙げられます。具体的なこれらの改善策についてはこの後紹介をします。上記問題点の解決と、「開発業務を行いつつ、運用の自動化」を置きました。計測出来ない値があるなど機能的に足りていないものを補うために、PrometheusとGrafanaを導入しました。これにより、サーバメトリクスだけでなく、アプリケーションやミドルウェアのメトリクスも取得ができるようになり、監視対象の幅が広がりました。複数の要因によってエラーが出た際に、エラー箇所の切り分けが容易になりました。障害があった際に、ポストモーテムを書いてGitHubへコミットしたうえで、そのURLをSlackで共有するようにしました。全エンジニアは障害がなぜ起きたのか、どのようにして解決されたのか把握できるようになりました。失敗から学ぶことにより再発の防止と検知(アラートを導入するなど)にも役立っています。私が入社した際に経験をしたのですが、開発環境の構築に2日ほど時間がかかりました。原因としては、ドキュメントがあまり更新されておらず足りない手順が存在した為でした。その為、思い切ってDockerを導入してローカルの開発ではコンテナを使うようにしました。新しく作成するマイクロサービスがDockerを利用するといった理由です。結果として、導入に成功し、以前より簡単に開発が行えるようになりました。権限周りの整備くらしのマーケットではクラウドプロバイダとしてAWSを主に利用しています。リソースへのアクセスを安全に制御するためのウェブサービスが提供されています。Ruleが特に決まっておらず、作る人によってバラバラになっていたものをルールを決めて統一しました。必要に応じてリソースレベルやアクションに対してのみ許可をするなど、権限の見直しを実施しました。エンジニアによって権限が異なった状態であったものをグループ単位に分割・権限を集約するなどして、エンジニアによって権限が異なるといった状態を防ぐようにしました。これにより、新しくエンジニアが入った際にグループへと追加するだけでよくなり、すぐさま開発へ参加できるようになりました。データベースの移行くらしのマーケットでは、データベースにPostgresを利用しています。RDSを利用していましたが、Auroraにするとパフォーマンスが最大で5倍出るとのことでしたので、移行することを決意しました。9.6へのバージョンアップも移行と同時に行いました。これによってパフォーマンスが向上し、さらにはパフォーマンスインサイトが利用できるようになり、クエリの可視化が行えるようになりました。一部参照系クエリを読み込みエンドポイントに逃すことにより、さらなる高速化も行えました。静的なコンテンツを配信する上でくらしのマーケットのサーバへのリクエストの負荷を減らす目的として、CDNを導入しました。さまざまなCDNサービスがありますが、今回はAWSのCloudFrontを利用しました。Reportを利用し、BytesFromMissesを用いてファイルサイズが大きいものを容易に判別するといったことが可能になりました。当初の目的であるリクエストの負荷を減らすことにも成功しました。コンテナでの開発ツール作成くらしのマーケットではマイクロサービスアーキテクチャを採用しています。新しいマイクロサービスを作る際にコンテナで実行したいといった話があり、実際にコンテナでの開発基盤を構築することにしました。学習コストの高さや、運用面での不安をカバーしきれなかった為、AWSのECSを利用することにしました。ECSを利用する上で、ネックとなったのが、既存のマイクロサービスとの結合部分でした。tako環境)を利用しています。ブランチ単位にすべてのマイクロサービス/データベース/キャッシュ...etcが存在するのですが、ECS側とのルーティングをどのように実装するかいろいろと考えた結果、くらしのマーケットに特化したデプロイツールが必要な為開発を行うことにしました。AWSのALBのホスト名でのルーティング機能を利用することを前提に、TargetGroupの作成やRuleの追加もマネージされたデプロイツールをPythonで実装しました。既存の開発環境へデプロイする際に利用されるAnsibleからでも実行しやすいようにコンテナでラップして使えるようにしました。ログ基盤の改善くらしのマーケットではログ基盤としてELKスタックを利用しています。構築されてから時間が経っている為、ログの取りこぼしやELKスタックのバージョンが古いといった問題がありました。そのため、手始めにログ基盤の改善としてELKスタックのアップグレードを行いました。取りこぼされていたログを入れるようにtemplateを改善しました。Logsに流していたのですが、Kibanaで見れたほうが串刺しにしやすく便利であった為、ElasticSearchへ取り込むようにしました。エラーの確認ぐらいでしか使われていませんでしたが、今回は新たにVisualize等を追加してもっとログを有効活用できるようにしました。URLに対してのバックエンドでのリクエスト数をカウントして、上位のURLをPieとして表示Producer/Consumerパターンで、Consumerが実行したTask数をLineとして表示など、さまざまな箇所を改善しました。結果として、バックエンドでのリクエストが多いものについてはSREチームで改善のissueを作成し、対応するなど以前よりも有効的に活用しています。現状抱えている課題として次のものが挙げられます。分散トレーシングが整備されていないperf/DTrace/SystemTapに詳しい人材が不足している昔書かれたコードで、技術的負債が存在しているおわりに以上、SREチームの事例としていくつか紹介させていただきました。事例として参考になればうれしいです。今後もやることがまだまだ山積みになっている認識ですが、少しずつでも改善していければと思っています。最後までお読みいただき、ありがとうございました。SREに興味がある、ワタシlinuxチョットデキル、みんまで働いてみたいといった方がいらっしゃいましたら、ぜひ一度オフィスでお会いしましょう。次回は、エンジニアののりすけさんの予定です。読者になる関連記事2023-06-19キャンペーンの開発工数を大幅に減らした話こんにちは!みんなのマーケットでエンジニアをしているあべで...2021-02-02くらしのマーケット開発職向けの会社紹介資料を公開します!こんにちは。みんなのマーケットでCTOをしている戸澤です。今回は8...2020-08-14くらしのマーケットの開発チーム紹介!みんなのマーケットでPdMをしているハットリです。積極採用中!みんなのマーケットでは、プロダクトをつくる仲間を募集中です。日本全国、また、グローバルでのフルリモート社員や業務委託についても、各職種で募集中です。開発職向けの会社紹介資料も御覧ください。2引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。