質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Amazon Cognito

Amazon Cognitoは、Webアプリケーションやモバイルアプリケーションの認証、許可、ユーザー管理をサポートするサービスです。ユーザー登録とサインインを行うか、FacebookやAmazon、Googleなどのサードパーティーを通じてサインインできる機能を提供します。

AWS Amplify

AWS Amplifyとは、AWSを用いたWebアプリケーション向けのJavaScriptライブラリです。サインアップ/サインイン、MFA、コンテンツ管理、さらにサーバーレスなバックエンドの自動構築などの実装が容易にできます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1350閲覧

【意見が欲しいです】バックエンド(nodejs)をServerless Framework フロントエンド(React)をAmplifyで作成する

tokuwgawa

総合スコア45

Amazon Cognito

Amazon Cognitoは、Webアプリケーションやモバイルアプリケーションの認証、許可、ユーザー管理をサポートするサービスです。ユーザー登録とサインインを行うか、FacebookやAmazon、Googleなどのサードパーティーを通じてサインインできる機能を提供します。

AWS Amplify

AWS Amplifyとは、AWSを用いたWebアプリケーション向けのJavaScriptライブラリです。サインアップ/サインイン、MFA、コンテンツ管理、さらにサーバーレスなバックエンドの自動構築などの実装が容易にできます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2022/06/01 17:43

編集2022/06/04 13:59

タイトル通りなのですが、このような構成で作ろうとしているのですが、先駆者の方々にこういった構成がいいのかご意見が欲しいです。

まずServerless Frameworkを使用して、下記を作成します。
・ApiGateway
・Cognito
・DynamoDB
・Lambda
・S3
必要であれば、serverless.ymlの情報も載せます。

AmplifyはReactをDeployするために使用しています。
通信方式はRestApiで行う予定です。

Q.なぜTypeScript、Graphql(GQL)を使わないのか
A.本当は使いたいのですが、今後のチーム開発を行う際に、学習コストを考えて使用を控えています。

Q.なぜAmplifyのみで開発しないのか
A.以前Amplifyでバックエンドの構築も行っていたのですが、ファイル構造や、S3周りで問題が多発したためServerless Frameworkを使用しています。
それとServerless Frameworkの知見が溜まってきたので使用しています。

Q.なぜサーバーレスで作るのか
A.ミニマムなサービスを複数展開する予定なので、値段面を考えてEC2,ECS,RDSなどの使用を控えています。

ほぼ初のサーバーレス環境の構築なので、無駄な構成でおこなっている可能性があると思いますが、ご教授お願いします。

他に、足りない部分や、聞きたいことがあれば質問してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

本当に申し訳ないですが、オープンな質問はteratail的にNGなので
軽く想定構成のレビューという感じで進めていきます。

AWSサービスの選定自体は的外れとは思えないし悪くないと思いますよ。
羅列されてるサービス一覧的にたりなさそうですが、
足りないなら必要なサービス足せばええやん、それが必要十分でしょ?
……という感じなので、基本はそれで良いかと思います。

それを踏まえて結論から言うと「AWSの営業を会社に呼んで相談しろ」です。

ミニマムなサービスを複数展開する予定なので

ミニマムで作るからこれ?それはおかしい。
AWSのサービス群を使うメリットは主に2つ

  • スパイクアクセス対策(EC2 + RDSでは対処が困難)
  • AnsibleやDockerのように設計図でサービスの構造を管理出来る

2つのメリットは別に速く作るには寄与しませんから、
一発目を速く作るミニマムサービスとは相関が1ミリもないと思います。
Cognitoはログイン・認証周りの実装をサボれるから明らかに速くなります。
他はどうでしょうね、多分遅くなるし辛いという未来の質問者さんの声が聞こえてきそうです。

価格面もConoHaやAWSのVPS使えば1サービス600円やそこらですよ。
アクセス増えたら高いインスタンス借りればええやん。
どんなに頭捻ってもAWSのサービス連結させる作りではそんなに安くはなりません。

あなたがサーバレスにしたいのは「サーバレスで作ってみたいから」なだけです。
安くするのは会社の為ではなく「会社に迷惑は掛けないから挑戦させて!」と思ってるだけです。
世の素晴らしい発明品も、多くは仕事中に従業員が遊びで組み合わせてる所を上司が見てひらめいたとか結構あります。
なので、会社の事も考えてリスク消そうと思ってるなら別に悪い事じゃありません。
自覚しましょう。

Node.js触れる前提なら、
Next.jsをVercelでデプロイして使うとかの方が100倍作るの楽だと思います。
質問者さんのサービスの要件に耐えうるかは知りませんが
参考記事: VercelでNext.jsを簡単デプロイ - WESEEK Tech Blog


じゃあこれで良いのか?
これに関しては会社の機密保持的にterataiilでは解決する事が出来ません。

何のAWSのサービスを利用するべきかだって?
開始時点に「これは何をするためのサービスです」という情報が必要で、
「そのためにこういうデータを扱います」という流れを汲んで、
じゃあAWSの何のサービスを使おうか?というフェイズに入るんですよ。

そこの情報が無いのに適切なサービス選びが出来てますか?アホかって話ですよ。

DynamoDBのあたり特に、
更新前のデータを返す可能性があるとか、トランザクション張れないとか
サービス次第では致命的すぎるでしょ
参考記事: 【AWS】DynamoDBとRDSのメリットデメリットの比較について - 自由に物事を深めるブログFresopiya

