Toto je předbežná osnova kursu pro výuku JBoss technologií pro oblast systémové integrace. Účelem je seznámit posluchače s projekty JBoss Fuse, JBoss SwitchYard a dalšími, a demonstovat na nich řešení problémů z oblasti integrace heterogenních systémů.
Studenti se seznámí s pojmy jako jsou
- Architektura orientovaná na služby (SOA)
- Podniková sběrnice služeb (ESB)
- Architektura řízená událostmi (EDA)
- Service Component Architecture (SCA)
- mikroslužby
Přepokládá se intenzivní 4-denní kurs.
Zadání diplomových a bakalářských prací
Osnova kursu
- Den 1
- Základy systémové integrace (1 + 0) - Jiří Pechanec
- Použité nástroje (1+0) - Jiří Pechanec
- JBoss Fuse
- Apache Camel
- JBoss SwitchYard
- Fabric8
- Základy OSGi (1,5 + 1,5) - Martin Basovník
- Co je bundle
- Apache Karaf kontejner
- Základy classloadingu
- Životní cyklus bundlu
- Aktivátory
- Služby
- Blueprint, Spring
- Distribuované transakce - JTA (1 + 0) - Václav Chalupa
- 2P commit
- XA transakce
- XA resource
- Vazba na WS-TX
- Den 2
- ActiveMQ (1 + 2) - Jakub Knetl
- Základy messagingu
- Podporované protokoly
- Základy konfigurace
- Mesh of brokers
- Hierarchie
- Budoucnost - Apache Artemis
- SwitchYard (2 + 2) - Tomáš Turek
- Výhody SY oproti čistému Camel
- SCA
- Inbound/outbound brány
- Transformace a validace
- Základní implementace
- Bean
- Camel
- BPM
- Clustering a failover
- SwitchYard TestKit
- ActiveMQ (1 + 2) - Jakub Knetl
Den 3
- Apache Camel (3 + 3) - Václav Chalupa, Pavel Macík
- Co je Camel
- Komponenty, Provider/Consumer
- Konvertory
- Základní EIP
- WS, REST
- Camel TestKit
- Testování s Pax Exam
- Apache Camel (3 + 3) - Václav Chalupa, Pavel Macík
- Den 4
- Fabric8 (1,5 + 1,5) - Matej Melko
- Karaf features
- OSGi properties
- Profily
- Řízení kontejnerů
- hawt.io
- API Management (1,5 + 1,5) - Jakub Čecháček
- Co je API
- Motivace pro API Gateway
- Definice omezení služeb
- Zabezpečení
- Docker pro vývojáře (1,5 + 0)
- Proč kontejnery
- Jak funguje Docker
- Dockerfile
- Kontejnerizace aplikace - ukázka
- Spolupráce kontejnerů
- Fabric8 (1,5 + 1,5) - Matej Melko
Použité nástroje a materiály
- Java 8
- git
- Maven
- Zdrojové kódy ke cvičením
- Zdroje k závěrečnému projektu
- JBoss Fuse
- JBoss Developer Studio + Integration Stack plugins
- Docker
- Google Chrome + Postman (REST Client)
- WildFly application server + Apiman overlay
Závěrečná práce
Pět systémů k integraci
- Sklad - JDBC
- Externí dodavatel 1
- SOAP over HTTPS
- HTTP basic autentizace
- Externí dodavatel 2 - SOAP
- SOAP over HTTPS
- HTTPS client certification autentizace
- Účetnictví - REST
- HTTPS
- logování každého požadavku zaslaného do účetnictví z důvodu auditu
- Expedice - A-MQ
- Pro potřeby služby Expedice poskytněte dvě instance JBoss A-MQ nakonfigurované v Master/Slave topologii.
- Vystavit službu Objednávka se dvěma koncovými body
- SOAP
- REST
- oba body zabezpečeny pomocí HTTPS
- Kontrakt služeb si nadefinujte vlastní
- Koncové body služby Objednávka nebudou přístupné z vnější sítě. Přístup k nim bude zprostředkován pomocí apiman
- Uživatelské aplikace mohou služby využívat pod jedním ze tří plánů:
- premium
- počet objednávek v této kategorii není omezen
- high-volue
- počet objednávek v této kategorii je omezen na 100 za hodinu
- low-volume
- počet objenávek v této kategorii je omezen na 10 za hodinu
- počet objenávek v této kategorii je omezen na 10 za hodinu
- premium
- Vystavené koncové body budou přístupné pouze přes https a autentizace bude provedena již na úrovni apiman
- Použije se HTTP BASIC auth
- Uživatelé budou uloženi v relační databázi
- Uživatelé mohou mít role "employee" a "manager"
- Pouze manažeři mají přístup k systému objednávek
- Interní workflow k implementaci
- Po přijetí objednávky ve formátu JSON nebo SOAP proveďte konverzi na Java objekt
- Proveďte validaci údajů v objednávce
- Proveďte dotaz na sklad, zdali je výrobek k dispozici
- Pokud ne, pak se souběžně dotažte obou externích dodavatelů na výrobek a jeho cenu
- Vyberte dodavatele s nižší cenou, pokud je zboží u něj dostupné
- Pokud je nová cena vyšší než původní cena objednávky pak
- Pokračujte ve zpracovávání pro VIP zákazníky
- Stornujte objednávku v případě ostatních
- Vystavte fakturu v účetnictví
- Nastartujte XA transakci av jejím rámci
- Odešlete zprávu s požadavkem na expedici
- Obsah zprávy se nadefinujte vlastní
- Změňte stav skladu, pokud byly výrobky k dispozici lokálně
- Vytvořte a odešlete odpoveď
- Projekt implementujte podle vlastních preferencí buď ve SwitchYardu nebo v pouze v Camelu
- Projekt bude obsahovat sadu testů verifikujících správnost workflow.
- Vaše aplikace bude instalovatelná ve formě Karaf feature a jak výše uvedené instance JBoss A-MQ tak Vaše aplikace budou spravovány pomocí Fabric
- Projekt bude dodán ve formě Docker image, který bude splňovat výše uvedená přístupová omezení. Není nutné řešit perzistenci dat. Při zkoušce se předpokládá, že zkoušený tým nastartuje svůj a dodaný Docker image a bude demonstrovat end-to-end vykonání objednávek podle pokynů zkoušejícího.
Integrované systémy budou dodány vyučujícím ve formě jednoho Docker image. Předpokládá se komunikace mezi image pomocí linku.
Doporučená literatura
- Richard S. Hall, Karl Pauls, Stuart McCulloch, David Savage: OSGi in Action
- Craig Walls: Spring in Action
- Holly Cummins, Timothy Ward: Enterprise OSGi in Action
- Claus Ibsen, Jonathan Anstey: Camel in Action
- Scott Cranton, Jakub Korab: Apache Camel Developer's Cookbook
- Mark Little, Jon Maron: Java Transaction Processing: Design and Implementation
- Thomas Erl: Next Generation SOA: A Concise Introduction to Service Technology & Service-Orientation
- Gregor Hohpe, Bobby Woolf: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
- InfoQ eMag: Microservices
- Dokumentace k projektům
Comments