Duża popularność nie zawsze oznacza sukces. W branży internetowej – duża popularność często odsłania słabe strony przedsięwzięć. Mam na myśli w tym momencie problemy natury technologicznej – takie jak brak skalowalności, problemy z bezpieczeństwem, problemy z wprowadzaniem modyfikacji do oprogramowania.

Jak to jest z platformą sklepową?

Zakup i rozwój platformy technologicznej nie jest procesem trywialnym. Systemy mają wiele niuansów, dedykowane funkcje które do nich wprowadzamy wpływają na całkowity kształt rozwiązania. Każde oprogramowanie dąży – w ramach rozwoju – do zwiększania swojego nieuporządkowania. Na proces ten ogromny wpływ ma sposób wytwarzania oprogramowania i podejście do jego utrzymania. Często ciężko go ocenić przy starcie prac.

Mam kontakt z firmami, które po początkowych sukcesach z nowym wdrożeniem, zwracają się do nas o pomoc. Zdarza się się, że firma wdrażająca z jakichś powodów nie może ukończyć/kontynuować projektu. Stosunkowo często pojawiają się też podejrzenia i kłopoty z dalszym rozwojem. Pojawiają się pytania czy oprogramowanie jest dobrze napisane, czy jest wydajne?

Jakie są powody problemów z technologią?

Zauważyłem, że powody stresu związanego z technologią zazwyczaj dotyczą dwóch sytuacji:

  • z jakiegoś powodu chcemy przejąć/przekazać rozwój oprogramowania od obecnego dostawcy technologii,
  • obecny dostawca napotyka problemy – których nie jest w stanie usunąć (np. wydajnościowe) – myślimy o poprawieniu we własnym zakresie błędów lub szukamy obiektywnego rozwiązania aby zasugerować je obecnej firmie.

Jeśli działamy na oprogramowaniu będącym standardem branżowym – np. Magento – sytuacja przekazania rozwoju do innej firmy jest stosunkowo prosta. Jest to standard, który nawet w przypadku wielu dedykowanych modyfikacji pozostaje standardem. Jeśli natomiast operujemy na dedykowanej (pisanej pod klucz) platformie sytuacja jest gorsza – ponieważ przejęcie kodu, często bez odpowiedniej dokumentacji – może okazać się stresującym i trudnym zadaniem.

Jak poradzić sobie z problemami?

Co można zrobić w takiej sytuacji? Jednym z najprostszych rozwiązań jest wykonanie krótkiej analizy technicznej obecnego rozwiązania. Zakres prac – w minimalnym zakresie może objąć:

  • Analizę logów serwera i logów systemu pod kątem występowania błędów. Pobieżną diagnoza czym błędy są spowodowane.
  • Przegląd kodów źródłowych i ocena ich czytelności, komentarzy, dokumentacji i dobrych praktyk,
  • Testy wydajnościowe narzędziem Siege, AB…
  • Testy bezpieczeństwa narzędziami automatycznymi. Następujące podatności będą sprawdzone: XSS, SQL Injection, CSRF,
  • Sporządzenie krótkiego opisu/raportu. Ocena, wnioski, sugerowane rozwiązania.

Przeprowadzenie takich prac da nam odpowiedź na podstawowe pytania związane z przejęciem rozwoju platformy:

  • Czy oprogramowanie da się rozwijać i czy jest napisane zgodnie z dobrymi praktykami? Czy w kodzie są komentarze, czy są wykorzystane popularne biblioteki i frameworki?
  • Czy występują problemy z bezpieczeństwem i jak je wyeliminować?
  • Czy oprogramowanie działa stabilnie?
  • Czy występują problemy wydajnościowe, czym są spowodowane oraz zalecenia.
  • Jaki ruch jest w stanie obsłużyć oprogramowanie, zwymiarowanie platformy.

W ramach prac analitycznych powinien powstać dokument – opisujący zagadnienia związane z bezpieczeństwem, wydajnością, jakością kodu (code review).

Zrzut ekranu 2013-11-16 o 02.20.08

Na podstawie wniosków z przeglądu aplikacji można podjąć dalsze decyzje, poprawić błędy – a przede wszystkim poznać realne ryzyko związane z dalszym rozwojem systemu.

Również przydatne w temacie: