Sytuacja kobiet w IT w 2024 roku
19.06.20194 min
Prasann Shah

Prasann ShahFounder & CTOShipmnts

A gdyby tak... zbudować aplikację Electron?

Sprawdź, kiedy postawienie na aplikację Electron może się okazać naprawdę złym wyborem.

A gdyby tak... zbudować aplikację Electron?

Tak wyglądała destrukcja delikatnego Windowsa, w trakcie działania naszej aplikacji.

Electron wydaje się być niesamowitą technologią. Liczba obecnie tworzonych w niej aplikacji jest tego świadectwem. Ale jeśli spojrzysz na najbardziej udane Electronowe aplikacje, są one zazwyczaj wspierane przez inżynierów skupionych wyłącznie na optymalizacji Electrona i upewnieniu się, że aplikacja nie zakończy się awarią komputerów klienta.

Wyobraź sobie startup, który dopiero zaczyna swój pierwszy POC lub po prostu stara się ruszyć z miejsca. W takim startupie chcesz się skupić przede wszystkim na rozwiązaniu problemów, nad którymi pracujesz - nic więcej. Absolutnie nie masz zasobów ani czasu na rozwiązywanie problemów, które nie są podstawą Twojej działalności.

Mówiąc najprościej, jeśli masz wystarczającą ilość zasobów, aby całkowicie skoncentrować się na optymalizacji pracy na komputerze, Electron może się okazać świetnym narzędziem dla Ciebie. Ale nie jest tak w przypadku większości startupów, które spotkałem. Są to głównie front-endowcy, nieświadomi złożoności systemów podczas pracy z wysokim wykorzystaniem pamięci RAM lub minimalizacją komunikacji między procesami.

W naszym przypadku podjęliśmy wyzwanie zbudowania korporacyjnego produktu SaaS przy użyciu Electrona, w zespole składającym się z pięciu front-endowych ninja. Mieliśmy wystarczającą wiedzę na temat tworzenia wspaniałych aplikacji przy użyciu magii JS, React, CSS i UX. Byliśmy całkowicie nieświadomi i nieprzygotowani na wyzwania, przed którymi mieliśmy stanąć, tworząc aplikację Electronową.

W tym artykule nie będę wymieniał zalet używania Electrona. Będę raczej skupiał się na wadach Electrona i ogólnie każdej aplikacji komputerowej. Oto lista wyzwań, które spisałem na podstawie naszych doświadczeń w tworzeniu naszej aplikacji Enterprise SaaS w Electronie.

Komunikacja międzyprocesowa (IPC)

Każda przechowywana lokalnie informacja jest przekazywana z powrotem do głównego procesu w celu przechowywania na dysku

Budujemy naszą aplikację, rozważając możliwość pracy w trybie offline, jako nasz główny cel. Użyliśmy RxDB jako naszej bazy danych i co kilka minut wszystkie informacje były synchronizowane między naszymi serwerami a lokalną bazą danych. To polegało w dużej mierze na systemie użytkownika, który musiał szybko zapisywać dane. Ale jak się okazuje, wielu naszych użytkowników ma kiepskie systemy, w których zapisy odczytu dysku są bardzo powolne (dyski twarde 5400 rpm!). Doprowadziło to do problemów z wydajnością systemów.

Rozważmy maszynę z 4 GB RAMu i z dwurdzeniowym procesorem, z uruchomionym Chromem, Outlookiem, Excelem i otwartą aplikacją Electronową. Nie trudno się domyślić, że systemy prawie ulegały awarii. Wykonanie pracy stało się niemożliwe dla każdego użytkownika.

Później zoptymalizowaliśmy odczyt/zapis, przenieśliśmy zapisy do procesów w tle, zmniejszyliśmy zapotrzebowanie na offline z przechowywaniem tylko istotnych danych itp. Ale zajęło to wiele miesięcy ukierunkowanej optymalizacji i refaktoryzacji, które moglibyśmy poświęcić na produkt i problem.

Wykorzystanie pamięci RAM

Wyobraź sobie, że Chrome otwiera się na Twoim komputerze razem z trzema innymi aplikacjami Electronowymi

Electron uruchamia proces w Chromium i renderuje JS i HTML w oknie. To tak, jakby uruchomić kolejną instancję Chrome na maszynie, która może nie być w stanie zapewnić Ci wystarczających zasobów.

Chromium pożera pamięć jak szalony - to nigdy nie było tajemnicą. Zdając sobie sprawę z tego faktu, zmusiliśmy naszych klientów do wyboru lepszych maszyn, ale biorąc pod uwagę listę tarć, z którą już mieliśmy sobie radzić w procesach onboardingowych, zwiększyło to ją jeszcze bardziej.

Wolniejsze cykle wydania

Gdy dopiero zaczynasz, potrzebujesz prędkości. Musisz wydać produkt tak szybko, jak to możliwe, a pojawią się również liczne błędy produkcyjne, które należy rozwiązać jeszcze szybciej.

Ale biorąc pod uwagę, że najmniejsza aplikacja Electronowa, jaką możemy w ogóle stworzyć, będzie ważyć minimum 100 MB, a każda poprawka błędu będzie kolejną wersją, która była automatycznie aktualizowana przez ponowne pobranie tego samego na każdym komputerze użytkownika, to poważnie spowolniło nasz cykl wydawniczy.

Ostatecznie opóźniliśmy wydawanie poprawek błędów, ponieważ użytkownicy skarżyli się, ile razy muszą aktualizować naszą aplikację. Ponadto w niektórych organizacjach użytkownicy końcowi nie mieli uprawnień do instalowania nowych aplikacji. Co oznaczało, że nie mieli też uprawnień do aktualizacji. Oznaczało to, że informatycy w organizacjach musieli aktualizować się na każdym komputerze użytkowników, powodując dużo frustracji.

Stronniczość pulpitu

Gdy użytkownik systemu Windows instaluje aplikację pulpitu, istnieje pewna podstawowa stronniczość. Przyzwyczaili się do błyskawicznych interfejsów opartych na prostych aplikacjach .Net i serwerach obsługiwanych lokalnie.

Postawienie ich przed aplikacją Electronową zbudowaną w JS i HTML (która jest znacznie wolniejsza niż odpowiednik), spowodowała niedopasowanie oczekiwań.

Testowanie wydajności

Nie ma zbyt wielu możliwości testowania aplikacji Electronowych pod kątem wydajności. Proces renderowania można przetestować przy użyciu standardowych frameworków i profilera Chromium. Ale jeśli chcesz przetestować aplikację za pomocą komunikatów IPC i głównego zużycia pamięci procesowej podczas interakcji z określonym ekranem, musisz opracować coś niestandardowego.

To niestety oznaczało również, że problemy z wydajnością debugowania w Electronie okazały się poważnym wyzwaniem.

Spędziliśmy niezliczoną ilość godzin, debugując problemy z wydajnością występujące w systemie, łącząc się ze zdalnymi komputerami i próbując przeanalizować, co dokładnie pożera ten system…

Wniosek

Electron może być sposobem na osiągnięcie Twoich celów tylko wtedy, gdy już posiadasz gotowy produkt dopasowany do rynku. Jest duża korzyść z posiadania ikonki Twojej aplikacji bezpośrednio na pulpicie klienta, tak że widzi ją za każdym razem, gdy uruchamia komputer.

Ale bądź zawsze świadomy potencjalnych problemów z pulpitem, a konkretnie z aplikacjami Electronowymi.


Oryginał tekstu w języku angielskim przeczytasz tutaj.
<p>Loading...</p>