こんにちは、CTOのzoo(YOUTRUST/Twitter)です。
これまで、ほとんどタクシーに乗ることはなかったのですが、最近は、タクシーに乗ることが増えました。それは...YOUTRUSTのタクシーCMが放映されているからです!
まだの方はぜひご覧ください。
今回はCTO室がこれまでに行ってきた取り組みに関して紹介します。
CTO室の役割
現在、YOUTRUSTには、SNS事業部、キャリア事業部、CTO室、経営企画室、コミュニケーション室があります。 プロダクト開発は、SNS事業部、キャリア事業部で行っており、多くのエンジニアがそれらに所属しています。 そしてそれら事業部所属のエンジニアは、事業部のミッションに沿ったプロダクトの開発を行います。
一方、CTO室では、インフラやセキュリティなどのいわゆる共通基盤や事業部のミッション外ではあるが会社として必要な技術領域の取り組みを行なっています。
この半年ほどで行なってきた主な取り組み、『インフラのコード化』と『機械学習プロジェクト』を紹介します。
取り組み1: インフラのコード化
背景
YOUTRUSTでは、創業以来AWSを用いてきました。これまでコード化はされていなかったのですが、以下のような思いがありました。
- 本番環境、sandbox環境が同じAWSアカウント内で構築されているが、別アカウントで管理するようにし、互いに影響がない状態にしたい
- インフラの構成の変更やその背景などが履歴として残るようにしたい
- 本番環境とsandbox環境が手作業で作られているため、構成が多少異なる箇所があるが、揃えたい
- 今後のサービス成長に先立ち、負荷試験を実施したいが、定期的に負荷試験を行うために手作業で負荷試験環境を作ることはしたくない
目的
コード化の目的は、背景に記載の思いを解消することです。
なお、コード化にはTerraformを用いてます。
結果
現在は、ほぼ全てのリソースをコード管理できるようになっています。 それにより、以下のようなメリットを感じています。
副業SREとの連携がしやすい!
これは非常に大きなメリットに感じています。
5月からSREの方に副業でジョインしてもらっているのですが、GitHub上でコードを介してレビューができるので、非常にやりやすいと感じています。 また、コード管理されていることで、レビュー後の適用作業でレビュー内容と異なる設定をしてしまう、というようなミスも起きないですし、変更の適用自体を業務時間中にフルタイムメンバーが行うなど、柔軟に対応することができます。
チームに柔軟性が生み出されたと感じています。
sandbox環境、本番環境の構成が揃った
今回のコード化により意図した差分以外に関しては、sandbox環境と本番環境で構成を揃えることができました。
コード化されていることで、sandbox環境と本番環境にコンソールから同じ作業をするという手間や作業ミスはないので、これからも同じ構成を保つことができるはずです。
また、環境差分による障害の発生などを未然に防ぐことにつながっていると思っています。
変更履歴とその背景がGitHubで見られるようになった
実際には、コード化しなくても、変更履歴やその背景の管理はできるわけですが、コード化すると自然とGitHubを使うことになるため、コードの変更に関しては自然と履歴に残ります。 また、新たなルールを策定するというよりは、これまで通りのGitHubのルールに則るだけですので、issueの作成やコメントなども自然としてしまいます。
負荷試験環境構築の準備が整った
まだ負荷試験はできていないのですが、今後負荷試験を行うときのハードルは格段に低くなっています。
今後
コード化が完了したことで、インフラ領域におけるこれからの改修の土台ができたように思います。ここを直したい、あそこを直したいというところを挙げるとキリがないのですが、土台があることで、非常に進めやすくなっています。
今見えている範囲での改善を進めると同時に、今後スケールする際にボトルネックになる箇所を洗い出す負荷試験など、より先を見据えた施策も実施していきたいと思います。
取り組み2: 機械学習プロジェクト
背景
YOUTRUSTのこれまでの登録ユーザー数は昨年12月時点で10万人を超えており、今後も100万人、200万人と増やしていきたいと思っています。 そして、ユーザー数が増えることで、当然データ量は増えます。
そのようになった際には、どのようにコンテンツを提供するか、他のユーザーとの出会いをどのように演出するか、というようなことは、さらなるサービスの成長において重要な点となるはずです。 おそらく単純なロジックでは対応できないことが出てくるでしょう。
そのため、将来のいずれかの時点で機械学習を活用していく必要があります。 ただ、自分たちには機械学習の知見がほとんどなかったので、まずはスペシャリストとして外部の方の知見を借り、社内に知見を貯めることが必要だと考えました。 そこで、機械学習エンジニアの方に副業で入ってもらえることが決まったタイミングで、機械学習プロジェクトを立ち上げました。
目的
そもそもYOUTRUSTにおいてどのようなことができるか分からない、というところからのスタートなので、少し先を見据えた目的を設定しました。
- 半年から1年先を見据えてプロダクトの価値向上に貢献する
- YOUTRUST社内に機械学習の知見を貯めて技術で課題を解決できる状態にする
結果
副業で入っていただいた機械学習エンジニアの方が機械学習の知見を、社内エンジニアがYOUTRUSTのサービスに関する知見を持ち寄り、どのようなことができそうかを検討し、いくつかの対象に対して機械学習を適用してみました。
結果として、その中の1つが、実際にプロダクトに反映させることで、利用者の方に新たな価値を提供できるのではないか、ということになり、今まさにプロダクトに組み込もうとしている状況です。
今後
思いの外早いタイミングでプロダクトの価値向上に貢献できそうであり、プロジェクトとしては良い形に着地できたと思います。
そして、このプロジェクトを通して、R&Dをしっかりしていくこと、つまり、技術に投資をすることや技術シーズでものごとを考えることの重要性を改めて実感しました。
最後に
今回は2つの取り組みを紹介しました。
今後も、基盤を整えることと合わせて、R&Dをしっかりとしていきたいと思っています。
最後に宣伝です。
YOUTRUSTでは、今後のサービス成長を支える基盤を構築してくれるSREエンジニアの方を募集しています!ぜひ一度お話しましょう!!