Projektowanie aplikacji internetowych z szybkością chmury

Projektowanie aplikacji internetowych z szybkością chmury

Projektowanie aplikacji internetowych

Chmury mogą poruszać się po horyzoncie w zwolnionym tempie, ale są to odrzutowe rakiety rozwijające projektowanie aplikacji internetowych. W dzisiejszym mobilnym, wszechobecnym i natychmiastowym świecie, firmy chmur biegną daleko przed tradycyjnymi firmami w pisaniu i tworzeniu kodu. Chmura umożliwiła firmom tworzącym aplikacje dedykowane osiągnięcie innowacyjności i wydajności oraz pogłębienie więzi z klientami.

Firmy zajmujące się tradycyjnym oprogramowaniem mają wiele do nauczenia się od firm projektujących aplikacje internetowe do chmury w zakresie uwalniania kreatywności twórców kodu. W rzeczywistości, podobnie jak wszystkie firmy tworzące produkty i usługi z wykorzystaniem oprogramowania. W dzisiejszym świecie, w którym aplikacje dedykowane są wbudowane w przedmioty codziennego użytku, oznacza to praktycznie wszystkie firmy.

W ramach naszych doświadczeń w zakresie projektowania aplikacji internetowych odkryliśmy cztery zasady, które kierują działaniem. Zasady te mogą pomóc bardziej tradycyjnym firmom zmodernizować swoje praktyki w zakresie tworzenia aplikacji.

Zasady projektowania aplikacji internetowych z szybkością chmury
  • Niszczenie silosów. Firmy są odpowiedzialne za tworzenie oprogramowania od początku do końca. Rozwój, testowanie, operacje, oprzyrządowanie danych i analiza operacyjna - wszystko to składa się na wspólnego lidera, tworząc jeden punkt odpowiedzialności.
  • Oprogramowanie, które stale jest rozwijane. Wiele firm nadal traktuje każde wydanie oprogramowania jako pojedyncze wydarzenie, a następnie przechodzi do następnego dużego projektu. Firmy pracujące w chmurze zamiast tego uruchamiają usługi ze świadomością, że będą stale aktualizować swój kod. Aby dostosować się do tej zmiany, musi być modułowe i luźno sprzężone ze sobą.
  • Automatyzacja tworzenia aplikacji internetowych. Tradycyjne tworzenie oprogramowania ma zbyt wiele przestojów oraz charakteryzuje się ręcznym sprawdzaniem i testowaniem. Firmy pracujące w chmurze intensywnie inwestują w automatyzację, aby poprawić swoją wydajność i w konsekwencji jakość oprogramowania.
  • Komunikacja z klientami. Dla firm chmury obliczeniowej, klient nie jest abstrakcyjną koncepcją, ale złożonym w czasie i stale zmieniającym się zespołem rzeczywistych zachowań, użytkowania i preferencji. Firmy zainwestowały znaczne środki w miary, które zapewniają przegląd w czasie rzeczywistym do danych. Danych, które są niedostępne za pomocą bardziej tradycyjnych metod przekazywania informacji zwrotnych od klientów. Te spostrzeżenia pokazują firmom, w jaki sposób klienci korzystają z ich produktów i usług, co pozwala firmom projektować aplikacje internetowe, które dokładnie odpowiadają potrzebom klientów, a nawet wyprzedzają ich oczekiwania.

Wspólnie, zasady te spychają podejmowanie decyzji w dół organizacji, umożliwiając twórcom oprogramowania posiadanie własnego kodu, zrozumienie klientów i ciągłe doskonalenie ich usług. Eliminują one również tradycyjne kompromisy, które od dawna cechują rozwój oprogramowania. Firmy pracujące w chmurze są innowacyjne i zorganizowane; są zwinne, nie rezygnując z jakości tworzonych aplikacji.

Projektowanie aplikacji internetowych - niszczenie silosów

