1,800億フォロワーを分析するBitStarのインフラ構成

## はじめに
BitStarのCTOの山下です。
BitStarではYouTube, TikTok, Instagram, X (旧Twitter)等の各SNSプラットフォームのデータを構築しています。

YouTubeでは総登録者数230億人、チャンネル数300万件、動画8,000万件、コメント2億件からChatGPTや機械学習用いてデータ提供をしています。
同様にTikTok 670億・Instagram 800億・X (旧Twitter) 56億 計約1,800億フォロワー分のデータを収集し分析した情報を提供しています。

もちろん地球の人口は約80億人なので、地球人口ベースで1人が22フォローしている計算になります。
インターネット人口は約50億人ともいわれているので1人が36フォローしている計算にもなります。

そんな日々フォロワーが増加する世界を補足し続けているBitStarのインフラ構成を説明します。

## インフラ構成
### AWS構成概略
大前提BitStarではAWSを利用しています。
AWSでのインフラ構成図は下記の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210754/a2043c7d-bcf5-9ffc-1f54-e1f390922f95.png)

* **Route 53:** DNS
* **Elastic Load Balancer:** WodpressのURLのルーティングやStagingのルーティングを行っています。
* **EC2:** バッチサーバー2台、Webサーバー2台、Staging、Wordpress環境
* **CloudWatch:** サーバーの死活監視やパフォーマンスやリソースの監視をしています。
* **Aurora:** 基本すべてのデータをDBに格納しています。600GB以上のデータを格納しています。
* **ElastiCache:** Redisサーバーで使っています。ランキングやキャッシュでの利用に使っています。
* **S3:** 各種ファイルアップロード等に使っています。
* **OpenSearch:** 全文検索エンジンに使っています。約200GB分のドキュメントを格納しています。
* **Recognition:** 画像解析に使っています。
* **Comprehend:** テキストからの感情分析に使っています。

#### バッチサーバーについて
特にBitStarではデータ収集や分析・解析をすることが非常に多いのでウェブサーバーよりもバッチサーバーのほうがスペックが高く常に稼働しています。

### よく使ってる機能
ChatGPT: ChatGPTを活用した業務効率改善に利用しています。
cld3: Googleのオープンソースの言語判定ライブラリです。インフルエンサーの配信言語の判定に活用しています。

## インフラ沿革
### 1. 開発環境の統合
ローカル環境に直接サーバーを立てていたので、AWSのEC2のインスタンスを各個人に配布してそこで本番環境と同じサーバー環境を用意しました。DBも各個人で立てていたのですが、各種SNSのデータ収集・分析の為、開発用の共通DBを用意しました。

### 2. 2度のRailsのアップグレード

毎度大変苦労しながらアップグレードを実施しています。
本日アップデートされたRuby 3.3.0をはじめRails 7系にも今後アップグレードしていきます。
RubyはRailsにアップグレードするため実際には何回にも分けてマイナーアップグレードを実施しています。

Ruby: 
* 2.2.0->2.3.4
* 2.3.6->2.4.5
* 2.5.7->2.7.1
* 2.7.6->3.1.4

Rails:
* 4.2.0->5.1.3
* 5.1.0->5.2.0
* 5.2.8->6.1.7

### 3. MySQLサーバーからAuroraへの切り替え
データ量が多くなったりアクセス頻度や集計が多くなってサーバー負荷が増えてしまったのでMySQLよりも性能の高いAuroraに移管しました。
AuroraにすることでIOPs課金になりDBサーバーでのボトルネックは基本発生しなくなりました。

### 4. 開発環境の見直し
Intel Macだとリソースの兼ね合いでDocker環境での構築が難しかったのですが、M1 Macに切り替えることでメモリも増えた為ローカル開発環境でDocker基盤の構築整理をしました。
よって全員M1に切り替えましたし、VSCodeでの開発環境も標準化できました。

## その他利用言語/サービス一覧

下記はBitStarで採用しているプログラミング言語やライブラリやサービスの一覧になります。
なるべく使っている順に掲載しているつもりです。

### プログラミング言語
* Ruby
* TypeScript
* Python
* JavaScript
* Node.js
* Google Apps Script
* Objective-C

### フロントエンドフレームワーク・ライブラリ
* React
* Next.js
* Redux
* Webpack
* Sass/SCSS
* jQuery
* Selenium
* Bootstrap

### バックエンドフレームワーク・ライブラリ・ミドルウェア
* Ruby on Rails
* Slim
* Rspec
* Pandas
* Puma
* OpenSearch
* NGINX
* Redis
* MySQL

### Amazon Web Services
* EC2
* S3
* RDS/Aurora
* ElastiCache
* OpenSearch Service
* Route 53
* CloudWatch
* CloudFront
* SES
* SNS

### Google Cloud Platform
* Cloud Natural Language
* Cloud Storage
* Cloud SQL
* BigQuery
* Cloud Functions
* Firebase
* Microsoft Azure
* SQL Database

### モニタリング・アナリティクス
* Bugsnag
* Google Analytics
* NewRelic
* Kibana

### 技術系その他（CI、検索エンジン、コード管理）
* ChatGPT
* GitHub
* ZenHub
* Elasticsearch
* cld3
* CircleCI
* Docker
* Stripe
* WordPress
* SendGrid
* MailChimp
* Mandrill
* Google Tag Manager

### デザイン
* Figma
* Adobe XD

### ビジネスツール・コミュニケーション
* Slack
* Google Meet
* zoom
* Google Workspace
* Microsoft 365
* Teams
* Zapier
* Notion
* Trello
* Chatwork
* Miro

## おわりに
BitStarでは絶賛Ruby/Railsをアップグレードしたい人もしたくない人もエンジニアを募集中です。
詳しくは下記を参照ください。では、メリークリスマス。

<a href="https://www.wantedly.com/projects/1533737"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210754/f9dfdc8c-8b56-70cd-7b05-c4f83927792f.png"></a>