Genieeの技術進化の軌跡:オープンソースから最新技術スタックまで
GENIEEの技術進化の軌跡:オープンソースから最新技術スタックまで
こんにちは、GENIEE歴14年目の経営情報システム開発部部長をしていますYinoueです。(今は人事部で採用も兼務しています)。GENIEEはこの春16期目に入り、提供しているプロダクトは20を超えました。今回は、そんなGENIEEの技術の遷移についてお話しします。GENIEEは、広告技術とマーケティング技術の両方で多くの進化を遂げてきました。その過程でどのような技術選定が行われ、どのようにシステムが進化してきたのかを詳しく見ていきましょう。
初期のLAMP環境とオープンソースSSP
GENIEEの初期段階では、LAMP環境(Linux, Apache, MySQL, PHP)をベースに、オープンソースのSSP(Supply-Side Platform)を利用していました。当時、日本には100社近くのSSPが存在し、どの会社も同じオープンソースを利用していました。しかし、オープンソースのSSPには「10億の壁」があり、サーバをどれだけ増やしても月間10億インプレッション(impression、以下imp)しか配信できないという性能限界がありました。
フルスクラッチ開発とLEMP環境への移行
この「10億の壁」を突破するために、GENIEEは配信基盤をC、C++、Nginxでフルスクラッチ開発しました。同時に、管理画面とレポーティング画面をLEMP環境(Linux, Nginx, MySQL, PHP)に変更しました。これが現在のGENIEE SSPとなります。
DSPの新規開発とDDDの導入
GENIEE DSP(DSP:Demand-Side Platform)の新規開発に際しても、配信基盤はSSPと同様にC、C++、Nginxで構築されました。DSPの管理画面とレポーティング画面の新規開発にはDDD(ドメイン駆動設計)を導入し、型付き言語であるJavaとSpringを選択しました。
MySQLとMariaDB
MySQLがOracleの傘下に入ったことを背景として、以下の選択肢が検討されました:
- MySQLでエンタープライズサポートを受ける
- Oracleなどの有償のDBに乗り換える
- MariaDBなどMySQLと親和性の高いものを技術検証する
この中で、まず社内プロダクトでMariaDBを試すことになり、SSPとDSPの経理データを社内連携する新規プロダクトはMariaDBを利用した、LEMP環境(Linux, Nginx, MariaDB, PHP)で作成されました。
マーケティングオートメーションとPython/AWS
マーケティングオートメーション(MA)の領域に参画するにあたり、M&Aで仲間になったプロダクトがPython/AWSだったこともあり、Majin(当社の旧MA製品)はデータ処理に親和性の高いPythonを選択し、LEMP環境(Linux, Nginx, MySQL, Python)をAWSに構築しました。
LEM-Python環境の仲間として営業管理ツール「Chikyu」(現:GENIEE SFA/CRM)が加わったことや、チャットボットツール「Chamo」(現:GENIEE CHAT)をPHPからPythonでフルリプレイスしたこともあり、マーケティング系はLEM-Python/AWS環境が揃ってきました。
DOOHの新規開発とGolangの導入
GENIEE DOOH(デジタルアウトオブホーム/デジタル屋外広告システム)の新規開発では、低レイヤに強いがメモリ管理が容易な言語としてGoかRustが検討されました。最終的に、チーム開発のしやすさからGolangが選定されました。
これ以降、マーケティング系も広告系も新規プロダクト開発や既存プロダクトの作り直しにおいて、バックエンドはほぼGoまたはPython3の二択となりました。
PublicCloudは世の中に色々なサービスがでてきたこともあり、AWS以外にもGCP、OCI(OracleCloud)、Azureなど色々な環境を試しています。
フロントエンドの進化
フロントエンドでは、広告系の管理画面は主にjQueryが使われていましたが、マーケティング系でインタラクティブなUIが求められるようになると、Vue.jsの導入が増加しました。その後、JavaScriptからTypeScriptに移行する段階で、React/Next.jsが主流となりました。
最新の技術スタック
最新のプロダクトでは、フロントエンドがNext.js、バックエンドがNestJSと、オールTypeScriptという構成になっています。
技術選定とシステムの進化は、常に変化するビジネスニーズと技術トレンドに対応するための重要な要素です。同時に、GENIEEでは、さまざまな開発言語や環境が存在するため、「1つの開発言語を極めて次にこの言語を勉強していたから仕事で使いたい」となった時に、転職をしなくてもキャリアプランが叶えられるという声がエンジニアから寄せられています。これにより、エンジニアは自分の興味やスキルに応じて柔軟にキャリアを築くことができます。
これからもGENIEEの技術進化に注目していきたいと思います。
読んでいただきありがとうございました。次回のTechブログもお楽しみに!
Discussion