Architektura systemów webowych wysokiej przepustowości. na przykładzie Wikia

Podobne dokumenty
Projektowanie i implementacja wysokowydajnych aplikacji w języku

Tworzenie aplikacji bazodanowych

Założenia projektowe dla zapytania ofertowego EAK_ZA_01/2015

Opis wdrożenia Platformy Technologicznej epodreczniki.pl na zasobach Poznańskiego Centrum Superkomputerowo-Sieciowego

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Paweł Rajba

Architektura serwisu GG.pl

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Sposoby klastrowania aplikacji webowych w oparciu o rozwiązania OpenSource. Piotr Klimek. piko@piko.homelinux.net

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Program szkolenia: REST i Microservices w PHP

WIELOWARSTWOWY CACHE. Na przykładzie serwisu GOG.com. Maciej Włodarkiewicz

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Ciągłe dostarczanie oprogramowania : kompletny przewodnik / Eberhard Wolff. Gliwice, cop Spis treści

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Program szkolenia: Jenkins - Continuous Integration

OD MONOLITU DO MIKROUSŁUGI MICROSERVICES

Tomasz Grześ. Systemy zarządzania treścią

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Techniki efektywnego testowania kodu dla programistów Java (Spock

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

Jak odtworzyć maila? EMC SourceOne

Indeksowanie full text search w chmurze

HP Matrix Operating Environment: Infrastructure Administration

PureSystems zautomatyzowane środowisko aplikacyjne. Emilia Smółko Software IT Architect

CMS, CRM, sklepy internetowe, aplikacje Web

Jak efektywnie wykrywać podatności bezpieczeństwa w aplikacjach? OWASP The OWASP Foundation

Asseco dla Zdrowia r.

Przetwarzanie danych z wykorzystaniem technologii NoSQL na przykładzie serwisu Serp24

Letnia Akademia SUSE. Implementacja nowych rozwiązań open source wszystko, co musisz wiedzieć!

Spis treści. O autorze 13 Przedmowa 15 Wprowadzenie 17

Projektowanie rozwiązań Big Data z wykorzystaniem Apache Hadoop & Family

Prestige MJM Case Study

Instalator umożliwia zainstalowanie aplikacji klienckiej na komputerze użytkownika końcowego. Na instalator składają się następujące funkcje:

Jak stworzyć system oparty o mikroserwisy Karol Buler

Tworzenie cross-platformowych aplikacji w Xamarin.Forms

CI/CD - CO TO? PO CO? JAK?

Aurea BPM Dokumenty pod kontrolą

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Wirtualizacja sieci - VMware NSX

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Wybrane działy Informatyki Stosowanej

Bezpieczeństwo aplikacji internetowych. Rozwój napędzany potrzebą WALLF Web Gateway. Leszek Miś, RHCA,RHCSS,Sec+ Linux Polska Sp. z o.o.

Klient SmartMedia Sp. z o.o., Dziennikus Sp. z o.o. Branża. IT, software. Okres realizacji. Lipiec nadal. Rodzaj usługi:

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Agenda. Wstęp Zmiany Co nowego dla web developerów? Nowości we front-end developingu Czego spodziewać się może końcowy użytkownik?

Skalowalne aplikacje internetowe wysokiej dostępności

Cleeng Case Study. Klient Cleeng. Branża. Okres realizacji. Zakres usługi: Consulting. Projekt i wdrożenie Chmury AWS. Zarządzanie chmurą

Analiza mikroserwisów. Warszawa,

CMS Hitso od Autentiki opis techniczny

OpenSocial w nk.pl. Janusz Dziemidowicz. PLNOG października nk.pl

Szkolenie wycofane z oferty

Wybrane działy Informatyki Stosowanej

Need for speed. Kliknij, aby edytować style wzorca tekstu jak sobie radzić z dużą ilością użytkowników i danych

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Bezpieczeństwo systemów internetowych

Konsolidacja wysokowydajnych systemów IT. Macierze IBM DS8870 Serwery IBM Power Przykładowe wdrożenia

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Przepełnienie bufora. SQL Injection Załączenie zewnętrznego kodu XSS. Nabycie uprawnień innego użytkownika/klienta/administratora

Referat Pracy Dyplomowej

Przetwarzanie danych w chmurze

Architektura mikroserwisów na platformie Spring IO

Letnia Akademia SUSE. Implementacja nowych rozwiązań open source wszystko, co musisz wiedzieć!

Bezpieczeństwo IT z Open Source na nowo

Dane bezpieczne w chmurze

Zarządzanie farmami serwerów Linux

Nowoczesne technologie bliżej nas Poznań,

Robert Piotrak IIG Senior Technology Expert 23 września 2010

HP Matrix Operating Environment Foundations

-czyli jak pozwolić adminowi spać w nocy

Szczegółowy opis przedmiotu zamówienia

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Program szkolenia: JavaScript Craftsmanship

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Szkolenie: Automatyzacja testowania

Instrukcja instalacji v2.0 Easy Service Manager

REACT NATIVE. Anna Maziejuk Kamil Jankowski

BADANIE SZYBKOŚCI ŁADOWANIA

MAMP: Można to pobrać i zainstalować z XAMPP: Można go pobrać i zainstalować z

Win Admin Replikator Instrukcja Obsługi

Szkolenie wycofane z oferty. Programowanie w JavaScript (zawiera jquery)

Dodatkowo, w przypadku modułu dotyczącego integracji z systemami partnerów, Wykonawca będzie przeprowadzał testy integracyjne.

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Tworzenie własnych Smart Mobile Apps dzięki MobileHMI. ICONICS Worldwide Customer Summit

Automatyzacja aktualizacji CMDB i procesu zarządzania zasobami w Remedy ITSM 7.6

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

CouchDB. Michał Nowikowski

Jak ograniczyć zagrożenie związane ze zjawiskiem credential abuse? Bartlomiej Jakubowski Solutions Engineer II, CISSP, CCSP

Transkrypt:

Architektura systemów webowych wysokiej przepustowości na przykładzie Wikia

Agenda Czym jest Fandom powered by Wikia Ogólny zarys architektury - warstwy systemu Ścieżka obsługi przykładowego żądania Monolit vs Mikroserwisy Omówienie wybranych komponentów Mesos oraz Consul Stos ELK Monitorowanie wydajności Alerting Proces zmiany kodu i wydania wersji Continuous Integration & Deployment

17 jesteśmy 17-stą najczęściej odwiedzaną stroną w USA 4 Czwarci pod względem odwiedzin z urządzeń mobilnych 1 Jesteśmy największą na świecie bazą artykułów o grach video

Ogólny zarys architektury Desktop Web Users Static HTML+JS Mobile Web Users SPA - JS Android + ios Users API: HTML+JS Fastly Content Delivery Network San Jose Main Data Center Reston Backup Data Center

San Jose Data Center MediaWiki Stack (głównie PHP) Np. fallout.wikia.com HTML + API New Microservice Stack (głównie Java) Np. services.wikia.com/discussions API Border Varnish - Load Balancer API Gateway Nginx MediaWiki Apache + PHP 80 Servers Mesos + Marathon Container Orchestration 4 Servers Service X MySQL Master + Slave 10 Clusters, 4 Servers per cluster...... Helios OAuth Golang Consul Service Discovery

Ścieżka obsługi przykładowego żądania http://www.fallout.wikia.com Fastly CDN Edge - zwróć z pamięci podręcznej, jeśli istnieje Fastly CDN Shield - zwróć z pamięci podręcznej, jeśli istnieje Wikia Border (load balancer) - wybierz jeden z serwerów apache z puli Apache+PHP - generuj HTML Pobierz zawartość artykułu z bazy Sprawdź czy wynik zapytania jest w memcached, jeśli tak zwróć Znajdź cluster z bazą danych i wyszuk hosta slave z bazą Pobierz dane z bazy i zaktualizuj pamięć podręczną w memcached Pobierz inne dane konieczne do generowania artykułu z mikroserwisów Zapisz logi oraz dane o wydajności w Elasticsearch u oraz InfluxDB Zapisz wynik w pamięci podręczne Fastly (Shield + Edge) oraz zwróć wynik użytkownikowi Przez JavaScript pobierz reklamy od zewnętrznych partnerów Pobierz obrazki (optymalizacja formatów np. WebP)

Monolit vs Mikroserwisy Monolit Nasz ma 4 miliony linii kodu Problemy Trudność w zarządzaniu i rozwijaniu Liczba powiązań wewnętrznych modułów Mikroserwisy Domain Driven Design Zoptymalizowane pod zastąpienie a nie pod ponowne użycie (replace v. reuse) - można napisać od zera w tydzień Autonomiczne zespoły odpowiedzialne za cały cykl życia serwisu Skalowalność Chmura, większa elastyczność w użyciu sprzętu

https://mesosphere.com/ Zalety dynamicznego zarządzania usługami i użycia kontenerów Łatwiejsze i szybsze skalowanie - brak konieczności fizycznego konfigurowania serwerów pod konkretne usługi. Łatwiejsze uruchomienie nowych usług przez programistów, bez interakcji z administratorami systemu. Możliwość automatycznego skalowania usług w zależności od ruchu w danym momencie Kontrola zdrowia usług, możliwość automatycznego zrestartowania (fault recovery) Bardziej efektywne wykorzystanie fizycznych zasobów i tym samym obniżenie kosztów Możliwość użycia dostępnych w internecie kontenerów z komponentami np. Bazami danych

https://www.consul.io/ Service Discovery API DNS Zarządzanie konfiguracją

Logi - Stos ELK Zarządzanie Logami ElasticSearch - Document Storage Zoptymalizowane pod wyszukiwanie tekstu Brak sztywnej struktury Shardowanie i sterowanie retencją danych Logstash Zbiera Logi i zapisuje do ElasticSearch Kibana - UI Napisany w JavaScript

Monitorowanie wydajności Dlaczego wydajność jest ważna? Różne obszary pomiaru Frontend Backend Poziom aplikacji Baza danych A/B Testy

Alerting Kapacitor PagerDuty

27 unikalnych serwisów, większość w więcej niż jednej instancji

50 percentyl czasu odpowiedzi

Proces zmiany kodu i wydania wersji Jira - Tickety Github - kontrola wersji kodu Pull Request - code review TDD - testy jednostkowe, integracyjne oraz Selenium Jenkins SonarQube - statyczna analiza kodu Ponowne uruchomienie testów Deployment Manualny Cykliczny Continuous Deployment

Pytania?

Thank you!