次の方法で共有


スタートアップのアーキテクチャ

スタートアップの構築は、製品に固有の課題です。 主要なタスクは、市場における製品やサービスとしてのイノベーションの場所を見つけることです。 このプロセスでは、イノベーションに組み込まれる複数の仮定をテストする必要があります。 スタートアップを成功させるには、これらの仮定を繰り返し処理し、製品と市場に適合するように成長させて拡張する必要があります。 この適合性が見つかった後は、市場の需要に合わせてスタートアップを拡張する必要があります。

さまざまなスタートアップのステージで、開発者、アーキテクト、最高技術責任者 (CTO) は、開発の個別のフェーズを処理します。 これらのステージでは、根本的に異なるアプローチとさまざまなテクノロジの選択が必要です。 タスクの一環として、スタートアップのフェーズを確立します。 そのフェーズに適合するテクノロジとアーキテクチャを選択します。

イノベーション ステージ

Kent Beck は、ソフトウェア製品のイノベーションの 3 段階のプロセス について説明しています。 これらのステージとは、探索展開、および抽出です。 このプロセスの異なる部分を次のグラフのように考えることができます。

製品開発の探索、拡大、抽出のフェーズを示すグラフ

Y 軸に "確実性/投資/変更のリスク"、x 軸に "時間" を使用して描画したシグモイド曲線を示すグラフ。 グラフでは、3 つの領域が強調表示されています。上向きに湾曲する前の最初の部分は "Explore (探索)"、シグモイド曲線が急上昇する部分は"Expand (拡張)"、高く安定している部分は "Extract (抽出)" というラベルが付けられています。

  • 探索段階は、緩やかな傾きで始まります。ここでは、何が機能するかを見つけるために試行します。 確実性は低く、投資は少なく、加えた変更のリスクも低くなります。

  • ある時点で、グラフの急速に上昇します。 この急速な増加は、展開ステージです。 確実性が大幅に増加し、投資も増えるため、認識されるリスクも増加します。

  • 最後に、グラフが平坦になると、抽出ステージになります。 確実性、投資、リスクはすべて高くなりますが、増加率は安定するようになります。

探索

スタートアップが探索ステージにある場合は、さまざまな製品アイデアに対して少しずつ時間と労力を費やす必要があります。 ほとんどのアイデアが正しくないという事実によって、探索が促進されます。 繰り返しと学習によってのみ、製品と市場への適合性を見つけることができます。 多くの小さな賭けをすることによって、努力が報われる製品のアイデアを見つけることを目指します。

このステージには規範が必要です。 少ない時間と労力で試すことができるアイデアに過剰に投資してしまうことがよくあります。 技術者は、特にこの罠に陥りがちです。 探索を容易にするアーキテクチャを選択するには、探索中であることを忘れないようにします。 現在の製品アイデアが、拡張できるものかどうかはまだわかっていません。

アーキテクチャの観点から、スピード、コスト、およびオプションを最適化できるサービスを選択します。 Azure App Service のようなマネージド サービスおよびサービスとしてのプラットフォーム (PaaS) を使用すると、複雑なインフラストラクチャについて心配することなくすぐに作業を始めることができます。 探索中に、無料のレベルとより小さいサイズのインスタンスを選択してコストを管理します。 コンテナーは、お客様に適したツールを使用した開発をサポートし、将来に向けて柔軟なデプロイ オプションを提供します。

最初のスタックを構築する

最初の製品バージョンと同様に、最初のテクノロジ スタックは、探索にしっかりと根付いている必要があります。 つまり、テクノロジ スタックは、労力を無駄にすることなく、迅速な製品の繰り返し処理を容易に実行できるものである必要があります。 現時点の質問に答えるために必要ではないインフラストラクチャやアーキテクチャに時間や労力を費やしたくはありません。

探索フェーズでは、スピード、コスト、およびオプションを最適化する必要があります。 スピードは、どれだけ迅速に、アイデアを構築して進めることができるか、または次のアイデアに進むことができるかを示します。 コストは、インフラストラクチャの実行に費やしたコストです。 オプションは、現在のアーキテクチャで、どれだけ迅速に方向転換できるかを示します。

コスト、スピード、オプションのバランスを取ることが重要です。 コストを重視しすぎると、スピードとオプションが制限されます。 スピードを重視しすぎると、コストが増加し、オプションが減少する可能性があります。 設計するオプションの数が多すぎると、構築が複雑になり、そのためにコストが増加し、スピードが低下します。

推奨される最初のテクノロジ スタックの使用を検討してください。 このアーキテクチャでは、実装を簡単にするために PaaS サービスを使用し、最小限のスケールで開始でき、成熟にともなってさまざまなテクノロジ スタックに簡単にデプロイできるコンテナーとオープンソーステクノロジを使用します。

Expand

スタートアップで探索を通じて成長できるものが見つかったら、ギアを拡張にシフトします。 製品と会社の継続的な成長に対する障害を取り除くことに重点を起きます。 技術的な観点からは、インフラストラクチャのスケールに関する課題を解決し、開発速度を向上させます。 目標は、新しい顧客のニーズを満たし、製品のロードマップを進めることです。

アーキテクチャを拡張する

製品を繰り返し処理する際に、アーキテクチャを拡張する必要がある分野を必然的に見つけることになります。 実行時間の長いタスクをバックグラウンドで実行したり、モノのインターネット (IoT) デバイスからの頻繁な更新を処理したりすることが必要になる場合があります。 製品にフルテキスト検索や人工知能を追加することが必要になる場合があります。

ロードマップ上の項目に対応するために、アーキテクチャの変更が必要になる場合があります。 これらの変更を早期に行いたいという誘惑に抵抗してください。 拡張によって、アーキテクチャとインフラストラクチャのコストの複雑さがバランス シートに追加されるリスクが生じます。

初期のスタートアップの段階では、アーキテクチャの拡張は、必要なものを必要なときに必要なだけ行う必要があります。 拡張では、次の仮説をテストするために必要なだけの時間と労力をかけるようにします。 複雑さを軽減するために拡張を削除できるように準備します。 顧客が使用していない製品の機能を探し、アーキテクチャを簡素化し、インフラストラクチャの支出を減らすことができる機会を見つけます。

アーキテクチャは、次のようなさまざまな方法で拡張できます。

抽出

抽出フェーズでは、市場機会の限界に近づいたときに、成長のペースが遅くなります。 前のフェーズで展開したために、失うものが多く存在するので、さらに注意が必要です。 抽出フェーズの特徴としては、マージンの拡大、コストの削減、および効率性の向上が挙げられます。 抽出フェーズでは、拡張フェーズで獲得した顧客向けの製品を損なわないように注意してください。

成長を処理し、スタックを成熟させる

製品と市場の適合性を達成したら、多くの需要によってアーキテクチャが推進されます。 使用量が増えると、負荷を処理するためにインフラストラクチャの拡張が必要になる場合があります 新しい企業のコンプライアンス要件のために、より大きな分離が必要になる場合があります。 これらの変更は、成功したアプリケーションの成熟における一般的なステップです。

成長に対処し、成熟度を増加させるために行う変更は、アーキテクチャの拡張とは異なります。 これらの変更は機能的な要件ではありませんが、規模の制限の解除に関連します。 規模の増加は、新規顧客の獲得、既存の顧客の使用量の増加、厳しい規制要件のために発生する可能性があります。

時期尚早な最適化の誘惑に抵抗してください。 継続的に製品を繰り返し処理して改善するのに役立つ、成長と成熟化のステップを確実に実行してください。

次のステップ