じゃあ要件をteratailに書くか?
不特定多数が見る掲示板サイトにサービス内容を共有して
「デメリットは許容できそうですか?」なんて絶対に聞いちゃ駄目ですよ。

だからこんな「ミニマム」というワードだけが前面出てくる意味のない質問になるんですよ。
分からず苦しい中、機密保持を出さずに堪えたのはナイス!よくやったと思います。


今後のアクション

社内に居る技術者達と検討・調査・相談して
「うん、これならリスクも抑えられてるように見えるしこれで行こうか」
という合意を取るしかありません。

その上でわからなければAWSの営業の方を招いて相談しましょう。
普通にITエンジニアとして尊敬出来る技術力を持つ方ばかりで、
「うーん、こういう要件ならこっちのサービス使ったほうが良さそうですよ」みたいなアドバイスを受けられます。

「ミニマムなサービスを沢山作る」というのは大前提の1つでしかありません。
AWSの営業さんもそれだけでは「だから何?」としか言えないので、
そっからの自己分析や筋道を整頓して、そういう情報も出しながら相談していくようにしてください。
そうすればきっと上手くいくはずです。頑張って

投稿2022/06/02 03:06

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2022/06/02 03:10

Amplifyを諦めたとのことですが、 AWSの営業さんに聞いても良いと思います。 「それ一見無理そうだけど、こういう回避策あって解決するんですよ」みたいな話も聞けるかもしれません。
miyabi-sun

2022/06/02 05:53

従業員が休憩時間になんかやってて、 そこからヒット商品に繋がった例は飲食だと多いですね 白いタイヤキとか、台湾まぜそばとかがそういう例のようです
tokuwgawa

2022/06/02 13:32

たくさんのご意見ありがとうございます。 Teratailの詳しい質問内容の注意など確認不足でした。すみません。 とあることから、知人に一人エンジニアとして勧誘され、立ち上げたばかりの会社ということもあり、運用費を抑えて、今後開発メンバーが増える可能性を考えて、学習コスト、人件費が抑えられるような言語構築でと思い、今回こういった形でご質問させていただきました。 なので、開発メンバーもいない中で自分が構築しているインフラが合っているのか不安になり質問させていただきました。 DynamoDBの件は重々承知しております。 なので、PlanetScaleなども視野には入れておりました。(開発要綱に合わせて) それと、このインフラ環境をパッケージ化とまではいかないのですが、テンプレートのようにして、複数サービスですぐに本番環境まで構築できるのではないかと思い、こういった構成を考えました。 ただ、miyabi-sunのご意見を拝見し、痛感する部分が多々ありました。 概要をふんわりと記載しただけなのに、たくさんの改善策本当にありがとうございました。 確かに、開発要件によって必要なサービスなどが変わっていくのは当然ですね。。。 勝手に頭で構築してどのサービスもこれだけあれば、基礎は作れると勘違いしていました。 AWSの営業さんの件は初めて聞きました。 ありがとうございます。ちょっと相談してみようかと思います。 現状、まだサービスを作る段階の前にいるので、 もう少し実業務を行なってから何が必要か、本当にこの構成でいいのか?などを考えてみようと思います。
miyabi-sun

2022/06/03 02:40 編集

返信読みました。これから楽しみなフェイズじゃないですか! 学習コストに関しては私も一家言あるので追記しておきました。 最終的にどうするか、これを読んだtokuwgawaさんに決めて欲しいです。 > 立ち上げたばかり → 学習コスト 人が少ない内が好き勝手やれる最後のチャンスです。 TSもサーバレスのAWSもコード化して俺様の作った理想のシステムだ!ドヤ!しましょう。 人間はやりたくないものに関しては覚えません。 しかし、やりたいものに対しては死ぬ気で覚える、特に模範解答がそこにあればなおさら楽。 なので学習コストなんて本来些細な問題なんですよ。 人が増えて、今のままでもそれなりに上手く回っている。 なんで失敗するかもしれない新しい技術入れなきゃいけないの? こうなるから新しい言語やシステムが導入出来ずに学習コストガーって言ってるだけです。 入社先の会社が見たこともない新技術採用して「それなりに上手く回っている」となれば話は変わります。 一人の内に理想の環境を描いて描き切りましょう。 人はそれに惹かれて入社したい、一緒に働きたい、私もこの技術に触れて成長したい!と感じるものです。 貴方が切り開いてください。 AWSのサーバレス周りに関して 機能の多くはAPIで叩けるので管理画面からガチャガチャ触らずに、 出来るだけコード・スクリプト化しておいて、GitHub ActionsやらDrone、Circle CI等で勝手にデプロイ出来るような仕組みづくりしましょう。 この作業による初速へのダメージは痛いですが、今後一生あなたが事ある毎に手を止めて管理画面でポチポチするのに比べれば100万倍マシです。 またコードにしてあれば最低限の技術力があるエンジニアなら勝手に読んで扱えるようになります。 サーバレスは今は過渡期なので辛いと思いますが、将来を見据えるなら避けては通れない道です。 納得して入ってくれるITエンジニアさんならば、モチベ下がるみたいなこともないと思いますよ。 > AWSの営業さんの件は初めて聞きました。 > ありがとうございます。ちょっと相談してみようかと思います。 読んでて思い出しましたが、AWSって代理店通すと若干安くなるんだったかな? 前務めていた会社でAWSの営業さん呼んだときにそういう話を聞きました。
tokuwgawa

2022/06/04 04:59

ご返信ありがとうございます。 私にない視点からのアドバイス本当にありがとうございます。 miyabi-sunのアドバイスも参考にもう一度考えてみようかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問