見出し画像

GLIT(グリット)を支えるテクノロジー①

こんにちは,Caratの斎藤( @saitoxu )です.
今回は弊社が運営している転職サービスGLIT(グリット)を支えるテクノロジーについて紹介したいと思います.

今回は初回ということで,なるべく詳細には立ち入らず,大雑把に裏側ではこうやって動いてるんだなあというのを理解してもらえるように書いてみます.
エンジニアでない方でも分かるように,なるべく分かりやすく書きますので最後までお付き合いください.

全体像

はじめに,GLITの全体像を下図に示します.

GLITのシステム全体図

あまりに一般的なシステム(データベースなど)や,本筋でない機能(バッチ処理など)は今回図には載せませんでした.
省略した部分は今後紹介していけたらいいなと思います.

それではクライアントサイド・サーバーサイドそれぞれについて,どういった技術を使っているのか紹介していきます.

クライアントサイドで使っている技術

GLITはiOS / Android / Webの3プラットフォームで展開していますが,いずれもTypeScriptで書かれています.

iOSとAndroidではReact Nativeというクロスプラットフォーム開発用のフレームワークを使っており,1つのソースコードで両方のOSにアプリを提供しています.
余談ですが,React Nativeは実はGLITの最初期の頃(2017年4月頃)から使用しており,国内ではだいぶ導入が早かった方ではないかと思っています.

WebアプリはNext.jsというフレームワークを使っています.

知っている方にとっては当たり前の話ですが,React NativeとNext.jsはどちらもReactというライブラリをベースにしており,雑に言うとReactができればどちらもそこそこ書けるようになります.

GLITではこのように,クライアントサイドで利用する技術をなるべく統一(TypeScript & React)することで,少ない人数でもスピーディに開発できるようにしています.

サーバーサイドで使っている技術

はじめに,APIについてです.
クライアントアプリと直接やり取りをするAPIは,Rubyを使って書かれており,フレームワークはRuby on Rails(通称Rails)を使っています.
クライアントサイドのReact Nativeと同様,GLITのリリース当初から一貫してRubyとRailsで作ってきました.

次に,推薦システムについてです.
GLITにはユーザに求人をオススメする機能があり,推薦システムはこの機能を提供するためのものになります.
推薦システムでは機械学習を用いているため,それに適したPythonを使っています.
推薦システムはGLITのAPIが利用する内部的なAPIとして提供しており,APIに関する部分はFastAPIというフレームワークを使用しています.
機械学習には前処理やトレーニング,パラメータチューニングなど様々な工程が存在しますが,その一部にAmazon SageMakerを使っています.

最後に,検索エンジンについてです.
GLITでは求人検索機能を提供しており,それを裏側で支えているのが検索エンジンサービスのElasticsearchになります.
運用の手間をなるべく省くため,ElasticsearchはElastic Cloudというマネージドサービスを利用しています.

おわりに

以上,GLITを支えるテクノロジーの紹介でした.
冒頭でも述べたように,今回は大雑把な全体像のみの紹介でしたので,次回以降詳しく紹介していけたらいいなと考えています(と思いタイトルに①と入れてみました).

最後に,弊社では日本の仕事探しにおける負を一緒に解決してくれる仲間を募集しています.
下記の募集ポジションまたは,その他少しでも興味を持った方は斎藤のTwitterまでお気軽にご連絡ください.


この記事が気に入ったらサポートをしてみませんか?