Jaki jest stos inżynieryjny? + Przykład

Jaki jest stos inżynieryjny? + Przykład
Anonim

Krótka odpowiedź brzmi: używamy Flask dla Pythona na zapleczu, Backbone dla Javascript na froncie i przechowujemy nasze dane w MongoDB, Redis i ElasticSearch. Jesteśmy hostowani na AWS.

Co to jest stos?

Wiele technologii jest wymaganych do dostarczenia Ci strony internetowej i wykonują różne funkcje, w tym:

  • Tworzenie stron w przeglądarce lub aplikacji, ich stylizacja (kolor, czcionki) i interaktywne (np. Przekręcenie serca na czerwono i wyświetlenie pola komentarza po kliknięciu). To się nazywa front end lub po stronie klienta
  • Zbieranie informacji potrzebnych do strony (np. Pytanie, odpowiedź, nazwy użytkowników i zdjęcia, liczba serc) i wysyłanie ich na komputer lub telefon. To się nazywa backend lub serwer
  • Przechowywanie tych informacji, aby były dostępne w dowolnym momencie, pozwala nam wyszukać dokładnie te informacje, których potrzebujemy. Nazywa się to bazą danych lub magazynem danych
  • Komputery podłączone do Internetu i zawsze włączone, aby każdy mógł uzyskać dostęp do witryny w dowolnym momencie. Komputery są nazywane serwery i oni są hostowane gdzieś.
  • Wiele innych krytycznych i drobnych funkcji

Na każdej z tych warstw dostępnych jest wiele dobrych opcji, a wybory dokonywane przez jeden zespół opierają się na doświadczeniu i komforcie członków zespołu, a także na praktycznych kwestiach, takich jak koszty i specyficzne wymagania dotyczące wydajności.

Nasz (prawie) pełny stos

Niektóre technologie są instalowane, aktualizowane i zarządzane przez członków naszego zespołu na naszych własnych serwerach i laptopach. Zawierają:

  • Szkielet do organizowania naszego Javascript
  • Kompas do ponownego użycia i zorganizowania naszego CSS
  • Flask, framework Pythona do obsługi interfejsu API JSON + HTML i renderowania pełnych stron HTML
  • stosy naszych kolejek zadań (prawdopodobnie Celery wkrótce)
  • MongoDB do przechowywania naszych danych (być może wkrótce Postgres)
  • Ponownie, aby buforować takie rzeczy, jak kanały w witrynie, trendy i wszelkiego rodzaju statystyki użytkowania
  • ElasticSearch to Power Search
  • Nginx do obsługi witryny
  • Grunt do zminimalizowania, kompresji i rewizji naszego Javascript i CSS
  • Capistrano, aby wdrożyć naszą aplikację i wykonać kilka innych przydatnych zadań
  • Lalek, aby skonfigurować potrzebne oprogramowanie na nowych serwerach

Niektóre technologie to usługi zbudowane i zarządzane przez inne firmy. Często skuteczniej jest pozwolić komuś innemu skupić się na konkretnych problemach, zamiast robić wszystko sami. Niektóre usługi, z których korzystamy, to:

  • AWS aka Amazon Web Services do hostowania naszych serwerów, zasobów statycznych i CDN
  • Cloudflare dla DNS, buforowania i pewnego poziomu bezpieczeństwa
  • Google Analytics i Mixpanel do analiz
  • Papertrail do centralnego logowania
  • Sentry do śledzenia błędów po stronie klienta
  • DataDog do monitorowania naszych serwerów i usług
  • Nowy Relic do monitorowania wydajności aplikacji Flask
  • Customer.io do wysyłania wiadomości e-mail na podstawie tego, co robisz lub czego nie robisz w aplikacji
  • Github do współpracy kodu i hostingu

I prawdopodobnie wiele innych.

Budowa i obsługa strony internetowej wymaga wielu elementów, ale dzięki dobrze zbudowanym narzędziom nie jest to takie trudne!