Wykop - okładka wpisu

Nowy Wykop, czyli jak nie robić wdrożenia na produkcję

Opublikowano Kategorie PozostałeCzas czytania 9min

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.
Wykop - błąd ze zmianą starego hasła
Źródło: Zrzut ekranu użytkownika t_e_o_m_o
  • 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:

Wykop - syntax error

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:

Wykop - 404

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:

 

Mem ze Spongebob'a podsumowujący sytuację

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

Dominik Szczepaniak

Zawodowo Senior Software Engineer w CKSource. Prywatnie bloger, fan włoskiej kuchni, miłośnik jazdy na rowerze i treningu siłowego.

Inne wpisy, które mogą Cię zainteresować

Zapisz się na mailing i odbierz e-booka

Zapisując się na mój mailing, otrzymasz darmowy egzemplarz e-booka 106 Pytań Rekrutacyjnych Junior JavaScript Developer! Będziesz też otrzymywać wartościowe treści i powiadomienia o nowych wpisach na skrzynkę e-mail.

Subscribe
Powiadom o
guest

12 komentarzy
oceniany
najnowszy najstarszy
Inline Feedbacks
View all comments
Grzegorz
Grzegorz
1 rok temu

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:

Zanim jednak przyjrzę się co poszło nie tak, warto wspomnieć o tym co poszło dobrze.

(…)

Ponieważ uważam że uczenie się (…)

Reszty nie przytoczę, ponieważ zajęłoby to mnóstwo czasu, dlatego pozostawiam link ze zdjęciem
https://imgur.com/a/oorLnVv

Arek
Arek
1 rok temu
Reply to  Grzegorz

On studiował informatykę a nie polonistykę stosowaną 2.0

macik1423
macik1423
1 rok temu

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 😀

Grzegorz
Grzegorz
1 rok temu

Jest takie stare powiedzenie ze testy na prodzie zawsze są w modzie😎 myslisz ze tylko na wykopie tak jest?😁🤪

Tymoteusz Jóźwiak
Tymoteusz Jóźwiak
1 rok temu

> 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).

Mirek
Mirek
1 rok temu

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.

Karol
Karol
1 rok temu

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