Aplikacje internetowe są tradycyjnie rozwijane sekwencyjnie, a metodologia rozwoju aplikacji - waterfall służy jako sposób rozwoju aplikacji. Oddzielne grupy tworzą, projektują, budują, testują, uruchamiają, utrzymują i rozwijają oprogramowanie, przy czym każda grupa czeka na zakończenie pracy poprzedniej grupy.

Ta konfiguracja jest obarczona wysokimi kosztami transakcyjnymi. Projektanci aplikacji mogą spędzać więcej czasu siedząc na spotkaniach zarządzając dokumentami projektowymi i ustalając międzywydziałowe porozumienia niż na pisaniu i testowaniu kodu. Spory pomiędzy tymi grupami są często odkrywane na końcu projektu i muszą być rozwiązywane przez kierownictwo wyższego szczebla.

Organizacje zajmujące się rozwojem aplikacji w chmurze są płaskie. Wiele z ich funkcji podlega temu samemu menedżerowi. Ponadto, inżynierowie w zespołach tworzących chmurę często opracowują, testują, wdrażają i utrzymują własne aplikacje dedykowane lub usługę.

W tej konfiguracji poszczególni współpracownicy mają lepsze wyczucie, jak ich decyzje wpływają na ogólny rozwój oprogramowania. Jest mniej opóźnień i przestojów.

Projektowanie aplikacji internetowych – zarzadzanie projektem

W wielu tradycyjnych firmach tworzących aplikacje internetowe menedżerowie kierują określonymi funkcjami lub dyscyplinami, takimi jak rozwój lub testowanie. Niezamierzoną konsekwencją tego typu systemów jest złożoność oprogramowania. Aplikacje dedykowane odzwierciedla kontekst organizacyjny, w którym są tworzone. Dedykowane aplikacje internetowe biorą na siebie zamieszanie, które wynika z kompromisów, ograniczeń, słabej komunikacji i konkurencyjnych sił organizacyjnych. Co najbardziej szkodliwe, nie ma większego poczucia własności. W rzeczywistości, statyczny plan, który często jest nieaktualny krótko po jego napisaniu, determinuje wynik, a nie bliskie powiązania z klientami. Osoba podejmująca ostateczną decyzję jest znacznie bliżej CEO niż firm rozwojowych.

W organizacjach zajmujących się rozwojem chmury menedżerowie zazwyczaj kierują firmami ds. produktów wielofunkcyjnych, a nie funkcjonalnymi silosami. Wszystkie funkcje wymagane do dostarczenia do nich raportu z produktu lub usługi. Ponadto, liderzy ci są odpowiedzialni za realizację przychodów i ogólne podejście do marketingu, sprzedaży i kanałów. W przypadku konieczności dostosowania się do zmian na rynku lub zapotrzebowania klientów, mają oni prawo do dysponowania zasobami bez czasochłonnych i nieekonomicznych negocjacji z innymi częściami organizacji.

Projektowanie aplikacji internetowych - nowe role i obowiązki

Konwencjonalna mądrość i praktyka nakazują, aby firma projektująca aplikacje internetowe oddzielała funkcje związane z rozwojem, testowaniem i obsługą oprogramowania. Programiści są podobni do "Mavericka", twórczego lidera podejmującego ryzyko, podczas gdy testerzy stanowią tło, jako niezawodni pomocnicy. Ten podział pracy został stworzony w celu promowania odpowiedzialności za każdy rodzaj działalności. Zamiast tego, powodował koszty ogólne firmy.

Konwencjonalna mądrość jest zła. Firmy pracujące w chmurze opracowały rolę inżynierii oprogramowania, która jest odpowiedzialna nie tylko za pisanie, ale także za testowanie i wdrażanie funkcji aplikacji internetowych. Idea oddania kontroli operacyjnej tradycyjnym programistom może być zniechęcająca, więc firmy tworzące aplikacje w chmurze budują automatyczne barierki ochronne, aby zapewnić wysoką jakość testowania i wdrażania pomimo demokratyzacji kontroli. Odkryły, że korzyści w zakresie produktywności i jakości takiego sposobu organizacji projektu zwykle przeważają ryzyka. W końcu, kto może lepiej naprawić kod aplikacji niż osoba, która pomogła go napisać?

