はじめに
フォースタートアップスで「STARTUP DB」(スタートアップデータベース)の開発を担当している竹内 強(@manbo34)です。
「STARTUP DB」は、成長産業領域に特化した情報プラットフォームとして、「未来を牽引する国内スタートアップとエコシステムビルダーが出会い、産業をブーストさせること」をミッションに掲げ、2018年5月にサービスができました。
日本のスタートアップエコシステムは海外と比較すると、まだまだ活性化されておらず、情報が散在しているという課題があります。「STARTUP DB」は日本のスタートアップ情報を集約・可視化することを起点に、日本のスタートアップエコシステム、産業をブーストさせるべく日々開発を進めています。
今回はこの「STARTUP DB」のシステム構成について説明させていただきます!
STARTUP DB(スタートアップデータベース)とは
国内最大級の成長産業領域に特化した情報プラットフォームです。
「STARTUP DB」は、12,000社を越える日本のベンチャー・スタートアップ企業の情報を保有するとともに、起業家・投資家、エコシステムビルダーの方々累計100名以上のインタビューコンテンツをリリースしています。
2019年6月24日に、英語版をリリース。また、2019年7月には世界最大級のベンチャー企業データベース「Crunchbase」とデータ連携、日本のベンチャー・スタートアップ企業の情報を海外のプロフェッショナルに届けることで、国内の成長産業市場の発展に貢献しています。
【STARTUP DBとは?】ここ1年で大飛躍!!STARTUP DBの取り組みについてまとめてみました。
https://www.wantedly.com/companies/forstartups/post_articles/223849
2周年記念インフォグラフィック「HISTORY of STARTUP DB 」
https://media.startup-db.com/summary/startupdb-2nd-anniversary
STARTUP DBの構成
「STARTUP DB」は次のサービスで構成されています。
- STARTUP DB
- STARTUP DB MEDIA
- 企業情報データベース
構成図
インフラにはAWSを利用しています。構成としては一般的ですが、DBとしてRDS(Aurora MySQL)があり、WebサーバはEC2、レスポンスのキャッシュにはElastiCache(Redis)、アセットはS3からCloudFront経由で配信、ドメイン管理にはRoute53を利用しています。
データ集計などにはLambdaを利用し、アプリケーションの保護にはWAFも使っています。LambdaはSTARTUP DBで使用しているスクリプトの定期バッチ処理にも利用しています。
単一障害点の排除と可用性を考え、可能な限り冗長構成を組んでいます。リクエストはロードバランサーにより分けられ、DBはMulti-AZ配置をとっています。過去、実際にDBのシステム障害が発生しましたが、自動フェイルオーバーの恩恵を受けて難を逃れたことがあります。
上記に加えてSendGrid、Zapierなどの外部サービスも利用しています。
各サービスの紹介と使用技術・構成について
1.STARTUP DB
「STARTUP DB」のトップページです。フロントエンドはVue.js、バックエンドはRuby on Railsを利用しています。主要な企業情報は、別途社内で管理している企業情報データベースからREST APIを利用して取得し、公開しています。このREST APIは内部DNSでアクセスしているため、外部からはデータを取得できないようになっています。
また、後述のSTARTUP DB MEDIAからも公開された記事情報をリアルタイムに取得し、企業に関連付けて表示するなどデータ連携しています。
会員登録(無料)をすると、お気に入りの企業をフォローでき、メールにて企業情報やイベント情報が届きます。会員様へのメールの送信はSendGridを利用しています。SendGridはクラウドベースのメール配信サービスで、API経由で配信できるため、メールマガジンのような一括メール送信などの運用コスト削減に役立っています。
STARTUP DBが掲載する企業情報は執筆時点で12,000社を超えており、スタートアップ企業データベースとしては国内最大規模となります。
掲載している情報量も膨大なため、時に不正なBotによるクロールを受けることがあります。利用規約でも、過度なアクセスにより負荷をかける行為などは禁止させていただいておりますが、不正なリクエストについてはWAFを利用してブロックするような運用をしています。
今後の展望として現在、フロントエンドとバックエンドが同じサーバーで動作していますが、マイクロサービス化を推進していることもあり、フロントエンドとバックエンドの役割を明確化し、物理的にも分けていきたいと考えています。
技術スタック
2.STARTUP DB MEDIA
STARTUP DB MEDIAは、「for Challenge」をテーマとして設定し、成長産業領域での起業やスタートアップへの興味を促し、読者の新しいチャレンジを後押しする、STARTUP DB編集部が運用するメディアです。起業家やベンチャーキャピタリストへのインタビュー記事、編集部が独自分析した記事を配信しています。
記事の配信にはWordPressを利用していて、特別な運用はそれほどしていないですが、体裁の変更や機能追加など柔軟に対応できるようテーマのバージョン管理を行っています。
今後はSTARTUP DBとの企業情報の連携にも、より一層の柔軟さが求められるため、WordPressから脱してHeadless CMS+SPAへの転換なども検討しています。
技術スタック
3.企業情報データベース
「STARTUP DB」で取り扱うほぼ全てのデータを格納しているデータベースです。STARTUP DBの核となる企業情報や関連する情報を管理していて、専任スタッフが専用の管理画面から最新の企業情報を日々更新しています。
また、社内向けのタレントエージェンシー支援システム(SFA/CRM)にも企業データを提供するためにAPIを内部公開しています。
言語、フレームワークとしてはRuby on Railsを利用しており、フロントエンドもRuby on RailsのSSRとなっています。将来的にSPAにすることを検討しています。
現在、社内ではマイクロサービス化プロジェクトが進行しており、企業情報データベースも以前は社内向けSFA/CRMと同じリポジトリで開発していましたが、今は別リポジトリで管理・開発を行っています。今後もマイクロサービス化は進めていき、管理画面やAPIサーバーもそれぞれ分離していきたいと考えています。
技術スタック
おわりに
文中に何度も登場していますが「STARTUP DB」ではマイクロサービス化を進めており、フロントエンドとサーバーサイドの役割の明確化を図っています。
未来を牽引する国内スタートアップと個人・企業などのエコシステムビルダーを繋ぐHUBになるべく(壮大なチャレンジが待っています)、スタートアップ企業の魅力を伝えるサービスの担い手として、フロントエンド・サーバーサイドどちらも仲間を募集しています。
是非カジュアルにお話しませんか?
今までのご経験から培った能力・専門性によって、フォースタートアップスを次のステージに導いてくださる方のご連絡をお待ちしています。