Architektura aplikacji

Podobne dokumenty
Programowanie Komponentowe WebAPI

Specyfikacja techniczna. mprofi Interfejs API

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Płatności CashBill - SOAP

Podręcznik Integracji

Dokumentacja REST API v 3.0. Kraków, 7 marca FreshMail, ul. Fabryczna 20a, Kraków tel , freshmail.

API System Partnerski

Kolejkowanie wiadomości Standard MQ (JMS)

Dokumentacja Techniczna 1.2. Webtoken MT. Uruchomienie subskrybcji MT poprzez serwis WWW

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Paweł Rajba

Funkcje backendu konfiguratora. Warszawa,

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

Komunikacja międzysystemowa

Zagadnienia projektowania aplikacji J2EE

Wybrane działy Informatyki Stosowanej

Dokumentacja REST API v 3.0

Specyfikacja Techniczna 2.0. Specyfikacja techniczna usługi dystrybucji kodów dostępowych PayCode

Web Services. Wojciech Mazur. 17 marca Politechnika Wrocławska Wydział Informatyki i Zarządzania

Wybrane działy Informatyki Stosowanej

Specyfikacja API 1.0. Specyfikacja kontroli Konta systemu CashBill z wykorzystaniem API opartego na REST

Programowanie obiektowe

Konspekt pracy inżynierskiej

Replikacje. dr inż. Dziwiński Piotr Katedra Inżynierii Komputerowej. Kontakt:

Sieci komputerowe. Wykład 8: Warstwa zastosowań: FTP i HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Program szkolenia: REST i Microservices w PHP

Dokumentacja REST API v 3.0

Już we wrześniu inaczej zalogujesz się na swoje konto w Internecie

Warszawa Specyfikacja techniczna. mprofi Interfejs API wersja 1.0.7

Dokumentacja Techniczna. Dokumentacja techniczna usługi płatności mobilnych

Frameworki IOS. Wykład 14. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.

Dotacje na innowacje - Inwestujemy w Waszą przyszłość ZAPYTANIE OFERTOWE

Systemy obiegu informacji i Protokół SWAP "CC"

INSTRUKCJA OBŁUGI APLIKACJI ASSECO MAA

Nowa odsłona wyodrębnienie i kierunki jego rozwoju Łysomice

Remote Quotation Protocol - opis

Specyfikacja Płatności CashBill. Instrukcja podłączenia płatności elektronicznych do typowych zastosowań.

DOKUMENTACJA INTERFEJSU API - HTTPS

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia.

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Nowy sposób autoryzacji przelewów w Usłudze Bankowości Elektronicznej

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Architektura bezpiecznych aplikacji internetowych na platformie Java Enterprise Edition. Jakub Grabowski Warszawa,

Architektura i mechanizmy systemu

EXSO-CORE - specyfikacja

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Aktualizacja SMSFall v Data publikacji:

Poniższy diagram prezentuje scenariusz subskrypcji aplikacji do usługi CallEventNotifications.

Java Developers Day. Implementacja ESB przy użyciu Mule. ESB Mule Obsługa zamówień DEMO

Programowanie usług działających w tle

Automater.pl zdalne tworzenie i zarządzanie transakcjami dokumentacja API wersja 0.1

NIEZBĘDNE JEST POŁĄCZENIE Z INTERNETEM!!!

Architektura serwisu GG.pl

Django : praktyczne tworzenie aplikacji sieciowych / Antonio Mele. Gliwice, cop Spis treści

PRACA INŻYNIERSKA IMPLEMENTACJA MOBILNEGO KLIENTA BANKU ZABEZPIECZONEGO TOKENEM

