Architektura dla startupów
Tworzenie startupu to wyjątkowe wyzwanie. Głównym zadaniem jest znalezienie miejsca dla innowacji jako produktu lub usługi na rynku. Ten proces wymaga testowania wielu założeń wbudowanych w innowacje. Udany startup musi iterować poprzez te założenia i rozwijać i skalować, gdy jego produkt zyskuje produkt i dopasowanie do rynku. Po znalezieniu tego dopasowania startup musi skalować się, aby uchwycić popyt na rynku.
Na różnych etapach życia startowego deweloperzy, architekci i dyrektorzy techniczni (CTO) obsługują różne fazy rozwoju. Te etapy wymagają zasadniczo różnych podejść i różnych wyborów technologicznych. Częścią zadania jest ustalenie fazy uruchamiania. Wybierz technologie, podejścia i architektury, które pasują do tej fazy.
Etapy innowacji
Kent Beck opisuje trzyetapowy proces innowacji w zakresie produktów oprogramowania. Te etapy to eksplorowanie, rozwijanie i wyodrębnianie. Różne części tego procesu można traktować jako wykres:
Wykres przedstawiający krzywą sigmoidową wykreśloną na osi y "Pewność/Inwestycje/Ryzyko zmiany" i oś x "Czas". Wykres ma trzy wyróżnione obszary: początkowa część przed przegięciami w górę oznaczona etykietą "Eksploruj", górną część wzrostu krzywej sigmoidalnej z etykietą "Rozwiń" i plateau oznaczonym etykietą "Extract".
Etap Eksploruj rozpoczyna się od niskiego nachylenia, gdzie próbujesz znaleźć, co działa. Pewność jest niska, inwestujesz tylko małe kwoty, a ryzyko wprowadzania zmian jest również niskie.
Po znalezieniu dopasowania do rynku produktów wykres rośnie szybciej. Ten szybki wzrost jest etapem Rozwiń . Twoja pewność znacznie się zwiększa, inwestujesz o wiele więcej i jesteś o wiele bardziej świadomy ryzyka.
Na koniec, gdy wykres spłaszcza się i start osiągnie dojrzałość, osiągniesz etap Wyodrębnij . Pewność, inwestycje i ryzyko zmiany są wysokie, ale tempo wzrostu osiągnęło płaskowyż.
Dodatkowe informacje
Gdy startup znajduje się na etapie eksploracji, twoim imperatywem jest zainwestowanie niewielkiej ilości czasu i nakładu pracy na wiele różnych pomysłów na produkt. Fakt, że większość pomysłów nie będzie właściwa, napędza eksplorację. Tylko iterując i ucząc się, można znaleźć odpowiedni produkt i rynek. Robiąc wiele małych zakładów, dążysz do znalezienia pomysłu produktu, który się opłaca.
Ten etap wymaga dyscypliny. Łatwo jest przeinwestować w pomysł, że można testować z mniejszym czasem i energią. Technolog uważa, że szczególnie łatwo wpaść w tę pułapkę. Aby dokonać wyborów architektonicznych, które ułatwiają eksplorację, pamiętaj, że eksplorujesz. Nie wiesz jeszcze, czy bieżący pomysł produktu jest taki, który będzie skalowany.
Z perspektywy architektury wybierz usługi zoptymalizowane pod kątem szybkości, kosztów i opcji. Użyj usług zarządzanych i platform jako usługi (PaaS), takich jak usługa aplikacja systemu Azure, aby szybko rozpocząć pracę bez obaw o złożoną infrastrukturę. Zarządzaj kosztami, wybierając warstwy bezpłatne i mniejsze rozmiary wystąpień podczas eksplorowania. Kontenery obsługują programowanie przy użyciu dowolnego narzędzia, które mają sens, i zapewniają elastyczne opcje wdrażania na przyszłość.
Tworzenie pierwszego stosu
Podobnie jak w przypadku pierwszej wersji produktu, pierwszy stos technologii powinien być mocno zakorzeniony w eksploracji. Oznacza to, że stos technologii powinien ułatwić szybką iterację produktu bez marnowania wysiłku. Nie chcesz poświęcać czasu ani wysiłku na infrastrukturę lub architekturę, która nie jest wymagana do odpowiadania na bieżące pytania.
W fazie eksploracji należy zoptymalizować szybkość, koszty i opcjonalnie. Szybkość polega na tym, jak szybko można zbudować i przejść do przodu z pomysłem lub przejść do następnego pomysłu. Koszt polega na tym, ile wydajesz na uruchomienie infrastruktury. Opcjonalnie opisano, jak szybko można zmienić kierunek, biorąc pod uwagę bieżącą architekturę.
Ważne jest, aby równoważyć koszty, szybkość i opcjonalność. Zbyt duże skupienie się na ograniczeniach kosztów i opcjonalności. Zbyt duży nacisk na szybkość może prowadzić do zwiększenia kosztów i mniejszej liczby opcji. Projektowanie zbyt wielu opcji zwiększa złożoność, co zwiększa koszty i zmniejsza szybkość.
Rozważ użycie sugerowanego pierwszego stosu technologii. Ta architektura korzysta z usług PaaS w celu ułatwienia implementacji, można rozpocząć od minimalnej skali i używać technologii kontenerów i open source, które można łatwo wdrożyć na różnych stosach technologicznych w miarę dojrzewania.
Rozwiń
Gdy startup znajdzie dopasowanie do rynku produktów i kolejny wzrost poprzez eksplorację, przenosisz koła zębate do ekspansji. Koncentrujesz się na usuwaniu wszelkich blokad do ciągłego wzrostu produktu i firmy. Z perspektywy technicznej można rozwiązywać problemy ze skalowaniem infrastruktury i zwiększać szybkość programowania. Celem jest spełnienie potrzeb nowych klientów i opracowanie planu rozwoju produktu.
Rozszerzanie architektury
Podczas iterowania produktu nieuchronnie znajdziesz obszary, w których twoja architektura wymaga rozszerzenia. Może być konieczne ukończenie długotrwałych zadań w tle lub obsługa częstych aktualizacji z urządzeń internetu rzeczy (IoT). Może być konieczne dodanie wyszukiwania pełnotekstowego lub sztucznej inteligencji do produktu.
Może być konieczne wprowadzenie zmian architektury, aby uwzględnić elementy w harmonogramie działania. Oprzeć się pokusie wprowadzenia tych zmian zbyt daleko z wyprzedzeniem. Rozszerzenia mogą zwiększać złożoność architektury i kosztów infrastruktury do bilansu.
Na wczesnych etapach uruchamiania każde rozszerzenie architektury powinno być typu just-in-time. Rozszerzenie powinno zająć tylko tyle czasu i energii, ile potrzeba, aby przetestować następną hipotezę. Przygotuj się do usunięcia rozszerzeń, aby zmniejszyć złożoność. Poszukaj funkcji produktów, których klienci nie używają jako możliwości uproszczenia architektury i zmniejszenia wydatków na infrastrukturę.
Architekturę można rozszerzyć na wiele sposobów, takich jak:
- Dodawanie sztucznej inteligencji za pośrednictwem rozszerzonej generacji pobierania (RAG)
- Zwiększanie odporności za pomocą wdrożenia strefowo nadmiarowego
- Zwiększanie odporności dzięki wdrożeniu o wysokiej dostępności w wielu regionach
- Zwiększanie bezpieczeństwa za pomocą stosu technologii ze wzmocnionym zabezpieczeniami sieci
Wyodrębnianie
W fazie wydobycia tempo wzrostu spowalnia, gdy osiągniesz granice szansy rynkowej. Ponieważ rozszerzono cię przez poprzednią fazę, jest teraz wiele do stracenia, więc podejście jest bardziej ostrożne. Rozszerzanie marży, obniżenie kosztów i ulepszenia wydajności charakteryzuje fazę wyodrębniania. W fazie wyodrębniania należy zachować ostrożność, aby nie naruszyć bezpieczeństwa produktu dla klientów, którzy wygrali w fazie rozszerzania.
Obsługa wzrostu i dojrzewania stosu
Gdy produkt osiągnie dopasowanie do produktu i rynku, wiele wymagań napędza swoją architekturę. Zwiększone użycie może wymagać skalowania infrastruktury w celu obsługi obciążenia. Nowe wymagania dotyczące zgodności przedsiębiorstwa mogą wymagać większej izolacji. Te zmiany są typowymi krokami dojrzewania pomyślnej aplikacji.
Zmiany wprowadzone w celu obsługi wzrostu i dodawania dojrzałości różnią się od rozszerzania architektury. Te zmiany nie są wymaganiami funkcjonalnymi, ale odnoszą się do odblokowywania skali. Zwiększona skala może pochodzić od nowych klientów netto, zwiększonego użycia od istniejących klientów i klientów z wyższymi wymaganiami prawnymi.
Oprzeć się pokusie przedwczesnego optymalizowania. Pamiętaj, aby wykonać kroki wzrostu i dojrzewania, które mogą pomóc w kontynuowaniu iteracji i ulepszaniu produktu.
Następne kroki
- Zobacz i wdróż przykładową architekturę stosu uruchamiania Core.