W miarę jak programiści tworzący aplikacje dedykowane przyjmują na siebie bardziej tradycyjną rolę testowania, pojawiła się nowa rola "inżynierii jakości end-to-end". Inżynierowie w tej roli nieustannie powielają i testują doświadczenia klientów, aby zapewnić, że interfejs użytkownika, szybkość, czas reakcji i ogólna jakość są zachwycające dla klientów. Rola ta jest kluczowa, w miarę jak środowiska klientów stają się coraz bardziej złożone i rozdrobnione. Firmy tworzące aplikacje dedykowane muszą zapewnić, że ich oprogramowanie działa w chmurach publicznych, prywatnych, na serwerach lokalnych, komputerach stacjonarnych, urządzeniach przenośnych i wielu systemach operacyjnych. Inżynierowie ds. jakości są za to odpowiedzialni przed, w trakcie i po uruchomieniu aplikacji dedykowanych.

Rola kierownika produktu zmienia się również zasadniczo w firmach tworzących aplikacje internetowe w chmurze, ponieważ inżynierowie aplikacji dedykowanych przyjmują na siebie większą odpowiedzialność za planowanie i zarządzanie rozwojem. Kierownik produktu nie jest już odpowiedzialny tylko za "trafienie na datę", ale także za biznesowy i operacyjny sukces aplikacji dedykowanej. Musi on przyjąć na siebie bardziej strategiczną, analityczną i techniczną rolę. Menedżer produktu definiuje hipotezy i funkcje, które mogą być testowane, ustala priorytety ich rozwoju i na bieżąco monitoruje rzeczywiste wykorzystanie tych funkcji. Jest on odpowiedzialny za informowanie i szkolenie personelu sprzedaży i marketingu, tworzenie programów partnerskich, opracowywanie planów cenowych oraz monitorowanie realizacji cen.

Rola badaczy danych staje się również coraz bardziej powszechna w firmach chmurowych. Ich wyłączną odpowiedzialnością jest interpretacja napływającego strumienia informacji. W przeciwieństwie do deweloperów, nie są oni stronniczy w stosunku do konkretnych funkcji i służą jako uczciwi brokerzy, aby określić, które z pojawiających się trendów będą miały największy wpływ.

Projektowanie aplikacji internetowych –rozwój aplikacji dedykowanych

Aby zbudować aplikacje dedykowane w chmurze, nie wystarczy po prostu stworzyć nowe struktury organizacyjne i role, które ułatwiają ciągły rozwój i stałą aktualizację. Firmy potrzebują również architektury oprogramowania, która pozwoli firmom w chmurze działać szybko i niezależnie.

Aplikacje dedykowane w chmurze, w rzeczywistości, często składają się z dosłownie setek mikro usług. Organizacje zajmujące się rozwojem chmury tworzą małe firmy - zazwyczaj tylko 10 do 15 członków - które są odpowiedzialne za konkretny moduł lub usługę aplikacji internetowych. Firmy te są w stanie wydawać swoje aplikacje dedykowane niezależnie. Jeśli dana usługa potrzebuje większego zespołu, to prawdopodobnie nie został on podzielony na wystarczająco małe części składowe.

Projektowanie aplikacji internetowych – zespół

Wszystkie firmy tworzące aplikacje internetowe nie są obsadzone w równym stopniu. Firmy stosują te same zasady, ale ich skład różni się znacznie w zależności od rodzaju tworzonych aplikacji dedykowanych. W ramach naszych doświadczeń odkryliśmy, że aplikacje dedykowane można podzielić na cztery archetypowe kategorie na podstawie złożoności interakcji z klientem oraz tego, kto (firma lub klient) kontroluje wdrożenie aplikacji dedykowanej.

Wspólnym punktem odniesienia dla firm tworzących aplikacje dedykowane jest stosunek tradycyjnych programistów - których nazywamy "inżynierami funkcji" - do innych członków zespołu.

