【インフラ編】TECH LEADの技術を惜しげも無く公開します!React × PHP Laravel × BEAR.Sunday × SSR
こんにちは、@TECH LEADです。
今回、「TECH LEADの技術を惜しげも無く公開します!」シリーズの最後となるインフラ編になります。
- アーキテクチャー編
- フロントエンド編
- サーバーサイド(アプリケーション層)編
- サーバーサイド(内部API層)編
- インフラ編 ←いまここ
目次
主な技術
Elasticsearch 6.4
nginx
PHP-FPM
インフラツール
インフラ構築
TECH LEADでは、インフラをTerraformというオーケストレーションツールとAnsibleという構成管理ツールを使用してAWS上に構築しています。
もちろんAWSのコンソールからインフラを作ることもできますが、Terraform・Ansibleを使用している理由は下記にあります。
- 構成したい要素を書くだけでいい
- 設定内容がすぐにわかる
- 再現性がある(同じ環境をすぐ作れる)
Terraformを使って、サーバ・DNS・Amazon Auroraなどの設定を全て行い、AnsibleでサーバにnginxやPHP、Elasticsearchなどのインストール、設定をしています。
インフラ構成
TECH LEADサービスは、上図のようなインフラ構成になっています。
ネットワークに関して
TECH LEADでは、VPCのサブネットを4分割し、パブリックなものを2つ、プライベートなものを2つ用意し、それぞれでアベイラビリティーゾーンを分け、片方のサーバで障害が起きたとしても片方は稼働できるようにゾーンを分けています。
また、ALB(Application Load Balancer)を介して、パブリックに配置したアプリケーションのEC2インスタンスへアクセスさせ負荷を分散させます。
しかし、現状はサービスの規模が小さく、コストがかかるためEC2インスタンスを1つしか用意していません。ただ、今後のサービスが大きくなることを見越してALBで負荷を分散できる様な構成にしています。
ミドルウェアに関して
TECH LEADサービスでは、求人検索などにElasticsearchを使用しています。
当初Amazon Elasticsearch Serviceを使うこと検討しましたが、Kuromojiのユーザー定義辞書を使うことができないため見送り、EC2インスタンスにElasticsearchをインストールして使用しています。
本来はプライベートサブネットに配置すべきものですが、NATの設定などをする必要があるため、一旦パブリックに配置しています。将来的にはプライベートに移す予定です。
Amazon Auroraはプライベートなサブネットグループに配置し、VPC内からしかアクセスできないようにしています。
メール送信に関して
メール送信は、SendGridというメール配信サービスを利用しています。
SendGridを利用することによって、メールサーバを管理する必要がなくなり、メールの送信状況や開封率などの情報を簡単に取得することができます。
SendGridは、簡単に利用開始することができ、100通/日まで無料で利用できます。
インフラモニタリング
最近、TECH LEADサービスの稼働状況をモニタリングするためにDATADOGというインフラモニタリングツールを導入しました。
アプリケーションの稼働状況やディスク使用量などをモニタリングし、アラートをslackに通知するようにしています。
DATADOGは、カスタマイズ性が高く、管理画面上で簡単に独自のメトリクスを作れ、表示方法を豊富なテンプレートから選ぶことができます。
最近導入したばかりなのでカスタマイズできていませんが、色々な数値を可視化できるようにし、TECH LEADサービスをモニタリングしていきたいと思います。
まとめ
インフラを構築する際は、TerraformやAnsibleなどのツールを活用して行なった方がいいと思います。
これらのツールを使用しないで複数インスタンスなどを作成しなければならない場合、差分ができてしまったり、漏れが生じる可能性が非常に高いです。1台だけならコンソール上でやったほうが簡単かもしれませんが、スケールすることを考えるのなら最初からTerraformやAnsibleなどのツールを使いましょう。
TECH LEADのインフラは、まだサービス規模が小さいので最小限の構成にしていますが、将来を見越してスケールできる様にしています。
みなさんTECH LEADサービスの応援よろしくお願いします!
エンジニアの皆さんへお願い
5回に渡って、TECH LEADサービスの技術を紹介してきましたが、いかがでしたでしょうか。すこしでもみなさんが開発する際の参考になればと思います。
もし、「ここをもっと聞きたい」「うちではこうやっている」と言ったご意見・アドバイスなどありましたら、@TECH LEADまでリプライやDMにてお気軽にお知らせください!
よろしくお願いします!
最後まで読んでいただきありがとうございました!
PR
「今は具体的な転職を考えていないよ」と言う方も、是非一度TECH LEADの各サービスを触ってみていただけると嬉しいです。
TECH LEAD Job
IT/WEBエンジニア専門の求人サービス|TECH LEAD Job
TECH LEAD Resume
TECH LEAD Resume|IT・WEBエンジニア向けレジュメ管理サービス
TECH LEAD Agent
IT/WEBエンジニア専門の転職支援サービス|TECH LEAD Agent