テクノロジーデザイングループの柏原です
現在、通常の案件とは別にの所属するチームの自主提案で汎用的なAPIサービスの仕組みを検討しています
今回その基盤部分にAWSの機能を用いてサーバーレスに構築したいと考え、現在絶賛挑戦中です
なぜAPIサービスを作ろうと思ったのか?
案件でよく使うサーバーサイドの処理を共通化しておき、手間を省きたかった
現在Webサイトの制作業務がメインとなっていますが、プロジェクト毎に一からWebサイトを構築していますのでなかなかプログラムの共通化を図りずらい状況でした。
そのため共通化できそうな箇所をAPIにしてしまい、効率化へと繋げられないかと考えています。
例えばTwitterやInstagramのつぶやきの収集管理など、要望は多いけど構築にコストがかかる機能とかが考えられます
新しい技術の実験場をつくりたかった
複数のAPIを構築していく予定ですが、それぞれの開発環境を限定せず、新しい技術を試しやすい環境を構築し、様々な知見を高めていきたいと考えています。
AWSの機能を組み合わせ、サーバーレス環境を構築
前述したとおりAPIサービスの基盤ですが、よく耳にするサーバーレス環境でAPIの認証周りを作りたいなぁと考え、調べたり味見をしている最中です
理由としてはAPIの認証を行うサーバーの負担が大きくなることを心配したためです
認証サーバーは止まってはいけないし、メンテナンスコストがかかりすぎるな、と考えたため、そこの部分をAWSの機能に一任させてしまいたいと考えました
今のところ使用しているAWSの機能
この話が上がるまではLambdaもDynamoDBもあまり馴染みがない状況でしたが、調べてみると使いやすく、スケーラビリティも高いためかなり便利そうでした。
ただ、ノリノリで色々使っていくうちにだんだん出来ないこともわかってきて、それを回避するために構築がピタゴラ化(複雑化)したり、、、となりそうなのでいま頭を悩ませているところです。
今のところですと
- Cognito (認証周り)
- API Gateway + Lambda (ユーザー管理API)
- S3 (管理画面)
- EC2 (APIサーバー)
- CloudFront (サービスを単一ホストで運用するためのネットワーク構築)
あたり、ベタなところをお試しで使っている感じです。
API管理画面の構成を簡単にまとめてみました、実際にはEC2に直接アクセスされないように設定が必要だったり、色々と悩ましい箇所も多いです
以上、バリバリ発展途上のためあまり具体的なことを書けていないのですがチームの自主提案プロジェクトのお話でした
S3の管理画面をSPAにしたかったのでVue.jsを採用してみたり、フロントエンドのトレンドも交えつつ楽しく進めているところです