Gdy firma tworzących aplikacje dedykowane wewnętrznie kontroluje aplikację lub usługę, np. aplikacje dedykowane w chmurze konsumenckiej, programiści mogą bezpośrednio pisać, uruchamiać, śledzić i dostosowywać kod bez angażowania klienta. Zmniejsza to zapotrzebowanie na kompleksowych inżynierów jakości.

Z drugiej strony, gdy klient kontroluje i wdraża aplikację dedykowaną lub usługę, inżynierowie zajmujący się funkcjami mają mniejsze możliwości rozwoju oprogramowania po uruchomieniu i muszą zająć się bardziej rozdrobnioną bazą użytkowników. W związku z tym inżynierowie ds. jakości są niezbędni, aby służyć jako pośrednik w zaspokajaniu potrzeb klientów i monitorowaniu wdrożeń.

Model ten odnosi się do poszczególnych mikro usług, które składają się na aplikację dedykowaną, a nie do samego produktu. Pojedynczy produkt będzie często posiadał usługi, które mieszczą się we wszystkich czterech kategoriach. Na przykład, firma wprowadzający aplikację na iPhone'a będzie miał zupełnie inny skład niż firma odpowiedzialny za uruchomienie podstawowej infrastruktury serwerowej aplikacji.

Projektowanie aplikacji internetowych - architektura modułowa

W celu wsparcia takich zdecentralizowanych struktur zespołowych, firmy tworzące aplikacje dedykowane zajmujące się rozwojem chmury budują luźno powiązane moduły oprogramowania, które płynnie współpracują z innymi modułami. Luźno powiązane moduły zazwyczaj znajdują się na szczycie stabilnego oprogramowania infrastrukturalnego. Takie podejście pozwala programistom na elastyczną pracę - dodawanie, wymianę i zmianę poszczególnych modułów przy jednoczesnym zachowaniu wysokiej jakości i niezawodności.

W tym środowisku firmy nie są już zmuszone do wprowadzania na dużą skalę aktualizacji rocznych lub kwartalnych. Bez konieczności zarządzania złożoną integracją oprogramowania, firmy pracujące w chmurze mogą wdrażać nowe funkcje aplikacji dedykowanych, gdy tylko będą gotowe. Funkcje, które nie są gotowe w czasie premiery, są przełączane, aby kontrolować to, co klient widzi, zachowując jednocześnie integralność kodu dla łatwiejszej kontroli wersji aplikacji.

Projektowanie aplikacji internetowych - automatyzacja

Automatyzacja promuje szybkość rozwoju oprogramowania w chmurze, pozwalając firmom na częste i niezależne uruchamianie przy zachowaniu wysokiej jakości produktów. Często to właśnie one oddzielają najlepsze firmy tworzące dedykowane aplikacje internetowe od reszty branży.

Firmy pracujące w chmurze intensywnie inwestują w narzędzia, aby zapewnić, że błędy i usterki są szybko wychwytywane. Za pomocą jednego kliknięcia można sprawdzić, przetestować i wdrożyć kod programisty. Automatyka służy jako siatka bezpieczeństwa, która powiadamia programistów o małych problemach zanim staną się one duże. Systemy te nie są tanie, ale są krytyczne dla firm, które chcą utrzymać jakość.

Nowe produkty są zazwyczaj wydawane w formie modułów, które są tak wdrażane, że tylko niewielka część klientów otrzymuje aktualizację. Jeśli aplikacje dedykowane napotykają na problemy, zautomatyzowany system może szybko wycofać się z wdrożenia bez wpływu na całą bazę klientów. Jeśli aplikacje dedykowane działają zgodnie z oczekiwaniami, są automatycznie wdrażane kolejno do większych grup użytkowników i regionów, aż do osiągnięcia pełnego wykorzystania w firmie.

Automatyzacja wdrażania aplikacji dedykowanych zwiększa wydajność firm tworzących aplikacje poprzez skrócenie czasu, jaki spędzają one na wykonywaniu zadań ręcznych, takich jak odprawa, testowanie i wdrażanie. Przestój ten może sięgać od 20 do 30 procent - lub więcej niż jeden dzień w tygodniu, gdy programiści nie wykorzystują swojej kreatywności.

