初めて記事を書きます!
フリーランス2年目のシステムエンジニアです。
不慣れな部分ありますが、温かい目でお願いしますm(_ _)m
また、次回に自己紹介を書こうと思いますw
今回は??
フリーランスエンジニアとして、個人で受けた初仕事としてユーザー管理システム的なものを作りました。
そのシステムをどのようなアーキティクチャー、技術で作ったかを紹介したいと思います。
※サービス名はここでは伏せさせてもらいます、、、
仕事を受けた時の話、「こんなWebサービスつくりたんだよね〜」って言われて、色々ヒアリング開始!
ベンチャー企業だったということもあり社内で使えるサーバーも保守、運用できる人員もいないので、
当時、私がAWSの勉強中だったこともあり、サーバーレスで作ってみようと提案し進めることになりましたw
システム構成
使用技術と使い方
- Kotlin
- WebAPI実装
- TypeScript+React
- 静的ページ実装
- AWS S3
- Webサイトのホスティング
- AWS APIGateway
- AWS Lambda
- APIGatewayと合わせてWebAPI
- AWS Cognito
- ユーザー認証
- AWS CloudFront
- S3の前段でCDNとして使用
- 証明書の設定
- AWS RDS
- MySQLを使用
ハマったこと
これから描くこと以外にもハマったポイントはたくさんあったのですが、
パッと思い出した範囲で、、、
本番環境と検証環境の分離
ベストプラクティスとして環境ごとにアカウントを分離させる方法があげられますが、
アカウントは1つしか用意できず、どうしようと迷いました。
アカウントは1つで分離された環境を2つ用意、、、
結局、AWSアカウントを分割せず、VPCごとに環境を分割と環境変数で頑張りました。
今後のプロダクトの拡張次第でここら辺は改善したいですね。。。
Cognito
ログイン画面をS3にデプロイし、Cognitoで認証、認可。会員用ページに遷移する。
というものにしたかったが、なかなかうまくいかず、、、
認証はうまくされているようなのにURLにパラメータが追加され、会員用ページに遷移されそうで遷移されなくて結構時間かかった。。
納期の関係もあって結局、Amplifyを使ってCognitoとログイン画面を作ったらうまく動いてくれたのでそれで進めました。
Cognito難しい、、勉強のやり直しですね、、、( ;∀;)
まとめ
今年1月に企画がスタートして10月に一旦リリース完了しました。
ひとまず、致命的なバグなく動いていて安心しています!
今は、ユーザーから機能の改善案や追加機能の実装を行っています。
実際にユーザーに使ってもらって改善していくはプロダクトが育ってる感じがしていいと実感しています^^
今回の対応を経て、壁にぶち当たったら文献漁って、解決、たまに諦めるの繰り返しでした。
知識不足をあらためて感じた次第でございます、、、( ;∀;)
今後も精進ですね、、、