W mojej ocenie zaplecze techniczne nigdy nie było silną stroną Wykopu. Serwis cierpiał na wiele problemów zarówno związanych z moderacją treści, walki z trollami, poprawnym działaniem niektórych funkcji serwisu, jak i wydajnością. Jednakże niedawna premiera nowej wersji portalu Wykop.pl jest pięknym pokazem, jak nie należy robić deploya na produkcję. Ponieważ uważam, że uczenie się na błędach, a w szczególności na cudzych błędach jest świetnym sposobem na naukę, więc postanowiłem napisać ten wpis.
Zanim jednak przyjrzę się, co poszło nie tak, warto wspomnieć o tym, co poszło dobrze. Przede wszystkim deploy poszedł w godzinach nocnych i nie odbył się w piątek o 16. Jeżeli aplikacja, nad którą pracujesz potrzebuje okna serwisowego, to dobrą praktyką jest robić to okno w godzinach najmniejszej aktywności. Dobrym rozwiązaniem (niekoniecznie dla pracowników) są też wdrożenia w niedziele i święta, gdy ruch na wielu aplikacjach ulega drastycznemu zmniejszeni. Dobrym przykładem takiego podejścia są aplikacje banków PKO BP i mBank. Okresowo otrzymuję powiadomienia o niedostępności tych aplikacji, gzie okna serwisowe ustawiane są na godziny nocne w niedzielę. O ile dla działu IT nie brzmi to jak niedziela marzeń, tak dla klientów takie rozwiązanie jest najlepsze. Jeśli zaś chodzi o deploy w piątek o 16… jeśli ktoś nie ma planów na weekend to czemu nie.
Z kolejnych zmian na plus to nowy UI jest moim subiektywnym zdaniem nienajgorszy. Co prawda ciężko mi się w nim, póki co odnaleźć, ale można go uznać za krok raczej w dobrą stronę. Dodatkowo Wykop może teraz działać jako aplikacja PWA.
Na plus można też zaliczyć deklarację o całkowitym przepisaniu serwisu. Jeżeli dług technologiczny w aplikacji był zbyt duży, to decyzja o całkowitym przepisaniu aplikacji prawdopodobnie była jedyną słuszną.
Teraz myślę można przejść do problemów…
Testy? U nas testerem jest klient!
Brzmi jak kiepski żart, ale obawiam się, że kto mógł tak pomyśleć na serio. Piszę ten wpis niecały dzień po wdrożeniu nowej wersji Wykopu, a czuję, że miejsca na podium z błędami nie są jeszcze pewne. Z ciekawszych kwiatków zgłoszono:
- Możliwość korzystania z usuniętego konta. Mowa tu nie tylko o możliwości zalogowania się, ale też dodawania za pomocą niego treści. Nasuwa się tu podejrzenie naruszenia przepisów dotyczących przetwarzania danych osobowych. Pytanie, czy Wykop zatrudnia kogoś na stanowisku inspektora ochrony danych osobowych oraz jak wygląda jego polityka ochrony danych osobowych serwisu. Jestem niezmiernie ciekaw, jak sprawa potoczy się dalej, gdyż autor w mailu ze skargą załączył w CC Rzecznika Praw Konsumenta. Osobiście, jednak sugerowałbym oznaczyć kogoś związanego z Urzędem Ochrony Danych Osobowych.
- Niemożność zmiany starego hasła, gdy jest… za słabe. Walidacja pola ze starym hasłem nie pozwala na wpisanie starego hasła, gdy nie spełnia wymogu długości znaku. Pytanie brzmi, czy ktokolwiek dobrze „przeklikał” aplikację przed wdrożeniem. Choć wygląda to na prosty w naprawie błąd spowodowany podejściem copy-paste driven development, tak uważam, że taki błąd nie powinien wystąpić na produkcji. Co więcej, taki przypadek powinien zostać, według mnie, wyłapany przez testy automatyczne.
- Możliwość dodania innych kont do autorskiego tagu bez ich zgody. W takim wypadku ów tag wyświetlany jest jako autorski tag na koncie „ofiary”.
- Sekcja popularnych tagów w ciągu jednego dnia z treści pokroju #patostreamy, #famemma, #kononowicz, #danielmagical w przeciągu nocy została zastąpiona tagami typu #ekonomia, #polityka, #kultura czy #sport. Czyżby oprócz samego portalu zostali wymienieni również użytkownicy?
- Licznik plusów w trybie nocnym to zbrodnia na UX. Liczba plusów wyświetlana jest w kolorze… pomarańczowym.
- Problemy z klikaniem linków do znalezisk wynikające z błędów programistycznych. Po sprawdzeniu konsoli wyświetlony został błąd:
Wisienką na torcie są problemy z wydajnością, które utrudniają, a momentami wręcz uniemożliwiają wygodne korzystanie z serwisu. W pierwszych godzinach działania nowej wersji serwisu wielokrotnie próby załadowania wpisu czy komentarzy skutkowały niekończącym się ekranem ładowania. Podobnie sytuacja wyglądała z ładowaniem zdjęć. Co ciekawe, autorzy nowego Wykopu chwalą się przeprojektowaniem architektury aplikacji, aby ta była bardziej wydajna:
W nowej architekturze Wykop stał się serwisem znacznie bardziej wydajnym, co przekłada się na jego szybkość działania i stabilność w sytuacjach zwiększonego ruchu.
Ciekawi mnie co oznacza dla autorów znacznie większa wydajność? Jaką metodologię testowania obrali oraz jakie wyniki uzyskali? Szkoda, że żadne dane na ten temat nie zostały udostępnione, gdyż w moim subiektywnym odczuciu wydajność serwisu wręcz spadła. Nie przeprowadzałem w tym zakresie żadnych badań, mówię tu jedynie o moich doświadczeniach po kilku godzinach korzystania z aplikacji.
Znajomość możliwości i wymagań zasobów aplikacji nie tylko pozwoliłaby na efektywniejsze skalowanie w zależności do potrzeb i ale też potencjalnie optymalizację kosztów.
Kompatybilność
Ponieważ zarówno wytwarzam oprogramowanie, jak i korzystam z oprogramowania wytworzonego przez kogoś, zdaję sobie sprawę, jak ważna jest kompatybilność usług. Szczególnym przypadkiem jest kompatybilność wsteczna, czyli sytuacja, gdy zastępujemy stare rozwiązanie nowym. Niestety programiści Wykopu całkowicie zignorowali ten aspekt. Pierwszym symptomem jest niedziałająca aplikacja na iOS. Według zapewnień aplikacja na Androida działa czego niestety nie jestem w stanie osobiście zweryfikować. Mimo że powstała aplikacja PWA to wciąż uważam, że zostałem potraktowany jak użytkownik drugiej kategorii.
Drugim, kluczowym problemem jest uśmiercenie starej wersji API. Wersja V2 została uśmiercona praktycznie z dnia na dzień. Autorzy aplikacji korzystających z API Wykopu nie otrzymali żadnej informacji. Przykładem, do czego takie podejście może doprowadzić, jest wpis użytkownika AnonimoweMirkoWyzwania, który został postawiony w takiej sytuacji już po raz drugi:
Dwa lata temu, podobna sytuacja miała miejsce kiedy to zostało wyłaczone APIv1, a informacja o tym została ogłoszona przez wpis na mikroblogu. Link do mojego wpisu na ten temat https://wykop.pl/wpis/48654867.
Tym razem informacja o wyłączeniu APIv2 nie dotarła do mnie w ogóle, tym samym pozbawiając mnie możliwości reakcji i dostosowania się do zmian.
Niestety autorzy nie pomyśleli o zapewnieniu interfejsu dla wstecznej kompatybilności. Tymczasowe zapewnienie dostępu do interfejsu w starej wersji oraz odpowiednia komunikacja zdecydowanie zrobiłaby tu robotę. Oprócz przykładowej aplikacji nie działa żadna inna aplikacja bazująca na API Wykopu, co w wielu przypadkach może spowodować realne straty finansowe czy wizerunkowe. Z ciekawości chciałem sprawdzić, jak wygląda nowe API Wykopu, aby napisać kilka słów i o tym aspekcie. Niestety pierwszy (i kilka kolejnych też) rezultat z Google na frazę Wykop API wygląda następująco:
Komunikacja
Równie ważne co oprogramowanie jest komunikacja z jego użytkownikami. Pierwszy komunikat o oknie serwisowym został zamieszczony na oficjalnym koncie serwisu Wykop:
Z uwagi na konieczne prace serwisowe, w godzinach 23:00-2:00 Wykop.pl pozostanie niedostępny. Nie martwcie się jednak, są to planowane działania. Postaramy się wrócić do Was tak szybko jak będzie to możliwe.
Nie ma tu żadnej informacji o nowej wersji serwisu i poniekąd jest to zrozumiałe. Na tym etapie nie ma się do czego doczepić. Akcje marketingowe bazujące na tajemnicy, a następnie premiery aplikacji/produktów na zasadzie „flip the table” są czymś spotykanym i nie należy się temu dziwić. Przykładem, moim zdaniem, udanej akcji tego typu było przepisanie aplikacji Messengera na iOS przez Facebooka w 2020 roku.
Jednakże, po wdrożeniu nowej aplikacji administracja zdaje się ignorować problemy zgłoszone przez użytkowików. Nie pojawiło się żadne sprostowanie ani wyjaśnienie. Dodatkowo pojawił się wpis, który jest wręcz napluciem w twarz użytkownikom:
Już zauważyliście?
Wiemy, wiemy – zauważyliście! Wykop doczekał się nowej odsłony! […]
Dajcie znać w komentarzach, jakie zmiany najbardziej się Wam podobają?
Ten komunikat przypomniał mi jednego z moich ulubionych memów:
Podsumowanie
Artykuł ten można podsumować kilkoma zwięzłymi punktami:
- wdrażaj, kiedy na Twojej aplikacji jest niski ruch,
- pilnuj aspektów związanych z danymi osobowymi i bezpieczeństwem,
- przed wdrożeniem na produkcję przetestuj swoją aplikację. Zadbaj zarówno o testy automatyczne, jak i testy manualne wykonywane przez testerów,
- znaj możliwości swojej aplikacji, zadbaj o monitoring i przeprowadź testy wydajnościowe,
- zadbaj o komunikację z użytkownikami,
- kompatybilność wsteczna FTW!
Artykuł piszę „na gorąco”, stąd bardzo szybko może stracić na aktualności oraz mogły znaleźć się w nim błędy i nieścisłości. Gorąco zachęcam do zgłaszania wszelkich sugestii poprawek.
Zachęcam do dalszego śledzenia sytuacji na tagu #nowywykop oraz powiązanego wpisu, co sam będę robił. A ty co sądzisz o tej sytuacji? Masz jakieś ciekawe historie z nieudanych wdrożeń w swojej karierze? Podziel się tym w komentarzu! Jednocześnie uprzejmie proszę o kulturę i merytoryczną dyskusję.
Źródła i materiały dodatkowe
- Wykopowicze, dziś mirkujemy krócej.
- Nie mogę zmienić hasła bo stare jest za słabe xD
- Wiecie, że możecie dodawać inne osoby do autorów tagu nawet bez ich zgody?
- Dzień dobry, krótka informacja odnośnie AMW po relase #nowywykop.
- Już zauważyliście? ( ͡º ͜ʖ͡º)
- Project LightSpeed: Rewriting the Messenger codebase for a faster, smaller, and simpler messaging app
- Wykop – #nowywykop
Widać, że autor zna się na swojej robocie, ale przeszkadzają liczne błędy interpunkcyjne głównie w tych miejscach, gdy zaimki „co”, „jak”, „że” wprowadzają zdanie podrzędne, przykład:
Reszty nie przytoczę, ponieważ zajęłoby to mnóstwo czasu, dlatego pozostawiam link ze zdjęciem
https://imgur.com/a/oorLnVv
Dzięki za feedback. Wskazane miejsca poprawione. Z dwojga złego, lepsze uwagi co do przecinków, niż co do merytoryki wpisu 😉
On studiował informatykę a nie polonistykę stosowaną 2.0
Cytuję wpis z wczoraj:
„Zgodnie z obietnicą, śpieszymy poinformować, że kolejne dziś zmiany zostały wdrożone! #wykopchangelog
Tym razem są to:
1. Wykopowicz @d3ntysta zauważył dzisiaj, że przestała mu działać korekta błędów – ten problem udało nam się już wyeliminować. Przetestujcie i dajcie znać czy u Was działa ( ͡º ͜ʖ͡º)”
Testowanie na produkcji 😀
Jest takie stare powiedzenie ze testy na prodzie zawsze są w modzie😎 myslisz ze tylko na wykopie tak jest?😁🤪
Jest też powiedzenie „kto produkcji nie wy****e ten nie zazna szczęścia w niebie” 😁
> Nasuwa się tu podejrzenie naruszenia przepisów dotyczących przetwarzania danych osobowych.
Jeśli użytkownik wyraźnie zażądał usunięcia danych, to nie ma wątpliwości, że należy je usunąć. Są oczywiście pewne zastrzeżenia, które wykop oznaczył w swojej polityce prywatności, ale fakt dostępu do konta (co oznacza, że dane nie zostały usunięte) mimo potwierdzenia operacji jego usunięcia, jest niewątpliwym naruszeniem RODO w zakresie prawa do bycia zapomnianym (art. 17).
Nie jestem prawnikiem więc wolałem unikać stawiania twardych tez w kwestiach prawnych. Ale co do zasadności komentarza się zgadzam, dzięki za podrzucenie konkretnego artykułu 🙂
Cześć, odnośnie testów, były prowadzone i to od ponad roku – wypok ogłaszał to publicznie, i mogę potwierdzić że faktycznie były bo sam byłem beta testerem przez krótki okres – niestety nie mogę zdradzić żadnych szczegółów, grube NDA.
Masz jakiś link do tego publicznego ogłoszenia?
Aha to pokaż swój test automatyczny, który sprawdza zmianę hasła pod takim warunkiem, że to stare nie spełnia wymagań… Nigdy nie spotkałem się z takim testem
Przetestowanie całego flow spokojnie można by ogarnąć testem integracyjnym lub e2e. Pisząc wpis myślałem raczej o teście jednostkowym dla pola ze starym hasłem, który sprawdziłby co jest validowane na wejściu dla wskazanego inputa. Taki test to jest kilka linii kodu, a pozwoliłby uniknąć opisanej sytuacji. Pseudokod dla przykładowego testu jednostkowego: