Continuous Deployment przy tworzeniu aplikacji mobilnych
Ciągła integracja i ciągłe dostarczanie (CI/CD) stały się naturalnym procesem w tworzeniu aplikacji webowych w ciągu ostatnich kilku lat. Firmy mogą teraz dostarczać aktualizacje produktów lub wprowadzać poprawki w systemie produkcyjnym wiele razy dziennie.
Zadanie to stało się o wiele łatwiejsze i niezawodne dzięki infrastrukturze wspomagającej deployment aplikacji webowych. Czy przekłada się to jednak na natywne aplikacje mobilne? Czy możliwe jest wydanie nowej aplikacji w krótkim czasie, biorąc pod uwagę proces akceptacji aplikacji, który spotkamy w wielu sklepach z aplikacjami?
W obu przypadkach odpowiedź brzmi „tak”. W tym artykule opiszę możliwe opcje dla natywnych aplikacji mobilnych.
Zainwestuj w infrastrukturę mobilną
Ciągła integracja oraz ciągłe dostarczanie nie są za darmo - czy to w przypadku aplikacji webowych, czy natywnych aplikacji mobilnych. Firmy muszą inwestować czas i pieniądze w infrastrukturę aplikacji mobilnych, aby móc dostarczać nową wersję natywnej aplikacji mobilnej na żądanie. Biorąc pod uwagę dostępne oprogramowanie i narzędzia, można to dość łatwo zrobić.
Na przykład, oprogramowania typu open source, takie jak Jenkins (jako system ciągłej integracji) i fastlane (jako oprogramowanie do budowania i podpisywania aplikacji) może stanowić lekki i zarazem mocny fundament, na którym można oprzeć infrastrukturę.
To będzie punkt wyjścia, by zbudować kanały dystrybucji aplikacji mobilnych, przy pomocy usług takich jak Testflight, AppCenter czy Firebase, które pomogą w fazie developmentu i testowania.
Inwestuj w automatyzację
Automatyzacja testów jest ściśle powiązana z ciągłą integracją i ciągłym dostarczaniem. Jeśli istnieje jakiś pipeline do budowania, kolejnym logicznym krokiem jest zainwestowanie czasu i pieniędzy w stworzenie pipeline'u automatyzacji testów.
Zautomatyzowane testy pomogą zespołowi szybciej otrzymywać feedback na temat zmian w bazie kodu na różnych warstwach architektury aplikacji mobilnych. Zespół może też szybko wdrożyć nowe wersje aplikacji dla testerów wewnętrznych lub zewnętrznych i poświęcić mniej wysiłku na testowanie ręczne.
W zależności od aplikacji zespoły będą mogły realizować automatyczne testy na różnych warstwach. Mogą istnieć testy jednostkowe, testy integracyjne, testy API i kompleksowe testy UI. Każdy zespół musi znaleźć odpowiednią kombinację testów, aby z jednej strony przyspieszyć proces rozwoju aplikacji, a z drugiej strony mieć większą pewność co do jakości nowych wersji.
Opcje dostarczania apek do sklepów z aplikacjami
Po wdrożeniu infrastruktury - razem z automatyzacją testów - niezwykle ważne jest, aby zespół programistów natywnych aplikacji mobilnych w pełni zrozumiał różnice między publikowaniem aplikacji w Apple App Store i Google Play Store - ponieważ jest ich kilka.
Największą różnicą jest proces sprawdzania aplikacji. Pomimo że każda aplikacja w sklepie Apple App Store wymaga zatwierdzenia przez Apple Review Team, to do Google Play Store aplikacje można przesłać natychmiast i zastąpić bieżącą apkę produkcyjną w ciągu kilku godzin.
Następnie należy się zastanowić, w jaki sposób aplikacje natywne mogą zostać udostępnione prawdziwym użytkownikom lub testerom. W obu sklepach z aplikacjami jest możliwość skorzystania ze stopniowego udostępniania nowej wersji. (iOS, Android). Dzięki temu zaktualizowana aplikacja nie trafia do wszystkich użytkowników naraz.
Dzięki temu zespół programistów może monitorować nową wersję pod kątem ewentualnych problemów i zatrzymać proces aktualizacji w przypadku pojawienia się problemu. Jeśli wolisz inne podejście, Google Play Store oferuje także opcje wydań alfa i beta.
Zrozumienie dostępnych opcji wydawania i testowania ma kluczowe znaczenie dla wyboru tych właściwych. Biorąc pod uwagę dostępne narzędzia do tworzenia i wydawania aplikacji mobilnych oraz opcje wdrażania oferowane przez każdy app store, to mamy dwie opcje:
Wewnętrzne CD
W takim przypadku oprogramowanie do wdrażania jest konfigurowane w taki sposób, że wszyscy z zespołu lub firmy otrzymują natychmiastowe aktualizacje najnowszych wersji aplikacji po przejściu testów i dostarczeniu nowej wersji aplikacji przez oprogramowanie do dystrybucji.
W zależności od wielkości firmy aplikacja będzie używana przez setki lub tysiące współpracowników, którzy mogą i powinni przekazywać feedback na temat bieżącego stanu aplikacji. Jest to możliwe bez udziału Apple'a lub Google'a, co daje zespołowi programistów pełną kontrolę.
Zewnętrzne CD
Dzięki takiej opcji Twój zespół może albo użyć własnej infrastruktury dystrybucji aplikacji mobilnych, albo wykorzystać infrastrukturę używaną przez Apple i Google. Wybór tego pierwszego wymaga zaproszenia istniejących klientów do systemu dystrybucji w celu dostarczenia nowej wersji aplikacji, co można usprawnić za pomocą takiego oprogramowania jak Testflight, AppCenter lub Firebase. Można też przyłączyć się do społeczności testerów z crowdsourcingiem, gdzie istnieje możliwość dodawania własnych urządzeń testerów do listy dystrybucyjnej.
Jest to idealna metoda, ponieważ można ją wykorzystać dla prawdziwych klientów i testerów bez procesu akceptacji wymaganego przez danych sklep z aplikacjami.
W przypadku aplikacji na Androida możesz skorzystać z infrastruktury dystrybucyjnej Google Play Store, która zapewnia kanały testowe alfa oraz beta. Umożliwia to publikowanie w kanale alfa maksymalnie 100 wewnętrznych, lub zewnętrznych klientów lub testerów na podstawie ich adresów e-mail.
Kanał beta nie określa limitu liczby testerów, których możesz zaangażować, i pozwala zdecydować, czy udostępnić go publicznie, czy tylko przez zaproszenie. Kanały alfa i beta można skonfigurować, by działały z continuous deployment. W przypadku aplikacji na iOS nie ma natomiast sposobu tworzenia wersji alfa lub beta swoich aplikacji.
Apple zapewnia stopniowy rollout, którego można używać do powolnego wydawania nowej wersji klientom oraz do śledzenia użycia i feedbacku od użytkowników.
Jeżeli opinie klientów są satysfakcjonujące, to zespół mobilny może przesłać nową wersję do danego sklepu z aplikacjami. Następnie zespół powinien zdecydować czy zastosować stopniowe wdrażanie tej wersji, czy nie.
Który rodzaj wdrożenia jest więc odpowiedni dla Twojej organizacji?
Continuous deployment aplikacji mobilnych nie obywa się bez kosztów. Nie ma jednego rozwiązania, które pasowałoby każdemu. Pipeline CI/CD powinien być traktowany jako coś unikalnego dla każdej firmy, no i wymaga czasu i pieniędzy na skonfigurowanie.
Pierwszym punktem jest sprawdzenie, czy posiadasz wymagane umiejętności i przygotowanie techniczne w zespole.
Jeśli macie wystarczającą wiedzę i Wasze środowisko techniczne jest gotowe na CI/CD, to nadszedł czas, abyś Ty i Twój zespół zdecydowali, które z wymienionych podejść najlepiej do Ciebie pasują.
Odpowiedz na niektóre z poniższych pytań, aby znaleźć właściwą metodę wdrażania:
- Czy masz wymagane umiejętności w swojej firmie, aby przygotować deployment pipeline?
- Czy posiadasz infrastrukturę do wdrażania aplikacji, której możesz ponownie użyć?
- Czy jesteś w stanie połączyć swoje systemy wewnętrzne z zewnętrznymi dostawcami?
- Dla kogo chcesz tworzyć wersje alfa i beta?