Ralf Sigmund / Christoph OrtmannOPITZ CONSULTING GmbHIntegrationsprojekte auf dem Wegzur Continuous Delivery
Agenda                   Build         Tests             DeploymentRahmen            Erfolg        Konfiguration
Books on Demand
ERP System
Erfolgsrezept                   &       KANBANPL / SQL           Kurze Time to           Market
ProjektScan Dienstleister anbinden!
B2B   Books on Demand                                 Digitalisierungs-Anbieter                                 Orderdigit...
?
Forts.         ORACLE   Internet
Zielarchitektur EIPs mit Camel              http://www.enterpriseintegrationpatterns.com/
Big Picture
Start
Auftragversand
Die Antwort verarbeiten            Statusinformationen über den Erhalt des            Auftrags .            Sowohl der Ret...
Fertig zum liefernHTTP ServiceEine zweite Route bildet dieAuftragsbestätigung durch das System desDienstleisters ab. Er se...
Camel und PL/SQL passen prima         zusammenPL/SQL               Camel         Fachlogik           Integration
Monitoring und Verfügbarkeit• Datenbank als zentraler Monitoringpunkt
Selbsttest2   Test-Nachrichten    Um die Verfügbarkeit des    Integrationsservers zu kontrollieren,    werden die Camel-Ro...
Internet-VerbindungTest-Nachricht an Google Chart API
Agenda               Build     Tests             DeploymentRahmen        Erfolg        Konfiguration
Welche Tests benötigen wir?                              GeschäftsanforderungenAutom.                                     ...
Unit Tests vermeiden Fehler           •Testgetrieben            vorgehenQualität   •Lean Prinzipien           •Camel Test ...
Camel unterstützt Unit Tests durch           Mock Endpunkte      statusOK.expectedMessageCount(1);      statusOK.expectedM...
Camel bietet Mocks als Stellvertreter  partnerA.whenAnyExchangeReceived(new         MockStatusProcessor("ok"));• Verhalten...
Interceptoren können im Test       bestehende Routen ändernA      B      C       X      CinterceptSendToEndpoint("direct:p...
Continuous Integration• Ganz normal mit Jenkins / Hudson
Functional Tests          •Für die           AuftraggeberAkzeptanz verständliche Tests          •Build the right thing
Features beschreiben ausübbare            AnforderungenFeature: Place order As a Digital Publisher In order to be able to ...
Feature-Tests werden ausführbar         durch Step DefinitionsWhen I send a DELETE request to /incidents/task/5steps.rb:Wh...
Agenda                 Provisionierung         Tests                     DeploymentRahmen             Erfolg              ...
Fehlerquellen gibt es auch nach den               Tests                         DB-URL                         Queue-Name ...
Eine Deployment Pipeline          Commit   Akzeptanz-                                Lasttests   Release           stage  ...
Umsetzung der Deployment Pipeline                             Alles unter                            Alles                ...
Mit Chef einen Karaf Server      provisionieren        Kochbuch für Linux apt tool        ..für Java                      ...
Ein Rezept für Karaf            Dateien zur Basiskonfiguration       Das Rezept
Mit Chef das Karaf Archiv          herunterladenremote_file "/tmp/k.tar.gz" do action :create_if_missing source "http:///w...
.. und auspackenbash "install_karaf" do user "vagrant" cwd "/home/vagrant" code <<-EOH tar -zxf /tmp/#{KARAF}.tar.gz EOHend
Entwicklungssysteme einfach mit    Vagrant provisionieren  Virtualbox    Vagrant         laufender                        ...
genauerVagrant::Config.run do |config| config.vm.box = "base" config.vm.forward_port("karaf_remote_console", 8101, 48101) ...
Startvagrant up
Deployment               feature.xml                             Bundles                             • URI-basiert mvn /  ...
Continuous Delivery brauchtKonfigurationsmöglichkeiten                 • Karaf Shell       Run       • Karaf Fabric      D...
Reproduzierbarkeit ist machbar                                      Binaries nur               Alles einchecken           ...
Nennen wir es LeanSchnell liefernQualität gewährleistenOptimierung (Deming Cycle)Waste eliminierenDecide LateEmpower the t...
Vielen Dank! Fragen?                  https://github.com/sistar/camel-examples      @sistar      ralf.sigmundralf.sigmund@...
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Upcoming SlideShare
Loading in …5
×

Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10

850 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
850
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10

  1. 1. Ralf Sigmund / Christoph OrtmannOPITZ CONSULTING GmbHIntegrationsprojekte auf dem Wegzur Continuous Delivery
  2. 2. Agenda Build Tests DeploymentRahmen Erfolg Konfiguration
  3. 3. Books on Demand
  4. 4. ERP System
  5. 5. Erfolgsrezept & KANBANPL / SQL Kurze Time to Market
  6. 6. ProjektScan Dienstleister anbinden!
  7. 7. B2B Books on Demand Digitalisierungs-Anbieter Orderdigitale externe DienstePublikationsplattform Order Ready Notification Delivery
  8. 8. ?
  9. 9. Forts. ORACLE Internet
  10. 10. Zielarchitektur EIPs mit Camel http://www.enterpriseintegrationpatterns.com/
  11. 11. Big Picture
  12. 12. Start
  13. 13. Auftragversand
  14. 14. Die Antwort verarbeiten Statusinformationen über den Erhalt des Auftrags . Sowohl der Returncode als auch die vollständige Antwort werden mithilfe des O/R Mappers in der Datenbank gespeichert.
  15. 15. Fertig zum liefernHTTP ServiceEine zweite Route bildet dieAuftragsbestätigung durch das System desDienstleisters ab. Er sendet diese an BoD,sobald die Bearbeitung des Auftragesabgeschlossen ist.
  16. 16. Camel und PL/SQL passen prima zusammenPL/SQL Camel Fachlogik Integration
  17. 17. Monitoring und Verfügbarkeit• Datenbank als zentraler Monitoringpunkt
  18. 18. Selbsttest2 Test-Nachrichten Um die Verfügbarkeit des Integrationsservers zu kontrollieren, werden die Camel-Routen in äquidistanten Zeitabständen durch spezielle Testaufträge angestoßen.
  19. 19. Internet-VerbindungTest-Nachricht an Google Chart API
  20. 20. Agenda Build Tests DeploymentRahmen Erfolg Konfiguration
  21. 21. Welche Tests benötigen wir? GeschäftsanforderungenAutom. manuell Functional Examples Exploratory Story TestsSupporting the Team Critique Product Simulations Q2 Q3 Q1 Q4 Performance & Load Unit Tests Testing Component Tests Security Testing „ility“ Testing NFRs Tools/Autom. Autom. Technologie
  22. 22. Unit Tests vermeiden Fehler •Testgetrieben vorgehenQualität •Lean Prinzipien •Camel Test Support
  23. 23. Camel unterstützt Unit Tests durch Mock Endpunkte statusOK.expectedMessageCount(1); statusOK.expectedMessagesMatches(new ResultMessagePredicate("ok")); << PRODUCE >> assertMockEndpointsSatisfied();↘Müssen explizit in Routendefinition angelegtwerden => Testcode in Produktionscode
  24. 24. Camel bietet Mocks als Stellvertreter partnerA.whenAnyExchangeReceived(new MockStatusProcessor("ok"));• Verhalten eines Mocks kann durch Hinzufügen eines Processors gesteuert werden• Rückgabe von Antwortnachrichten• Exceptions für Test des Fehlerhandling
  25. 25. Interceptoren können im Test bestehende Routen ändernA B C X CinterceptSendToEndpoint("direct:partnerA") .skipSendToOriginalEndpoint().to("mock:partnerA") .to("direct:wsResponse");context.getRouteDefinition("resultDecision"). adviceWith(context, createRouteBuilderResultDecision());
  26. 26. Continuous Integration• Ganz normal mit Jenkins / Hudson
  27. 27. Functional Tests •Für die AuftraggeberAkzeptanz verständliche Tests •Build the right thing
  28. 28. Features beschreiben ausübbare AnforderungenFeature: Place order As a Digital Publisher In order to be able to offer a book on my Publishing Plattform I want to order the scanning of the book by a Digitizing ProviderScenario: place an order Given I am a valid API user And I use the payloadID "1079645778@yourdomain.com" And I send and accept XML And I give the order an orderID "XYZ-001" And I add an item with lineNumeber "1" and quantity "1" to the order And I set the Supplier EAN "1234567890123" for line item "1" When I send a POST request to "/orders" with the following: Then the response should be "200" And the XML response should be a cXML with payloadID"1079645778@yourdomain.com" and status code "200"
  29. 29. Feature-Tests werden ausführbar durch Step DefinitionsWhen I send a DELETE request to /incidents/task/5steps.rb:When /^I send a DELETE request to "([^"]*)"$/ do |path| delete pathend
  30. 30. Agenda Provisionierung Tests DeploymentRahmen Erfolg Konfiguration
  31. 31. Fehlerquellen gibt es auch nach den Tests DB-URL Queue-Name Konfig- Service URL uration Code Umgebung Karaf-Version JDK-Version,. Fehler
  32. 32. Eine Deployment Pipeline Commit Akzeptanz- Lasttests Release stage testsCommits
  33. 33. Umsetzung der Deployment Pipeline Alles unter Alles Versionskontrolle automatisieren Provisionierung Konfiguration Provisionierung KonfigurationInfrastructureas Code
  34. 34. Mit Chef einen Karaf Server provisionieren Kochbuch für Linux apt tool ..für Java Infrastructure as Code (in GIT oder SVN)
  35. 35. Ein Rezept für Karaf Dateien zur Basiskonfiguration Das Rezept
  36. 36. Mit Chef das Karaf Archiv herunterladenremote_file "/tmp/k.tar.gz" do action :create_if_missing source "http:///www.apache.org/karaf/2.2.4/apache-karaf-2.2.4.tar.gz" mode "0644" checksum "a09f85142e9bb8290cdf332af8201b31ba6d993a"end
  37. 37. .. und auspackenbash "install_karaf" do user "vagrant" cwd "/home/vagrant" code <<-EOH tar -zxf /tmp/#{KARAF}.tar.gz EOHend
  38. 38. Entwicklungssysteme einfach mit Vagrant provisionieren Virtualbox Vagrant laufender Karaf • Basis ISO • Chef Rezept Server
  39. 39. genauerVagrant::Config.run do |config| config.vm.box = "base" config.vm.forward_port("karaf_remote_console", 8101, 48101) config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe "apt" chef.add_recipe "java" chef.add_recipe "karaf" chef.json.merge!({ :java => { :install_flavor => "sun" }, :karaf => { :db_host => host_ip(), :db_user => "camel", :db_password => "demo" def host_ip() } VirtualBox::Global.global.host.network_interfaces.each do |ifce| if ifce.interface_type == :host_only }) return ifce.ip_address end endend end end
  40. 40. Startvagrant up
  41. 41. Deployment feature.xml Bundles • URI-basiert mvn / http Konfiguration • OSGi Config Manager • Property Placeholder<bundle>mvn:camel/backendService/${pom.version}</bundle> <config name="com.opitz_consulting.cameldemo"> database.driverClassName = oracle.jdbc.OracleDriver </config>
  42. 42. Continuous Delivery brauchtKonfigurationsmöglichkeiten • Karaf Shell Run • Karaf Fabric Deploy • Karaf Features Datei Provision • Chef Rezepte
  43. 43. Reproduzierbarkeit ist machbar Binaries nur Alles einchecken einmal bauen Exakt gleicher Alles Deployment automatisieren Mechanismus in jeder Umgebung Reprodu zierbarkeit
  44. 44. Nennen wir es LeanSchnell liefernQualität gewährleistenOptimierung (Deming Cycle)Waste eliminierenDecide LateEmpower the team spezifizieren umsetzen testen testen Stop the line!
  45. 45. Vielen Dank! Fragen? https://github.com/sistar/camel-examples @sistar ralf.sigmundralf.sigmund@opitz-consulting.com christoph.ortmann@opitz-consulting.com

×