ピクシブの春インターンに参加しました
こんにちは。殿山です。技術職向け春のインターンシップ「PIXIV SPRING BOOT CAMP2022」のインフラ(SRE)コースに参加しました!
インターンでやった課題
課題内容
MySQLの検証環境をリプレースすること!
今まで「MySQL Sandbox」というPerl製のMySQLの環境構築ツールを使っていたのですが、現在、非推奨になっているため別のツールを探す必要があるとのことでした。
検証環境の条件
このように様々な条件がありました。
- DBがあるデータディレクトリに外部からアクセスできる
- 外部から持ってきたデータでMySQL環境を構築できること
- MySQLの設定も外部から持って来られるようにすること
- ユーザーが設定ファイルにアクセスできる
- 1台のサーバに2、30台のMySQLが動く
取り組んだ内容
- 新しい検証環境の選定
- 実際に非同期レプリケーション環境を複数の技術で試験
- docker-composeを選択
- docker-composeで検証環境を構築するための運用手順書を作成
- 運用の信頼性を向上させるためのCLI「MySanD」を作成
技術の比較
調べてみると様々な検証環境の構築ツールがありましたが、今回は特に優秀なツールである2点を比較・検討しました。
DBdeployer
Docker
- コンテナ仮想化を使った環境構築プラットフォーム
数あるツールからDockerを選択した理由
今回は、実際に両方のツールで非同期レプリケーションを構築した上で比較・検討しました。また、SREチームでは、「頻度は低いがRedisも検証できたらいいなぁ」という声もありました。
それらの点も踏まえ、以下の理由でDocker(docker-compose)を採用しました。
- 広く普及しているため、技術が廃れにくい
- YAMLに設定が書かれているため、よりIaC(Infrastructure as Code)に近づけられる
- 汎用性が高いため、Redisといった別の技術も試せる
同時に運用手順書も作成しながら、メンターさんとバックアップデータで動作検証しました。
CLI「MySanD🥪」の開発
MySQL Sandbox by Docker、略して「MySanD」。
コマンドのミスを減らし運用しやすくするためのツールとして製作しました。
名前がややこしいのですが、Dockerのみを使っています。最小限のコマンドでMySQL環境を作成・削除できるようになっています。
例えば、このようなコマンドで検証環境を作成できます。
インターン課題で学んだこと
普段の大学生活では学ぶことが出来ない貴重な経験をすることが出来ました!
ピクシブの社内で印象に残ったこと
社員さんがニックネームで呼び合いながら楽しく働いていました。誰でも気さくに話しかけられて、Slackもポジティブな雰囲気でした。
趣味について話せるSlackチャンネルがある!
ピクシブでは、「zチャンネル」という趣味について話せるチャンネルがあります!
自分は、ミリタリーとアニメが好きなので「z-military」と「z-anime」というチャンネルに入っていました。いつでも趣味について話せて息抜きできる空間がありました。
全社会議
全社会議というと↓のように硬いイメージがありました。
しかし、実際にはイメージと全く違っていました。
ラジオ体操から始まり、実況用のSlackのチャンネルでYouTubeの生放送のように楽しみながら現在の社内の状況や今後の展開について知ることが出来ました!
インターンを通して
「これからも勉強していきたい!」と思えるインターンでした。
Linux、MySQLなどもっと深く勉強するべきところを知ることができました。
そして何より、インターン生でもピクシブの裏側を惜しげもなく教えて頂きました!
後日...
「インターン修了証書」という盾を頂くことが出来ました!
人生で盾を貰ったのは初めての経験だったのでとても嬉しかったです。