a4m36iss -- Integrace Služeb Softwarových Systémů

Alias: System Integration with JBoss

Účelem je seznámit posluchače s projekty Apache či JBoss jako je 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.

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

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

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ů

Použité nástroje a materiály

  • Java 8
  • git
  • Maven
  • Maven – Welcome to Apache Maven
  • Zdrojové kódy ke cvičením
  • Podpůrné systémy
  • OSGi
  • ActiveMQ
  • SwitchYard
  • Camel
  • Docker Image
  • JBoss Fuse
  • JBoss Developer Studio + Integration Stack plugins
  • Docker
  • Docker - Build, Ship, and Run Any App, Anywhere
  • Google Chrome + Postman (REST Client)
  • Postman | Supercharge your API workflow
  • WildFly application server + Apiman overlay
  • Wildfly 8.2.0.Final
  • Apiman Overlay 1.2.0.Alpha2

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

1. Pro potřeby služby Expedice poskytněte dvě instance JBoss A-MQ nakonfigurované v Master/Slave topologii. 2. 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í

3. Koncové body služby Objednávka nebudou přístupné z vnější sítě. Přístup k nim bude zprostředkován pomocí apiman 4. 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

5. 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

6. 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ď

7. Projekt implementujte podle vlastních preferencí buď ve SwitchYardu nebo v pouze v Camelu 8. Projekt bude obsahovat sadu testů verifikujících správnost workflow. 9. 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 10. 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

Odkazy:

Slidy:

 
Groups:
courses/a4m36iss/start.txt · Last modified: 2016/02/25 14:25 by cernyto3