pixivで圧倒的な猛者に入門した

この春、ピクシブ株式会社のPIXIV SPRING BOOT CAMP 2020に参加してきました。

募集概要

recruit.jobcan.jp

ピクシブのインフラ部ではオンプレ・クラウド合わせて200ホスト以上をDatadogを用いてモニタリングしています。

今回のインターンでは、そのDatadogを用いてグラフや監視を作成すると共に、プロダクション環境のデータを見て分析を行ってもらうことで、実際の業務を体験することができます。 また、インフラをTerraformで宣言的に管理する方法を学び、既存システムのTerraformでの再構築に挑戦してもらうことで、実際の業務のなかでのInfrastructure as Codeを体験することができます。 【使用技術】 Terraform、Datadog、LinuxAWS、Gitlab CI 上記いずれかの経験があれば好ましいが、必須ではありません。

バイト先でDatadogは使っているのですが、200ホストというのは桁違いですし、実際に世界中からものすごい数のアクセスが飛んでくるサイトのインフラはどうなっているのだろう?というのが気になって今回は応募させていただきました。

ちなみに、選考ではGitHub選考と通常選考が選べます。

僕はGitHubではPublic なリポジトリでの活動が少ないのと、やってきたことを面接で伝えたほうがよいかなと思ったので通常選考にしました。

やったこと

パフォーマンスチューニング

BOOTH とpixivコミックの改善点を探して、対策を考えるというタスクをやりました。 特にBOOTHはユーザーとして商品を購入したこともあるのでとても楽しいタスクでした。 また、メンターのwalf443さんにはほとんどつきっきりでコードが意味している点の説明や、なぜこうなったかの裏話をしてくださってとてもおもしろい話が聞けました。

今回は基本的に遅いクエリをどう正すかを考えていたのですが、なかなか見つけられず walf443さんにだいぶ助けてもらいました。このタスクをやるなかで、パフォーマンスチューニングの基礎を教えてもらいました。

次のISUCONや、自分の関わる開発で活かしていきたいと思います!

Terraformについてのテスト

DNSレコードの変更依頼について、現在のフローでは依頼が来たらインフラ部が変更する、というフローになっているところをTerraformを使ってPRベースにできないか?という課題をいただきました。 この課題については、Terraformを用いてRoute53を操作することで依頼する側がPRを出すことで変更依頼を出せるような仕組みを考えました。また、その変更が正しいかどうかのチェックを行うようなスクリプトを書きました。

terraform plan には -out=PATH というオプションがあります。ここではplanの内容が格納されているzipファイルが生成されます。このファイルを用いてapplyすることもできるのですが、terraform show -jsonというコマンドを使うことで変更の内容をjsonで出力させる事ができます。出力したJSONを使って変更先のIPアドレスが実際に疎通できる環境かテストしたりするようにしました。

DatadogのDashboard作り

既存サービスの監視に使うDashboardを作成しました。

既存のDashboardを見せていただき、自分でもわかりやすいDashboardを作って監視の負荷を下げたいと思いました。

物理マシンのキッティング

旧社屋にある検証用のサーバのメモリ増設をさせてもらいました! f:id:onsd:20200324094119p:plain

感想

今回のインターンで、基本的な負荷分散やキャッシングをしっかりやることが大量のリクエストをさばくための秘訣であり、地道にやっていくべきことだと学びました。 また、AWSGCPのようなパブリッククラウドにふれる機会がとても多くなっているなか、オンプレのインフラに触れることができたのはとても貴重な経験だと思いました。 楽しい二週間でした。本当にありがとうございました!