Dr Michał Tanaś(

Ministerstwo Finansów

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Specyfikacja HTTP API. Wersja 1.6

Dotacje na innowacje - Inwestujemy w Waszą przyszłość ZAPYTANIE OFERTOWE

Kielce, dnia roku. HB Technology Hubert Szczukiewicz. ul. Kujawska 26 / Kielce

INFRA. System Connector. Opis wdrożenia systemu

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, . A. Kisiel,Protokoły DNS, SSH, HTTP,

PLATFORMA GEOLOKALIZACYJNA

Dokumentacja. Wersja: 1.5 Ostatnio zmodyfikowano: Strona 1

Narzędzia IT dla Świętokrzyskiego Systemu Innowacji

Funkcje dodatkowe. Wersja 1.2.1

Autorytatywne serwery DNS w technologii Anycast + IPv6 DNS NOVA. Dlaczego DNS jest tak ważny?

Projekt Fstorage. Łukasz Podkalicki Bartosz Kropiewnicki

Replikacja bazy danych polega na kopiowaniu i przesyłaniu danych lub obiektów bazodanowych między serwerami oraz na zsynchronizowaniu tych danych w

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Aplikacje webowe z wykorzystaniem Node.js oraz Express

TRX API opis funkcji interfejsu

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Specyfikacja implementacyjna aplikacji serwerowej

WebNotarius. Specyfikacja techniczna komunikacji z usługą WebNotarius. wersja 1.1

Świadczenie usługi hurtowej wysyłki wiadomości SMS dla Urzędu Miasta Torunia w latach

Złośliwe oprogramowanie Sandrorat (podszywające się pod oprogramowanie Kaspersky) na platformę Android WYNIKI ANALIZY

Laboratorium nr 4 - Badanie protokołów WWW

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Instrukcja wiązania bankowości internetowej z aplikacją mobilną mtoken Asseco MAA (w przypadku autoryzacji za pomocą tokena lub sms-a)

Pełna specyfikacja pakietów Mail Cloud

DirectBilling dokumentacja techniczna

INFORMACJE OGÓLNE POBIERANIE APLIKACJI

Internet rzeczy : budowa sieci z wykorzystaniem technologii webowych i Raspberry Pi / Dominique D. Guinard, Vlad M. Trifa. Gliwice, cop.

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

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

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym WooCommerce (plugin dostępny w wersji ecommerce)

Integracja komunikatora opartego o protokół XMPP z dużym portalem internetowym

Wydział Informatyki, Elektroniki i Telekomunikacji. Katedra Informatyki

Bezpieczeństwo systemów komputerowych

systemów intra- i internetowych Platformy softwarowe dla rozwoju Architektura Internetu (2) Plan prezentacji: Architektura Internetu (1)

Załącznik nr 1. Specyfikacja techniczna portalu internetowego Łódź, r.

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym WooCommerce (plugin dostępny w wersji ecommerce)

Transkrypt:

Architektura aplikacji System powiadomień Kamil Szarek, 21 listopada 2013

Plan prezentacji 1. 2. 3. 4. 5. Internet i aplikacje mobilne Jak działa typowe API, architektura pull Architektura push, PubSubHubbub Problemy z PubSubHubbub i jak sobie z nimi radzić Implementacja systemu powiadomień USOSapi

Internet w 2013 Użytkownicy 38.8% całej populacji 76.8% w krajach rozwiniętych Trzech użytkowników z dostępem bezprzewodowym na jednego z dostępem przewodowym Przyczyna (przynajmniej częściowa): smartfony

Aplikacje mobilne

Aplikacje mobilne Samodzielne aplikacje (np. gry) Aplikacje korzystające z zasobów dostępnych przez Internet API - application programming interface Protokół komunikacji z backendem (baza danych, dodatkowa logika itp.) Typowo HTTP + SOAP / REST

SOAP kontra REST

REST Definiujemy tzw. zasoby identyfikowane przez URL http://www.example.com/users/ - wszyscy użytkownicy http://www.example.com/users/1/ - użytkownik o ID 1 Wykonujemy żądania HTTP pod adresy zasobów Metoda HTTP oraz (potencjalna) treść definiują operację GET, PUT, POST, DELETE

Komunikacja Uruchomienie aplikacji, pobranie danych Nowa zakładka, pobranie danych Wysłanie wiadomości, wysłanie danych Odświeżenie wiadomości, pobranie danych

Architektura pull Pobieranie danych na życzenie klienta Klient zawsze inicjuje komunikację Nie pasuje do pewnych sytuacji Powiadomienia

Architektura push Dopełnienie architektury pull, nie zastępstwo API inicjuje komunikację z klientem Potrzebne pewne założenia

SMS 1. Uruchomienie 2. Wyszukiwanie sieci 3. Rejestracja w sieci 4. SMS 5. SMS trafia do telefonu

Powiadomienie 1. Uruchomienie aplikacji 2. Wyszukiwanie możliwych subskrypcji 3. Subskrypcja powiadomień 4. Zdarzenie 5. Powiadomienie trafia do aplikacji

Powiadomienie Subskryp cja Powiadom ienie ta sama aplikacja, różne platformy Subskrypcja Notification pcja kry Subs 1... 0110 1 1011 1 0 0 111

Powiadomienie Powia domie nie Subskrypcja Notification Powiadomienie 11... 0110 111 011 0011

PubSubHubbub Pub - Publisher Sub - Subscriber Hub - Hub Zarządza subskrypcjami Odbiera informacje o zdarzeniach Wysyła powiadomienia Hubbub - pol. zamieszanie, poruszenie

PubSubHubbub 1. 2. 3. 4. Publisher w nagłówkach zasobu podaje URL Huba Subscriber pobiera zasób w standardowy sposób Subscriber widzi nagłówek-url Huba Jeśli chce subskrybować informacje o zmianie zasobu, wykonuje odpowiednie żądanie HTTP do Huba 5. Hub weryfikuje żądanie subskrypcji 6. Publisher informuje Hub o zmianie zasobów 7. Hub rozsyła powiadomienie (jako żądanie HTTP) do wszystkich Subscriberów zasobu

PubSubHubbub - szczegóły Weryfikacja adresu URL Subscribera Żądanie HTTP pod adres z dodatkowymi parametrami hub.challenge - weryfikacja, czy serwer subskrybenta obsługuje protokół hub.topic - weryfikacja, czy żądanie subskrypcji pochodzi od faktycznie zainteresowanego subskrybenta Weryfikacja powiadomienia hub.secret HMAC, SHA1(treść żądania) X-Hub-Signature Hub własny lub otwarty

PubSubHubbub - problemy Autoryzacja, poziomy uprawnień OAuth REST Bezpieczeństwo przesyłu powiadomienia Rozwiązanie: własny Hub, adaptacja protokołu

OAuth Standard autoryzacji i udzielania uprawnień klientom w imieniu użytkowników W uproszczeniu Klient otrzymuje klucz publiczny i prywatny, współdzielony z API Klient może poprosić API o to, by poprosiło (!) w jego imieniu o uprawnienia użytkownika Jeśli użytkownik się zgodzi, klient otrzymuje żeton dostępowy dla użytkownika Zapytania o wrażliwe dane muszą być podpisywane tym żetonem

Facebook Real-time Updates Subskrybujemy zmiany wybranych pól w jednej z dostępnych encji Nie ma URL zasobu OAuth Jeśli użytkownik nie autoryzował klienta, to klient-subskrybent nie dostanie powiadomienia Bezpieczeństwo przesyłu powiadomienia W treści nie ma wrażliwych danych

Facebook Real-time Updates Przykładowe powiadomienie Grupowanie powiadomień Parametry niezbędne, by pobrać dane

Inne serwisy Flickr Bliżej do PubSubHubbub Tzw. strumienie zdjęć jako zasoby Atom 1.0 Foursquare Powiadomienia mogą zawierać wrażliwe dane Wymagane HTTPS Instagram Jak Facebook

USOSapi API do USOS :) Python, Django Metody, nie zasoby OAuth Poziomy uprawnień Klienci administracyjni

