AWS SAMのtemplateについて
こんにちは。CURUCURUエンジニアの長尾です。
今日は社内のシステム構成についてお話していこうと思います。 今回フォーカスするのは主に私が担当している社内基幹システムの問題についてです。
何のためのシステム?
弊社CURUCURUでは現在ゴルフウェアを
- https://www.curucuru-select.com/
- https://www.higuma-golf.jp/
にて販売しております。
そこで扱う商品を社内基幹システムにて管理しております。
どんな構成なのか
- プラットフォーム:AWS
- サーバサイド: python (flask)
- フロントエンド: Typescript(ReactxRedux)
インフラの構成図はざっくり以下のような感じです。
問題点
よくある一般的なウェブアプリケーションの構成だと思いますがしばらく運用してきて、いくつかの問題を感じています。
-
AutoScale設定がない
- 社内基幹システムなので夜間帯はほぼ誰も使っていないにも関わらずインスタンスへの課金が生じる
- 逆に日中人が多いときにスケールアウトしないので遅くなる
-
EC2のOSの管理
- 日々OSアップデートが行われる中で、そこに追従していく作業が辛い
- 精神的な負担になる
-
ローカルで確認したことが本番で動かないことがある
- ローカルの環境と本番環境では全く同じ環境ではないため
-
モノリシックになってきた
- これは大規模アプリケーションの宿命ですね
などなど、これはほんの一部ですが他にもいくつかの問題があり現状の構成では日々の作業に影響を及ぼしかねない状況です。
解決するには
マイクロサービス化
です。
具体的にどう進めていくかはストラングラーアプリケーションへの移行をしつつ、モノリシックな部分を縮小させていくしかないと思っています。
ストラングラーアプリケーションとは
モノリシックアプリケーションに新機能を追加する際にそれを一つのサービスとして構築する。そういったことを積み重ねていくことで順次移行ができるようになり、最後にはモノリシックを消滅させることができます。
マイクロサービス化に関しては構想段階ですが、実装段階に入るタイミングではまた記事を投稿したいと思います。
以上、長尾がお届けしました。