Technologie dla aplikacji klasy enterprise Wprowadzenie Marek Wojciechowski
Co oznacza enterprise-ready? Bezpieczeństwo Skalowalność Stabilność Kompatybilność wstecz Wsparcie Dokumentacja Łatwość integracji z istniejącymi systemami Dojrzałe narzędzia do tworzenia, testowania, dostarczania i monitorowania aplikacji Ale również: Komplikacja Zasobożerność Wysoka cena Mało ekscytujące
Trendy w świecie aplikacji klasy enterprise Tradycyjnie aplikacje te wykorzystywały model wielowarstwowy + wzorzec architektoniczny MVC Dziś aplikacje wielowarstwowe często określane mianem monolitycznych i konfrontowane z mikroserwisami Tradycyjnie aplikacje te były instalowane na serwerze aplikacji Dziś często praktykuje się rozwiązanie, w którym aplikacja zawiera w sobie potrzebne elementy serwera aplikacji Tradycyjnie nacisk był na logikę biznesową, a front-end miał charakter drugorzędny i istotna była łatwość jego implementacji, a nie funkcjonalność Dziś oczekiwany jest bogaty interfejs użytkownika również w aplikacjach tej klasy
Technologie pozycjonowane jako rozwiązania dla aplikacji klasy enterprise Java Enterprise Edition (Java EE) Microsoft.NET Angular (?) Rozwiązania klasy middleware Serwery aplikacji Message-oriented middleware Szyny usługowe
Architektura 3-warstwowa Architektura wielowarstwowa to architektura, w której logika prezentacji, logika biznesowa i zarządzanie danymi są logicznie odseparowanymi procesami Najczęściej występuje podział na 3 warstwy: warstwa prezentacji warstwa logiki biznesowej (warstwa aplikacji) warstwa danych Termin używany w odniesieniu do struktury oprogramowania jak i infrastruktury systemu layer warstwa logiczna tier warstwa fizyczna
Zadania warstw aplikacji/systemu Warstwa prezentacji Interfejs użytkownika Prezentacja zadań i ich wyników w sposób zrozumiały dla użytkownika Warstwa logiki biznesowej Decyzje i ewaluacja Obliczenia Przesyłanie danych między otaczającymi warstwami Warstwa danych Składowanie i pobieranie danych z bazy danych (lub innego repozytorium informacji) Przekazywanie danych do warstwy logiki biznesowej celem ich przetworzenia
Architektura wielowarstwowa a architektura (wzorzec) MVC Architektura wielowarstwowa jest liniowa komunikacja między warstwą prezentacji i danych zawsze poprzez warstwę pośrednią Architektura Model-View-Controller (MVC) zakłada wzajemne interakcje między trzema typami komponentów aplikacji
Middleware Oprogramowanie łączące komponenty oprogramowania lub aplikacje Podstawowe zadanie: integracja aplikacji, szczególnie w środowisku rozproszonym Wykorzystywane technologie: XML, SOAP, Web Services, Service Oriented Architecture (SOA) REST, JSON, microservices Oprogramowanie określane mianem middleware: serwery aplikacji systemy wymiany wiadomości (Message-Oriented Middleware MOM) szyny usługowe (Enterprise Service Bus ESB)
Wady (monolitycznych) aplikacji wielowarstwowych Duża pojedyncza baza kodowa Zespoły odpowiedzialne za poszczególne funkcje pracują na jednej bazie kodowej Wysoki próg wejścia dla nowych deweloperów Skalowalność dotyczy całości systemu Brak możliwości indywidualnego skalowania poszczególnych funkcjonalności Złożony i czasochłonny proces dostarczania oprogramowania (deployment / continuous integration) Problematyczna zmiana technologii implementacji poszczególnych funkcjonalności systemu Dyskusyjne dopasowanie do nowoczesnych architektur chmurowych i kontenerów (Docker)
Mikroserwisy (ang. microservices) (1/2) Architektura, ale też kultura pracy Zalety: Modularyzacja, gdzie każda usługa jest niezależnie: tworzona, instalowana, testowana i skalowana Małe zespoły deweloperów odpowiadające od początku do końca za dany podsystem Standardowa komunikacja między usługami (HTTP, REST, JSON) Możliwość współdzielenia bazy danych przez usługi lub wykorzystywania dedykowanych, odpowiednich dla konkretnej usługi baz danych
Mikroserwisy (ang. microservices) (2/2) Wady: Podział funkcjonalności na mikroserwisy nie musi być oczywisty Wymagane kompetencje DevOps członków zespołu Komplikacja charakterystyczna dla systemów rozproszonych Narzuty komunikacyjne Trudne debugowanie
Plan przedmiotu Aplikacje na platformie Java EE technologie: JSF, EJB, CDI, JPA frameworki: Spring, Oracle ADF (?) Aplikacje na platformie.net warstwy: prezentacji, BLL i DAL technologie: ASP.NET, LINQ, Entity Framework JavaScript po stronie przeglądarki model Ajax, model SPA, frameworki JavaScript Rozwiązania klasy middleware: wprowadzenie do Web Services Message-Oriented Middleware