質問: ### 内容 創業時の技術選定として、様々なパブリッククラウド(AWS,GCP,Azure,国産クラウド)に対してどのような選択すればいいのか、 アドバイスをお願いしたいです。 ### 要件 ビジネス事項 * B TO B向けのサービスを企画しているため、急激なトラフィックはあまり想定していない * Salesforce(すごい規模は小さいですが)のようなビジネス用途で使うサービス * 上記ように多くの企業が使う想定 * いくらかかるのか、経費の見通しがしやすい * セキュリティ面で安全性は問題ないと顧客に説明したい * アクセスは一般的な就業時間が多いと想定 * 創業は2人のエンジニアでするため、運用についてあまり時間がさけない 技術事項 * アプリケーションエンジニアのみの構成なので、インフラについて多少分からなくもないが、専門ではない * 言語はJavaやScalaなどのJVM系の使用を検討 * データ損失の場合、即倒産に繋がるので絶対に避けたい * 顧客から依頼があった場合、すぐに環境構築が出来たい * OSはLinux系のOSSを使用 ### 優先事項 1. データの損失だけは絶対に避けたい 2. 費用の見通しがしやすい(安いに越したことはないが...) 3. 創業時のため、あまり運用に力を入れることが難しい ### 懸念事項 AWSを候補にして考えていたが、従量課金のため費用の見積もりが難しかった聞いた。 お金がないチームはキツいなど...
回答: 要件がこれでは多分判断できないかと。 まずは規模の想定ができるまで整理し、必要技術も合わせて記載できるぐらいまでできてギリギリかと。 その後、各社の営業を呼んで、提案させればいいです。 営業が来ない規模なのであれば、勉強会に出て相談窓口を訪ねるとか。 B TO B向けのサービスを企画していて、要件の整理がこれでは正直なかなか厳しいのではないかと思います。 どなたか、ちゃんと要件定義できる人を誘ったほうがイイですよ。 コメントへ追記した内容を移動1 ================ > > 既に稼働しているサービスではないのでベンチマークが取れないかつ、運用上での知見が貯まっていないためクラウドを選定するための要求定義が固まっていないところです。。 > > > 書いているのでわかっているのではないかと思いますが、上記を決めることが必要です。クラウドの利用は、インフラを自身で持たずサービスとして利用するだけであり、インフラの設計から開放されるわけでも、そのコスト計算から逃れられるわけでもありません。 インフラの要件定義ができ、かつ設計ができる人がいないとサービスは立ち上がらないですよ。早めに外部に解を求めるか引き込むかしないとだめだと思います。 ちなみに、多くのパブリッククラウドは従量課金であり、固定課金を望むのであれば、そこで選べる範囲はかなり絞られます。 また国内ベンダーを使用する場合、創立間もない会社は、会社の与信が問題になることも。*会社の基準にもよりますが、複数年の累積の支払いを前提に与信にかけるため、月あたりの契約金額はこちらが想定している以上に厳しい数字になっているケースがあります。 最後に、データの損失だけは絶対に避けたいという要望は、クラウドベンダーが解決すべき問題ではなく、game-cassette さんがシステムで解決すべき問題であり、重要なのであれば、まずはその仕組みづくりから始めるべきです。 コメントへ追記した内容を移動2 ================ 他の回答に思うところがあるので、補足しておきますね。 インフラの設計に関して これはご自身か近しい人で行うのがオススメです。ご協力者か信頼できる業者へおまかせしましょう。身近にいなければ、SaaS , PaaS を前提に、システムを組むべきです。どちらかの SaaS , PaaS を前提とし、その基板上で動くシステムとすることで、本業に割く時間を多く摂ることが出来ます。 人的リソースが少ないのに、最小規模の IaaS でサービスリリースすると、予期せぬトラブルに当たる可能性は高まり、それを解決するにも時間と金がかかります。意味不明なアクセスの増大で正常アクセスができなくなったり、思わぬCPU使用率の上昇の原因がつかめないなんてことは、ワリと発生します。知見がないのであれば、信頼できる丸投げ先を身近かシステムに求めるのが正解です。 あと、SIを主業務にしている会社に漠然とした質問で問い合わせるのはやめたほうがイイです。設計やコンサルティングにお金を払うならともかく、無料前提なのであれば、ひどくバカにした話です。余計な工数がかかるお客と判断されると、価格にプレミアがのることもあります。逆に各社の勉強会はそういった質問が来ることを前提に機会を設けてくれているので、積極的に活用して下さい。 データの損失を防ぐ 一つ前にも記載しましたが、インフラに機能を求めるのではなく、システムとして求めるべきモノです。データをどのように扱うのか?どのようなチェックを行い、どの権限で書き込み修正がなされ、それらのシステムはどういった仕組みで動くのか?マスターを作り、使用の際は常にレプリカを使用するとか、保存はバッチ処理とし、テンポラリな情報は入念にフィルタを掛けた上で、マスターに統合するのかとか、そういった損失を防ぐ仕組みを作った上で、はじめて要件が確定でき、インフラの設計が成り立ちます。サーバの冗長化ではデータの損失は防げません。逆に理解した上であれば、そこを割り切り、インフラとしてのバックアップに任せてしまう判断もありだとは思います。 セキュリティ 各社セキリティは FISC や PCI DSS にどこまで準拠しているか、回答を用意しているケースが多いです。 参考:AWS-金融機関等コンピュータシステムの安全対策基準 game-cassette さんの作るサービスもその基準で回答を用意すれば、顧客説明は容易かと。ただし、理解するのは独学では厳しいです。知っている人に相談するのが良いかと。