System powiadomień USOSapi Subskrypcje zmian wyników metod dla parametrów Np. zmienia się liczba punktów za zadanie 123 dla użytkownika 321 Powiadomienie zawiera nazwę metody ( typ zdarzenia ) i parametry OAuth i użytkownicy związani ze zdarzeniem Nowe metody do zarządzania subskrypcjami Rozsyłacz powiadomień

Rozsyłacz powiadomień USOSapi 1. Pobierz nieprzetworzone zdarzenia (z bazy danych) 2. Dla każdego zdarzenia a. b. c. Zdeserializuj do obiektu Pobierz subskrypcje założone przez klientów dla tego typu zdarzenia Dla każdej subskrypcji i. ii. Sprawdź uprawnienia klienta, jeśli to konieczne Wyślij powiadomienia, jeśli nie ma problemu z uprawnieniami 3. Usuń przetworzone zdarzenia

Profilowanie rozsyłacza Python, cprofile 3 klientów, 10 użytkowników, 60 zdarzeń Problem: zbyt dużo żądań HTTP

Grupowanie powiadomień 3 klientów, 10 użytkowników, 60 zdarzeń Kolejkowanie powiadomień i wysyłanie w grupach 28 razy szybciej

Grupowanie powiadomień 3 klientów, 1 000 użytkowników, 6 000 zdarzeń Problem: pobieranie danych klientów/żetonów

