先生のプロフィール・コースのアクセス数の合計を比較したランキングが先生側で確認できるように!ランキング機能開発ストーリー

今回は6月に開発・リリースされた「アクセス数ランキング」に関して、開発をメインで担当したエンジニアの伊藤さんに突撃インタビュー!

今回の開発の山場や工夫点などを語っていただきました!

NoSchoolではエンジニア採用を積極的に行っています!「どんなことができるか知りたい」「もっとどんな事業をしているか知りたい」という方は「カジュアル面談」でざっくばらんにお話しましょう! 採用担当TwitterのDM からご連絡下さい!

-今回は伊藤さんにお話を伺います!今回リリースした機能の内容を簡単に教えて下さい!

6月にリリースされたアナリティクス機能の「アクセス数を見る」の画面から直近1週間のアクセス数ランキングを見れるようになりました!

プロフィール・コースのアクセス数の合計を比較したランキングで、ランキングから、現在のアクセス数の良し悪しをご自身でご判断することもできるようになりました。

また、アクセス数が多い順にランキングを算出するアルゴリズムをLaravelに実装するよりもMysql8のRANK()関数を利用する方がバグを生むリスクも実装するコストも低くなると判断し、今回の施策のタイミングでMySQL5.7からMySQL8.0へバージョンアップも同時に行いました。

‐ランキングって、上位になるとテンションあがりますよね!特に先生方からすると今のコースがいいのかという判断をする参考にもなりそうですね。実際に先生方が見れる画面等はありますか?

これはテストページにはなるんですが、こんな感じでランキングが表示されます。

‐開発を始める前に、技術的に一番大変になりそうだなと感じたところはありますか?

本番DBのバージョンアップをすることが初めての経験だったこともあり、Amazon Aurora MySQLを5.7から8.0へ上げる際に考慮すべき事や手順に関して無知でだったので、データ不整合や障害を発生させずにバージョンアップをやり遂げることが出来るのか不安でした。

‐ちなみに開発を始めた後に、想定外だったことはありましたか?

全てのDBインスタンスクラスに対してMySQL8.0がサポートされていると思い込んでいました。いざ蓋をあけてみると、当サービスが利用しているDBインスタンスクラスではMySQL5.7までしかサポートされておらず、MySQLのバージョンアップだけでなく、DBインスタンスクラス自体のバージョンアップもする必要が生じました。 また、DBインスタンスクラスのバージョンを上げることで月々のランニングコストも増加するので、ランク関数を利用するためだけに現時点でDBインスタンスを上げることはビジネス的に良い判断なのかという迷いも生じました。

‐いろいろな判断が絡みあうのは確かに想定できないですね。今回の開発の山場があったら教えていただけますか?

3つぐらい山場がありましたね。

①そもそも本番DBを上げる際にはどのようなことを考慮する必要があるのか,どのような手段が存在しており、今回はどの手段を採用すべきかの判断をすること。

理由として、マナリングではC向けサービスであり、SEOを重視しているのでダウンタイムが発生する時間を限りなく短くしたかった。(そもそもダウンタイム発生がSEOへどのような影響を及ぼすのか判断できる人がいなかった。)

またサブスク更新処理が実行されているので、長時間もしくは発生時間が未確定のダウンタイムを避けたかった。

②ランニングコスト増加を加味した上で、MySQLのバージョンを上げるべきかの判断

③Amazon RDS ブルー/グリーンデプロイ自体に細かいバグがあるので、正常にブルー/グリーン環境が作成されない場合の問題の切り分け

‐今回の開発機能の技術的な工夫点があれば教えてください。

Amazon RDS ブルー/グリーンデプロイを用いることで、ダウンタイムを限りなく短い時間にすることが出来た。更新処理にはダウンタイムが1分程生じたが、取得処理には数秒程度のダウンタイムしか生じなかったところですね。あと、それぞれのダウンタイムを事前にstg環境で検証することで自信を持って本番環境のバージョンアップを行えたところですかね。

‐開発中に個人として気をつけていたことがあれば教えて下さい。

これは答えになっているかわからないんですが、何か問題が起きた際に、必ず切り戻せる手段を確保するように開発中は気をつけるようにしてました。

‐今回の機能のリリース前とリリース後に「個人」として成長した部分はありましたか?

全く未知の分野で大きな失敗が許されないタスクをやり遂げることが出来たので、自分に対する自信が上昇しました!

‐今回リリースを通しての課題感やご自身で感じたことありますか?

技術的な話ではないですが、全く未知の分野で大きな失敗が許されないタスクを進める際の調査方法や手段の選定、そしてビジネス的にコストを投下する必要があるのか否かの判断とその根拠を示すことをもっと上手にこなせるようになりたいと思いました。 このようなタスクの経験は初めてだったので、具体的にどのように改善するのか答えを出せていませんが、今後のタスクの中で自分なりの型を見出したいと思いました。

ありがとうございました!このリリースが先生のコース改善に繋げていただけるように活用されるといいですね!

NoSchoolではエンジニアを大募集中!採用に関しては採用ページをご覧ください!