Projektowanie aplikacji internetowych - klienci

Najskuteczniejsi twórcy aplikacji dedykowanych nie siedzą w wieży, wyobrażając sobie, czego chcą klienci. Doskonale rozumieją funkcje, których używają klienci i napotykane przez nich problemy. Firmy te intensywnie inwestują w mechanizmy, które generują wskaźniki użytkowania w czasie rzeczywistym i stale monitorują te dane. Pulpity wskaźników operacyjnych są zazwyczaj aktualizowane co minutę, podczas gdy pulpity wskaźników biznesowych są aktualizowane codziennie. Kod od tych firm jest napisany w sposób, który pozwala na gromadzenie szczegółowych danych i korzystanie z nich.

Nie powinno nikogo dziwić, że firmy tworzące aplikacje dedykowane w chmurze nie polegają na "przeczuciu" przy podejmowaniu decyzji. Testują one hipotezę i mierzą wynik poprzez częste iteracje i testy A/B, które porównują użycie identycznego oprogramowania z wyjątkiem jednej sytuacji. W organizacjach chmurowych nawet marketing, dokumentacja i podejście do sprzedaży są testowane w ten sposób.

Firmy w chmurze są również demokratyczne w rozpowszechnianiu informacji. Wyniki testów oraz inne wskaźniki operacyjne i użytkowe są dostępne dla każdego w firmie, otwierając drzwi dla innowacyjnego myślenia i krzyżowego zapylania pomysłów.

Projektowanie aplikacji internetowych – istotne elementy mają znaczenie

Aby osiągnąć przełom w rozwoju oprogramowania, musisz mieć wdrożone wszystkie cztery zasady.

Starannie oprzyrządowany kod pozwala firmom działającym w chmurze na śledzenie wykorzystania i wydajności w celu zrozumienia reakcji rynku na ich oprogramowanie. Sposób, w jaki kod jest napisany, w rzeczywistości przybliża je do klientów. Modułowe aplikacje dedykowane przyspieszają czas reakcji programistów. Aby szybko reagować na potrzeby klientów, mogą oni tworzyć i uruchamiać nowy kod bez konieczności oczekiwania na aktualizację pozostałych modułów. Automatyzacja przyśpiesza czas opracowywania i wydajność, pozwalając programistom na szybkie wydanie kodu, zamiast czekać, aż inne firmy nadrobią zaległości.

Wspólnie, modułowe aplikacje dedykowane oraz automatyzacja tworzą podstawy do tego, aby firmy programistyczne były w pełni odpowiedzialne za swój kod, co poprawia innowacyjność, reakcję klientów oraz zaangażowanie pracowników.

Firmy zajmujące się tradycyjnym oprogramowaniem mogą nie potrzebować przyjmować czystego modelu chmury. Powinny one jednak starać się być szybsze i bardziej innowacyjne w swoich działaniach rozwojowych.

Nie tylko talent i dotychczasowe systemy, struktury i procesy uniemożliwiają firmom pełne przyjęcie modelu rozwoju chmury. Jest on również nastawiony na myślenie. Firmy muszą być chętne do przełamania historycznego podziału między rozwojem oprogramowania, a testowaniem oraz do rozszerzenia ról i obowiązków inżynierów oprogramowania. Muszą postrzegać testowanie jako bieżącą funkcję, a nie myślenie. Muszą być skłonne do znacznych inwestycji w szkolenia, automatyzację i dane.

Projektowanie aplikacji internetowych - transformacja cyfrowa

Sukces firmy ostatecznie zależy od jej liderów. Musisz zakwestionować konwencjonalne sposoby pracy i przekazać podejmowanie decyzji w dół organizacji. Musisz dać swoim najlepszym programistom powód, aby byli podekscytowani pójściem do pracy rano i pozostaniem do późna w nocy. Im bardziej zbliżysz się do przyjęcia modelu rozwoju chmury, tym większy sukces osiągniesz w osiągnięciu swojego celu, jakim jest innowacyjność i szybkość.

Powiązane artykuły