Cache klientów i żetonów 3 klientów, 1 000 użytkowników, 6 000 zdarzeń Proste zapamiętywanie obiektów w pamięci 6 razy szybciej Problem: nadal pobieranie żetonów

Bezpośrednie zapytania SQL 3 klientów, 1 000 użytkowników, 6 000 zdarzeń Rezygnacja z ORM 1.6 raza szybciej

Bezpośrednie zapytania SQL 3 klientów, 10 000 użytkowników, 60 000 zdarzeń Problem: znowu żądania HTTP

Szybkie wykonywanie żądań Wątki? Global Interpreter Lock w CPython Procesy?... Dualna operacja: obsługa żądań Problem C10K Operacje wejścia-wyjścia są bardzo kosztowne w porównaniu do innych

Synchroniczny serwer HTTP

Asynchroniczny serwer HTTP

Asynchroniczne żądania HTTP 3 klientów, 10 000 użytkowników, 60 000 zdarzeń Tornado Prawie 2 razy szybciej Problem: deserializacja zdarzeń (Python, pickle)

Lepszy model danych 3 klientów, 10 000 użytkowników, 60 000 zdarzeń JSON zamiast zserializowanego obiektu w bazie 1.8 raza szybciej

Lepszy model danych 3 klientów, 40 000 użytkowników, 250 000 zdarzeń Problem: znowu pobieranie żetonów

Preprocessing 3 klientów, 40 000 użytkowników, 250 000 zdarzeń Pobranie do pamięci wszystkich potrzebnych danych jednym zapytaniem 2.7 raza szybciej

System powiadomień USOSapi Początek: 60 zdarzeń dot. 10 użytkowników w 94 sekundy Po poprawkach: 250 000 zdarzeń dot. 40 000 użytkowników w 78 sekund USOS: 247 685 zmian ocen dot. 40 248 użytkowników w czerwcu 2013

Pomysły i ciekawostki Klasy zamiast typów zdarzeń Filtrowanie powiadomień Twitter Strumienie danych przez HTTP Konieczność podtrzymywania połączenia

Kilka odnośników Statystyki ITU - http://www.itu.int/en/itu-d/statistics/pages/stat/default.aspx Raport Gartner - http://www.gartner.com/newsroom/id/2592315 SOAP kontra REST - http://stackoverflow.com/questions/209905/representational-state-transferrest-and-simple-object-access-protocol-soap/ REST - http://en.wikipedia.org/wiki/rest PubSubHubbub - https://pubsubhubbub.googlecode.com/git/pubsubhubbub-core-0.4.html OAuth - http://tools.ietf.org/html/rfc5849 Facebook Real-time Updates - http://developers.facebook.com/docs/reference/api/realtime/ USOSapi - http://usosapps.uw.edu.pl/developers/api/ C10K problem - http://www.kegel.com/c10k.html Tornado - http://www.tornadoweb.org/en/stable/ Twitter Streaming API - https://dev.twitter.com/docs/streaming-apis

Dziękuję za uwagę