Forex Uber Hp Java




Forex Über Hp JavaHeutige Borse Nachrichten amp Analyse Realzeit nach Stunden Pre-Market Nachrichten Blitz Zitat Zusammenfassung Zitat Interaktive Diagramme Voreinstellung Bitte beachten Sie, dass, sobald Sie Ihre Auswahl treffen, es fur alle zukunftigen Besuche der NASDAQ gelten. Wenn Sie zu einem beliebigen Zeitpunkt daran interessiert sind, auf die Standardeinstellungen zuruckzukehren, wahlen Sie bitte die Standardeinstellung oben. Wenn Sie Fragen haben oder Probleme beim Andern Ihrer Standardeinstellungen haben, senden Sie bitte eine E-Mail an isfeedbacknasdaq. Bitte bestatigen Sie Ihre Auswahl: Sie haben ausgewahlt, Ihre Standardeinstellung fur die Angebotssuche zu andern. Dies ist nun Ihre Standardzielseite, wenn Sie Ihre Konfiguration nicht erneut andern oder Cookies loschen. Sind Sie sicher, dass Sie Ihre Einstellungen andern mochten, haben wir einen Gefallen zu bitten Bitte deaktivieren Sie Ihren Anzeigenblocker (oder aktualisieren Sie Ihre Einstellungen, um sicherzustellen, dass Javascript und Cookies aktiviert sind), damit wir Ihnen weiterhin die erstklassigen Marktnachrichten liefern konnen Und Daten, die Sie kommen, von uns erwarten. Manageability Share the article Deep Learning kann als eine neue Maschine Lern-Toolkit, die eine hohe Wahrscheinlichkeit zu fuhren, um erweiterte Formen der kunstlichen Intelligenz beschrieben werden. Der Beweis dafur liegt in der schieren Zahl der Durchbruche, die seit Anfang dieses Jahrzehnts eingetreten sind. Es gibt einen neu gefundenen Optimismus in der Luft und wir sind jetzt wieder in einem neuen AI-Fruhling. Leider scheint der gegenwartige Zustand des tiefen Lernens viele Moglichkeiten, der Alchimie ahnlich zu sein. Jeder scheint seine eigenen schwarz-magischen Methoden des Entwerfens von Architekturen zu haben. Das Feld muss also vorwarts gehen und streben nach Chemie, oder vielleicht sogar ein Periodensystem fur tiefes Lernen. Obwohl das tiefe Lernen noch in der fruhen Kindheit der Entwicklung liegt, strebt dieses Buch eine gewisse Vereinheitlichung der Ideen im tiefen Lernen an. Es nutzt eine Methode der Beschreibung genannt Muster Sprachen. Mustersprachen sind Sprachen, die von Entitaten abgeleitet werden, die als Muster bezeichnet werden, die, wenn kombiniert, Formulare zu komplexen Problemen bilden. Jedes Muster beschreibt ein Problem und bietet alternative Losungen. Mustersprachen sind eine Moglichkeit, komplexe Losungen auszudrucken, die aus Erfahrung gewonnen wurden. Der Vorteil einer verbesserten Ausdruckssprache ist, dass andere Praktiker in der Lage sind, ein viel besseres Verstandnis fur das komplexe Thema zu gewinnen und eine bessere Losung fur Probleme zu finden. Die Mehrheit der Literatur im Bereich der Informatik, die Phrase Design Patterns wird anstelle der Mustersprache verwendet. Wir verwenden absichtlich Mustersprache, um zu reflektieren, dass das Gebiet des tiefen Lernens ein naszierendes, aber schnell sich entwickelndes Feld ist, das nicht so reif ist wie andere Themen in der Informatik. Es gibt Muster, die wir beschreiben, die nicht tatsachlich Muster sind, sondern konnen grundsatzliche Konzepte sein. Wir sind nie sicher, welches Wesen wirklich grundlegend ist und nur weitere Erforschung und Aufklarung konnen einen gemeinsamen Konsens auf dem Gebiet bewirken. Vielleicht wird in der Zukunft ein wahres Designmusterbuch als Reflexion der Reife dieses Feldes entstehen. In ML gibt es viele neue Begriffe, denen man begegnet, wie kunstliche neuronale Netze (ANN), Random Forests, Support Vector Machines (SVM) und Non-negative Matrix Factorization (NMF). Diese beziehen sich jedoch ublicherweise auf eine spezielle Art von maschinellem Lernalgorithmus. Deep Learning (DL) im Gegensatz ist nicht wirklich eine Art von Algorithmus, sondern es ist eine ganze Klasse von Algorithmen, die dazu neigen, ahnliche Eigenschaften aufweisen. DL-Systeme sind ANN, die mit mehreren Schichten (manchmal Multi-Level-Perceptrons genannt) aufgebaut sind. Die Idee ist nicht ganz neu, denn sie wurde erstmals in den 60er Jahren vorgeschlagen. Allerdings ist das Interesse an der Domane mit Hilfe der Forderung der Computertechnik (d. h. GPU) und der gr?eren Trainingsdatenquellen explodiert. Seit 2011 zeigen DL-Systeme auf dem Gebiet des maschinellen Lernens eindrucksvolle Ergebnisse. Die Verwirrung mit DL entsteht, wenn man erkennt, dass es tatsachlich viele Algorithmen und es ist nicht nur eine Art. Wir finden die konventionellen Feed-Forward-Netzwerke, auch Fully Connected Networks (FCN), Convolution Networks (ConvNet), Recurrent Neural Networks (RNN) und weniger eingesetzte Restricted Boltzmann Machines (RBM). Sie alle haben ein gemeinsames Merkmal, dass diese Netzwerke mit Hilfe einer Hierarchie von Schichten aufgebaut werden. Ein gemeinsames Muster ist zum Beispiel der Einsatz von differenzierbaren Schichten, diese Beschrankung der Konstruktion von DL-Systemen fuhrt zu einer inkrementalen Weiterentwicklung der Maschine in eine Klassifikation. Es gibt viele Muster, die vor kurzem entdeckt wurden, und es ware fruchtbar, damit Praktiker eine Zusammenstellung dieser Muster zur Verfugung haben. Weitere Informationen zu diesem Buch finden Sie unter: A Pattern Language for Deep Learning. Oder Sie konnen nach Updates bei Design Patterns fur Deep Learning Hier sind einige Vorschau-Grafiken, hier8217s eine periodische Tabelle der verschiedenen Design-Muster: und die Beziehungen einiger der Muster in dem Buch beschrieben: Teilen Sie den Artikel Teilen Sie den Artikel I8217ve wurde gefragt Um meine Gedanken uber hoch skalierbare Transaktionsverarbeitung zu teilen. Transaction Processing ist seit Jahrzehnten ein ausgiebig erforschter Bereich im Bereich der Datenverarbeitung und viele der hellsten Kopfe haben dieses Thema bereits jetzt getotet. Das Skalieren der Transaktionsverarbeitung ist ein au?erst schwieriges Problem, da es versucht, eine Losung fur zwei diametral entgegengesetzte Krafte zu finden, namlich ACID (Single Entity) gegenuber Distributed Computing (replizierte Entitaten). Transaktionsverarbeitungssysteme wurden in der Vergangenheit mittels eines der beiden Kommunikationsmechanismen RPC und Queued erfunden. Anwendungsserver wie EJB-Container konnen ihre Linie wieder auf Transaktionsmonitoren zuruckverfolgen. Diese vorgeschrieben, um einen RPC-Stil der Kommunikation zu tun Transaktionsverarbeitung. Einer wurde einen JCA-Adapter verwenden, um mit XA-Ressourcen zu kommunizieren, die von JTA verwaltet werden. Unterhalb der Abdeckungen wurde RPC das Zwei-Phasen-Commit-Protokoll (TPC) verwenden. In seiner allgemeinsten Form ware der Paxos-Algorithmus der Mechanismus, um die Konsistenz zwischen verteilten Systemen zu gewahrleisten. In dem Bestreben, mehr fahige Hardware zu exponentiell hoheren Preisen zu verkaufen, scheint ein RPC-basierter Ansatz ein idealer Motivator zu sein. Das Problem aber mit RPC-basierte Transaktionsverarbeitung ist, dass es schwierig ist, auf viele billigere Boxen zu skalieren. (Skalierung, um mehr Server zu verwenden ist okonomischer, da die Kosten nur linear zunehmen und die Leistung nicht an die neueste Technologie gebunden ist, die die Industrie bereitstellen kann.) Der Warteschlangenansatz hat sich jedoch im Laufe der Jahre gezeigt (TBD: show reference) Ansatz zur Erreichung der Skalierbarkeit. Die Balance, mit der man arbeitet, ist Latency versus Consistency. Beim RPC-Ansatz ist die Latenzzeit fur die Konsistenz gefahrdet, da TPC-ahnliche Kommunikationen sehr teuer sind. Im Warteschlangenansatz ist die Latenz auch zugunsten der Konsistenz gefahrdet, da die Kommunikationsverarbeitung asynchron und nicht sofort durchgefuhrt wird. Eine gute Analogie zur Erklarung des Unterschieds in den Ansatzen kann durch die Untersuchung des Unterschieds in einem pessimistischen versus optimistischen Verriegelungsansatz gemacht werden. Im pessimistischen Ansatz nimmt man einen praventiven Ansatz, so dass alle Daten immer synchronisiert werden. Dies geschieht, indem Ressourcen vor der Ausfuhrung reserviert werden. Diese Reservierung reduziert jedoch die Menge der Parallelitat im System. Denken Sie zum Beispiel an ein Versionskontrollsystem, bei dem ein Entwickler eine Datei gesperrt hat, wobei Entwickler warten mussen, bis sie freigeschaltet ist. Im Gegensatz dazu ermoglicht ein optimistischer Sperransatz (aka Versionierung), dass mehrere Entwickler ihre Arbeit in einer nicht blockierenden Weise fortsetzen konnen. Queuing ist naturgema? nicht blockierend und sorgt so fur maximale Parallelitat. Allerdings gibt es immer, dass kritische Abschnitt, der auf freigegebenen Ressourcen arbeitet. Die Hoffnung ist jedoch, dass dieser kritische Abschnitt in einer einzigen Maschine und in einer Weise ausgefuhrt wird, die Sperren kurzlebig halt. Auf einer abstrakten Ebene konnen Sie Einblick von Patt erhalten, wo er die Einschrankungen betont, die ein System benotigt, um Transaktionen zu ermoglichen. Eine abgebrochene Liste seiner Anforderungen wird wie folgt aufgelistet: Entitaten sind eindeutig identifiziert 8211 Jede Einheit, die diskrete Daten reprasentiert (d. h. keine Uberlappung von Daten zwischen Entitaten), sollte einen eindeutigen Schlussel haben. Mehrere disjunkte Geltungsbereiche der transaktionalen Serialisierbarkeit 8211 mit anderen Worten, es gibt diese 8216entities8217 und man kann keine atomaren Transaktionen uber diese Entitaten durchfuhren. Bei dem Mindestsystem 8211, bei dem es sich um eine Anwendung handelt, muss es sich um Nachrichtenversuche und um nicht eingehende Nachrichten von Nachrichten handeln. Nachrichten werden an Entitaten 8211 adressiert, die eine Entkopplung von der Geschaftslogik zur Existenz der eindeutigen Schlussel zur Adressierung von Entitaten ist. Die Adressierung ist jedoch ortsunabhangig. Er schreibt uber Entitaten, die uber extrem begrenzte Transaktionsfahigkeiten verfugen. Um Skalierbarkeit zu erreichen, muss man definieren, dass Bundel von Daten in ihrer Fahigkeit, an Transaktionen teilzunehmen, behoben sind. Diese Bundel von Daten oder Partitionen konnen keine Transaktionen mit anderen Partitionen ausfuhren. Bei der Partitionierung fur die Skalierbarkeit mussen Sie den Datenverkehr auf die bestimmte Partition verweisen, die die Transaktion vollstandig lokal ausfuhren kann. It8217s Art von einem Link das Dual von NoSQL. In NoSQL werden Daten an vielen Stellen dupliziert (d. h. denormalisiert), um eine maximale Skalierbarkeit zu erreichen. In einem Transaktionssystem sollten die Daten, die in einer Transaktion verarbeitet werden, logisch nur an einer Stelle verbleiben. Cameron Purdy8217s talk 8220Traditionelle Programmierung Modelle: Stone Messer und Bearskins in der Google Age 8221, die eine Forex Exchange Clearing-Haus erwahnt, wo ein Drittel der Transaktionen EURUSD sind. Dazu mussen die EURUSD-Geschafte an ein einziges Feld geleitet werden, das den EURUSD-Markt bearbeitet. Aus Haltbarkeitsgrunden werden nur die Auftragserteilung und die Auftragsfullung gegen die Datenbank durchgefuhrt, alles andere ist nur ein Durchlauf in den Speicherdaten. Dieses System war 1000x schneller als das ursprungliche System und hatte Auftrage wurden unter 3ms verarbeitet. Billy Newport in seinen Folien 8220Using Chained Transactions fur Maximum Concurrency unter Last 8221 auch die gleiche grundlegende Blaupause zeigt, wie er skaliert ein eCommerce-System. Die Partition, die er ausfuhrt, ist, dass jede SKU eine Einheit ist, die die Transaktionsintegritat von Daten sicherstellt. Nachrichten werden durch das System geleitet, das Befehle und seine entsprechenden Ruckgangig-Befehle enthalt. Diese Ruckgangigmachung ermoglicht es dem System, kaskadierende Kompensationstransaktionen auszufuhren, falls eine Transaktion, die die Kette hinunter lauft, nicht erfolgreich abgeschlossen werden kann. Zusammenfassend lasst sich sagen, dass die grundlegende Richtlinie, um hohe Skalierbarkeitstransaktionen zu ermoglichen, einfach ist, konnen Sie eine Partition finden, die es erlaubt, Ihre Transaktionen in einer einzigen Box durchzufuhren8221 Diese Partitionierung ist ohne Zweifel abhangig von einem bestimmten Anwendungsfall. So fur FOREX ist es der Wahrungspaare (d. H. EURUSD) Markt und fur eCommerce kann es die Produkt-SKU und sein Inventar sein. Allerdings, wenn Ihre Use Cases don8217t haben eine naturliche Partition Die Losung ware eine, die analog zu sein, wie Airlines uber die Buchung ihrer Fluge ubernehmen wurde. Das hei?t, hoffen, dass die Wahrscheinlichkeit niedrig ist und dass, wenn das Szenario auftritt, dann verwenden Sie Out-Band-Kompensationen, um die Versto?e gegen die Geschaftsregeln zu korrigieren. Wie diese Art von Kompensationsmechanismus umgesetzt wird, ist ein au?erst interessantes Thema. Interessanterweise haben meine hohen Gedanken uber Transaktionen nicht viel verandert im Laufe der Jahre. Teilen Sie den Artikel Teilen Sie den Artikel Cloud Computing ist all die Wut in diesen Tagen. Problem hier aber gibt es zu viele Definitionen schwimmenden herum. Ich mochte aber noch eine andere Definition vorschlagen. Cloud Computing ist Software in einer Box, oder praziser 8220Cloud Computing ist Software in einer virtuellen Box8221. Was ist 8220Software in einer Box8221 Dies ist eine Idee, die es schon seit langem gibt. Ich schrieb ein Blog uber es zuruck im Jahr 2003 (siehe: 8220An Alternative Way Of Packaging Software: Hardware enthalten) 8221. Fur Cloud Computing wurde dieser Titel jetzt lesen: 8220An Alternative Weise der Verpackung Software: Data Center Included8221. Vor Jahren hat Bill Gates einst auf PCs wie Dell und Compaq (Now HP) als Value Added Reseller (VARs) hingewiesen. Das ist alles, was sie taten, war Mehrwert zu Microsoft8217s Software durch Bundelung ihrer Hardware mit ihm. Selling-Software ist alles uber Verpackung. Die meisten Software wird gekauft, weil seine Verpackung Komfort fur die Kunden liefert. Es ist nicht in der Regel whiz bang Technologie, die den Verkauf macht, sondern ist uber Benutzerfreundlichkeit, das ist Usability. Was kann einfacher sein, als einen Kasten von einem Verkaufer zu empfangen, ihn dann in die Wand und in das Netz zu verstopfen, um es zu laufen gut es stellt sich heraus, empfangt eine virtuelle Kiste von einem Verkaufer und ist nicht sogar einfacher Die Vorteile einer 8220Software in einem Box8221 wurden in diesem alten Artikel 2003 beschrieben. Weniger Entwicklungskomplex 8211 Das sind weniger Konfigurationen zu unterstutzen. Higher Performance 8211 Die Leistung kann auf die mit der Software gelieferte Hardware abgestimmt werden. Bessere Sicherheit 8211 Die Box kann vor der Auslieferung gehartet und getestet werden. Einfachere Bereitstellung 8211 Einfach hinzufugen Strom-und Netzwerk-Konnektivitat. Zuverlassigkeit 8211 Weniger Konfiguration bedeutet weniger Parteien mit dem Finger auf. Preise 8211 Menschen wie zahlen fur etwas, das sie beruhren konnen. Distribution 8211 Fahren Sie auf den Mantelschwanzen von Hardware-Herstellern. Schneller Vorlauf jetzt, 8 Jahre spater, und wir haben die gleichen Vorteile fur Cloud Computing: Reduzierte Entwicklungskomplexitat 8211 Software kann vorkonfiguriert, getestet und fur die Ziel-Cloud-Plattform gehartet werden. Siehe: AWS Cloud Formation fur den Umgang mit komplexen Netzwerken. Higher Performance 8211 Software kann auf die Ziel-Cloud-Plattform vorkonfiguriert werden. Wenn man zum Beispiel eine Machine Learning-basierte Anwendung liefert, konnte man eine Losung fur den GPU-Cluster von Amazon8217 konfigurieren. Bessere Sicherheit 8211 Die Losung kann in der Wolke gehartet werden. Einfacher Provisioning 8211 Melden Sie sich einfach auf einer Website. Zuverlassigkeit 8211 Der Cloud-Provider ubernimmt die volle Verantwortung auch fur operative Probleme. Man braucht das Know-how, um ein Hochverfugbarkeits-Setup zu konfigurieren. Preis 8211 Pay as you go, verwenden Sie nur, was Sie brauchen. Elasticity 8211 Nahtlos skalieren, wenn die Nachfrage steigt. In einem fruheren Leben als Product Architect arbeitete ich auf einem Dia-Deck, die zeigte, wie meine company8217s Losung wurde in einem potenziellen Client8217s Netzwerk passen. Ich hatte eine Losung, die mehrere Boxen, die Skalierbarkeit, Verfugbarkeit und Heterogenitat der Losung zu decken. Die Ruckkopplung, die ich empfing, war, dass es zu viele Kasten gab, die ich auch gemerkt hatte, Entsendungzeit mit einem Kunden zu kommen, wurde es muhsam, an so vielen Netzzusammenschaltungs-Sitzungen teilzunehmen. Meine mogliche Losung fur dieses Verpackungsproblem war, dass die Software nun in einem Blade-Chassis eingesetzt werden wurde, wobei alle Komponenten in Blades vorkonfiguriert und das Netzwerk mit einem virtuellen Router in einem Blade vorkonfiguriert wurden. Wir waren jetzt zuruck zu einem einzigen 16u-Box Der Nachteil von Cloud Computing im Vergleich zu Software in einer Box ist die Tatsache, dass der Kunde kann es halten und als Folge speichern sie in one8217s Pramissen. Auf einer Saugetier-Hirn-Ebene, eine Menge Leute konnen sehr unangenehm mit diesem. There8217s naturlich auch die Interessen der Bewirtung in einem geteilten Netz, die Sicherheit der Daten auf geteiltem Speicher und die Robustheit der Netzkonnektivitat. Um diese Angste zu uberwinden, konnte man naturlich eine 8220Cloud in einer Box8221 liefern. Ich schrieb einen kurzen Blog-Eintrag zu Pat Helland8217s Papier 8220Life jenseits Distributed Transactions: ein Apostate8217s Meinung 8221 (Worthy einer zweiten und dritten gelesen). Ich fand es neugierig, dass es von Highscalabilty neu entdeckt wurde (siehe: 82207 Design Patterns fur fast unendliche Skalierbarkeit 8220). Obwohl Highscalability eine Fundgrube fur Implementierungsideen ist, um eine hohe Skalierbarkeit zu erreichen. Es machte mich frage mich, wenn jemand anderes hatte eine Mustersprache fur hohe Skalierbarkeit Ich habe ein paar Versuche gesehen und dieser Eintrag ist ein schneller Versuch, die erweitern und zaubern eine neue. Hoffentlich dient es als guter Ausgangspunkt fur weitere Verfeinerung und Verbesserungen. Auf der abstraktesten Ebene gibt es Daniel Abadi8217s PACELC-Klassifikation fur verteilte Systeme. IMHO, PACELC, im Vergleich zum Brewster8217s-CAP-Theorem, ist eine pragmatische Beschreibung der Kompromisse, die man bei der Konstruktion eines verteilten Systems machen wird. PACELC sagt, dass, wenn es ein Netzwerk (P) - Kunstion gibt, das System eine (A) Vailability oder (C) onsistency (E) lse im Normalzustand favorisiert (L) atension oder (C) onsistency. Cameron Purdy (Grunder von Oracle8217s Coherence Produkt) hat eine Prasentation, in der er diese Bausteine ??fur das Scaling-out vorschlagt: Routing Partitionierung Replikation (zur Verfugbarkeit) Koordination Messaging Diese kurze Liste wird verbreitet, um alle verteilten Systeme, die in der Wildnis angetroffen werden konnen, umfassend zu decken . Wenn ich die PACELC auf diese Klassifizierung angewendet, kann ich in der Lage, Routing, Replikation und Koordination Techniken, die entweder Konsistenz oder Verfugbarkeit zu wahlen. Au?erdem kann ich Routing, Koordination und Messaging auswahlen, das Latenz oder Konsistenz begunstigt. Jonas Boner, die ich schon seit langer Zeit sehr gro? habe (s. AspectWerkz), verfugt uber ein gro?es Diaprojekt, das die vorhandenen Techniken im Detail skizziert, um Skalierbarkeit zu erreichen. Im Folgenden wird gezeigt, wie diese Liste in die Purdy8217s-Klassifikation abgebildet werden kann (ich habe mir die Freiheit genommen, die ursprungliche Klassifizierung zu verfeinern), I8217ve markiert, welcher Trade-off bevorzugt ist, entweder Latency oder Consistency, wo ich dachte sinnvoll. (Latenzzeit) ESB Ereignis-Stream-Verarbeitung (Latenzzeit) CQRS (Konsistenz) Dynamisches Lastverteilungsverhalten Partitionierungsschleifen-Parallelitat ForkJoin MapReduce Round Robin (Latenzzeit) Verteiltes Caching (Latenz) HTTP-Caching (Latenz) (Zuverlassigkeit) Master Slave-Asynch (Latenzzeit) Master Master-Synchron (Konsistenz) Master Master-Asynch (Latency) Buddy-Replikation-Synchronous (Konsistenz) Buddy-Replikation-Asynch (Latenzzeit) Zustandskoordination Nachricht ubergeben Gleichzeitigkeit (Latenz) Software Transaktionaler Speicher (Konsistenz) Gemeinsamer Zustand Gleichzeitigkeit (Konsistenz) Datensatz (Ubereinstimmung bei Synchron) Verhaltenskoordination SIMD MasterWorker Nachricht (Konsistenz) Anfragen-Antwort (Latenz) Store-Forward (Konsistenz) Der Kompromi? zwischen Konsistenz und Verfugbarkeit ergibt sich aus der Implementierung der Replikation durch Auswahl eines Synchronous Asynchronous Synchronous Messaging (oder sogar Koordination). Der Einsatz von Partitionierung begunstigt Latenz und nie Konsistenz (dies sollte offensichtlich sein). Die restlichen Muster von Routing, Coordination und Messaging bieten die Flexibilitat, wo man entweder Latenz oder Konsistenz wahlen kann. Dies scheint zunachst ein praktikabler Ausgangspunkt zu sein. Obwohl, dort8217s viel Raum fur Verbesserung. Zum Beispiel in der Kategorie Replikation, Master-Master oder die allgemeinere Form der Buddy-Replikation ist eindeutig begunstigt Konsistenz auf Kosten der Latenz ungeachtet der Wahl der synchrone oder asynchrone Messaging und Koordination Strategie. Ich denke, dieser Artikel 8220Concurrency-Steuerelemente in Data Replication bietet eine bessere Klassifizierung der Replikationstechniken. Es gibt auch einige Inkonsistenzen, die eine weitere Verfeinerung erfordern, beispielsweise scheint die Fire - und Forget-Routing-Strategie Latency in dem Sinne zu bevorzugen, dass sie nicht blockierend ist (siehe: Skalierbarkeit Best Practices: Lehren aus eBay 8220) Die Anwesenheit einer Warteschlange, die eindeutig Konsistenz uber Latenz begunstigt. So begunstigt es Latenz von der Anruferperspektive, aber Konsistenz von der Empfangerseite (d. h. alles ist serialisiert). Im allgemeinen kann man sagen, da? die Entkopplung (oder lose Kopplung) die Latenz bevorzugt, wahrend die enge Kopplung die Konsistenz begunstigt. Als Beispiel ist die optimistische Parallelitat lose gekoppelt und begunstigt daher die Latenz. Zusammenfassend gibt es eine Menge von Techniken, die in den letzten Jahrzehnten entwickelt wurden. Konzepte wie Dataflow und Tuple Spaces und viele andere Parallel Computation Techniken sind seit den 821770 bekannt. Die Frage, die ein Architekt aber heute stellen kann (was damals nicht gefragt wurde), ist diejenige Technik, die bei den von PACELC definierten Kompromissen verwendet wird. Die kurze Kommen dieser Mustersprache ist, dass ist nicht ein Rezept, wie man hohe Skalierbarkeit zu erreichen. Es bietet nur die Muster, die man in einem System mit hoher Skalierbarkeit finden wurde. Die Auswahl der Architektur sollte klar durch die Anwendungsfalle und Anforderungen getrieben werden. Das hei?t, betrachten vertikale (siehe: 8220Nuggets von Weisheit von eBay8217s Architektur 8220) sowie horizontale Partitionierung. Schlie?lich, es sei denn, ein Dienst hat eine begrenzte Anzahl von Anwendungsfallen, kann man erwarten, dass eine Einheit eine Gro?e passt alle Architektur im Bereich der hohen Skalierbarkeit zu erwarten. P. S. Ich stolperte vor kurzem dieses sehr beeindruckende Papier von James Hamilton von Microsoft8217s Live. Er schreibt uber die wichtigen Uberlegungen, wenn es darum geht, ein System mit hoher Skalierbarkeit aus operativer Sicht zu entwickeln. Diese Art von Einsicht ist extrem sehr schwer zu bekommen. Nicht viele Software-Entwickler haben die Intuition zu verstehen, was im Rechenzentrum geht. Auf meinem nachsten Eintrag, I8217ll versuchen, einige der Hamilton8217s Ideen zu integrieren, um diese Mustersprache zu verbessern. Teilen Sie den Artikel Teilen Sie den Artikel Alle zu vielen Service-orientierten Architektur (SOA) Praktiker scheinen einen Glauben zu haben, dass, weil SOA befasst sich mit verteilten Computern, dass Skalierbarkeit ein gegeben ist. Die Realitat ist jedoch, dass herkommliche SOA-Praktiken dazu neigen, gegen die Entwicklung von Anwendungen mit hoher Skalierbarkeit zu arbeiten. Dieser Artikel zeigt die Eigenschaften eines Systems, das eine hohe Skalierbarkeit erreichen kann und es dann mit konventionellen SOA-Praktiken kontrastiert. Die Muster, die in einem System gefunden werden, das eine hohe Skalierbarkeit aufweist, sind die folgenden: Zustandsroutingverhalten Routingverhalten Partitionierungsstatus Partitionierungsstatus Replikationsstatus Koordination Verhalten Koordination Messaging Dies wurde in einem fruheren Blogeintrag 8220A Design Pattern fur hohe Skalierbarkeit 8220 diskutiert. SOA basierte Systeme konventionell Abdeckung Routing, Koordination und Messaging. Allerdings werden die Muster der Partitionierung und Replikation von SOA-Systemen unzureichend behandelt. Als Referenz kann man sich auf die SOA Patterns Buch, dass I8217ve abgedeckt in dieser Uberprufung beziehen. Die Worter 8220Partitioning8221 und 8220Replication8221 sind nicht uberraschend can8217t im book8217s Index gefunden. Skalierbarkeit ist anscheinend kein Anliegen, durch SOA-Muster angesprochen zu werden. Was sind dann die Muster, die wir zu SOA einfuhren konnen, um Skalierbarkeit zu gewahrleisten Hier sind ein paar vorgeschlagene Muster aus dem vorherigen Artikel: Verhalten Partitionierung Schleife Parallelitat ForkJoin MapReduce Round Robin Zuweisung Zufallige Zuteilung Gewichtete Zuteilung State Partitioning (begunstigt Latenz) Distributed Caching HTTP Caching Sharding Statusreplikation Synchronous Replikation mit lokalen Sperren und verteilten Transaktionen Synchrone Replikation mit lokalen Sperren und lokalen Transaktionen Asynchrone Replikation mit Update Anywhere Asynchrone Replikation mit Update nur bei der Master-Site Wie konnen diese ausgefuhrt werden? Muster in einem SOA-System manifestieren Um eine Verhaltens-Partitionierung zu erreichen, kann das Konstrukt eines Command Pattern (siehe: Command Pattern) und das Functor Pattern verwendet werden. In der herkommlichen SOA-Architektur muss das Verhalten (wie im ausfuhrbaren Code) uber das Netzwerk propagiert werden, das durch Empfangen von Diensten ausgefuhrt wird. Anstelle einer allgemein vereinbarten Norm kann man XQuery entweder als Stand fur diese Fahigkeit einsetzen. Man sollte daher Dienste definieren, um XQuery auf eine Art und Weise zu akzeptieren, wie SemanticWeb-Systeme SPARQL akzeptieren. Ein Schlussel zur Erreichung der Skalierbarkeit ist, dass das Verhalten in der Nahe der Daten bewegt werden kann, auf die es einwirken soll. Verhalten, das auf Daten uber entfernte Aufrufe funktioniert, ist eine Garantie, die Skalierbarkeit zu toten. Siehe 8220Hot-Trend: Verschieben von Verhalten auf Daten fur eine neue interaktive Anwendungsarchitektur 8220. Um eine State-Partitionierung zu erreichen, mussen SOA-basierte Systeme den Begriff persistenter Identifizierer von Daten ubernehmen. WS-I hat den Begriff der WS-Adressierung, die typischerweise verwendet werden, um Endpunkte zu referenzieren, im Gegensatz zu tatsachlichen Einheiten. Was erforderlich ist, ist, dass diese Adressierung oder persistenten Identifizierer analog zu konsequentem Hashing wirken, so dass Entitaten partitioniert und uber mehrere Endpunkte zuganglich sein konnen. Identifier-basierte Dienste mussten aufgestockt werden, um die Umleitung zu den Endpunkten durchzufuhren. Schlie?lich gibt es das Problem der Replikation zur Unterstutzung der Verfugbarkeit und Failover. Die fruheren Identifier-basierten Dienste konnen als Router fungieren, um das Failover zu bewaltigen. Alternativ kann Proxy-Server in der Weise verwendet werden, die in A New Art of Tiered Architecture beschrieben wird. Die Replikationsfahigkeit erfordert jedoch die Exposition von neuen Arten von Diensten, die ein Replikationsprotokoll unterstutzen. Am einfachsten ware es, eine Publish - und Abo-Schnittstelle zur Verfugung zu stellen. Abschlie?end kann eine hohe Skalierbarkeit in SOA tatsachlich moglich sein. Es ist ein bass-ackward Weise der Erreichung hoher Skalierbarkeit, aber wenn Ihre einzige Option ist es, SOA verwenden, dann kann es nur eine Moglichkeit, es zu erreichen. Teilen Sie den Artikel Teilen Sie den Artikel Oh, wie die Zeit vergeht I8217ve ziemlich Remiss bei der Bereitstellung meiner jahrlichen Vorhersagen in der Software-Entwicklungsumgebung. Muss die minimale wirtschaftliche Depression, die wir durch, dass nur doesn8217t scheinen fur viele Leute enden zu gehen. Ich bin uberrascht mich zu finden, das letzte Mal veroffentlichte ich meine Prognosen war im Jahr 2007 That8217s ein Jahr vor dem epischen Markt Absturz. Nun, es stellt sich heraus, dass die meisten meiner Vorhersagen (oder eher Beobachtungen) kam zu verwirklichen. Das hei?t, Virtualisierung, Cloud Computing, dynamische Sprachen, Javascript Browser Integration, RIA Frameworks, openID, der Tod von Webservices und das Leben nach EJB sind alle gemeinsamen Merkmale der heutigen Softwareentwicklungslandschaft. Was uberrascht, ist, wie wenig diese Tendenzen sich in den letzten 4 Jahren geandert haben, seit ich sie bildete. Scheint nur stetige Verbesserungen (oder Ruckgange) auf einer Jahr-zu-Jahr-Basis sein. Interessant ist, dass wenn ein Konzept oder eine Technologie eine Abnahme hat, bleibt es bestehen. Die Frage ist nur die Geschwindigkeit des Niedergangs. Nehmen Sie zum Beispiel WS-Standards und EJB, in den letzten 4 Jahren Fortschritte in diesem Raum hat sich zu einem Crawl (EJB) verlangsamt oder vollstandig gestoppt (WS-). Naturlich sind diese Raume nicht vollig okonomisch tot. In diesen beiden Bereichen sind massive Investitionen getatigt worden, und dies ist sicherlich eine vorsichtige und tragfahige Agenda, um weiter zu verfolgen. Hierbei handelt es sich um altere Apps der letzten Generation. Meine anderen 2007 Prognosen haben weniger von einem erkennbaren Fortschritt gemacht. Parallelprogrammierung (auf der CPU-Ebene) und Semantic Web. Es gibt naturlich massive Fortschritte in der CUDA-Raum und in LinkedData, aber diese Technologien sind nicht so allgegenwartig, wie ich vorhergesagt hatte. Es gibt jedoch eine Vorhersage, die eine Trendumkehr erlebt. JCR in den Jahren nach 2007 machte robuste Fortschritte, dass es ublich, viele neue Java-Projekte auf der Grundlage zu sehen war. Doch in den letzten Jahren, wahrscheinlich wegen der Konkurrenz mit NoSQL, scheint es eine uberzeugende Alternative zur Dokumentenlagerung. Trotz der Wirtschaft (die ich dem globalen Gleichgewicht mehr zuschreibe), sind dies sehr spannende Zeiten fur die Softwareentwicklung. Es gibt einen Seewechsel, der geschieht, der schnell das Gesicht der Industrie andert. Hier sind meine 2011 Prognosen fur die Software-Entwicklung. Enterprise AppStores 8211 Okay, Leute haben darauf hingewiesen, seit Jahren mit verschiedenen Namen (Widgets, Gadgets, Midlets usw.) Ich meine, Java selbst hat seinen Schub wegen der Applets. Wir wissen jetzt, was aus Applets gekommen ist. Die Thin Client Revolution wurde vor einem Jahrzehnt vorgebracht. Nun, es stellt sich heraus, es ist angekommen, mit freundlicher Genehmigung von schneller und energieeffizienter Prozessoren und Gesten angetriebenen Geraten. Unternehmen fordern die Art von Apps, die sie auf ihrem Smartphone und Tablets finden. Gone wird monolithische Anwendungen mit vielen Features, die selten verwendet werden. In werden hochspezialisierte Anwendungen mit hoher Usability. Unternehmen, die Kontrollfreaks, die sie sind, werden auf Governance bestehen. Dies bedeutet letztendlich ein AppStore pro Unternehmen Basis. Javascript Virtual Machines 8211 Dieser Trend wird immer gro?er und gro?er jedes Jahr und so viel wie wir die Sprache und Umwelt finden, um schwierig und unskalierbar zu sein, wird die Gemeinschaft damit umgehen mussen. Eine Mehrheit der neuen Entwicklungsprojekte mussen herausfinden, wie sie Skalierung Javascript-Entwicklung oder sterben versuchen. Es gibt mehrere konkurrierende Alternativen, darunter Javascript-Frameworks wie jQuery und YUI, behandeln Javascript als Assembler-Sprache wie GWT und CoffeeScript und behaupten, es doesn8217t existieren wie JSF, Vaadin und RAP. Ihr Gift mochte, basierend auf der Art von app, die Sie bauen, ausgewahlt werden. Was wir sehen werden, ist ein gro?er Prozentsatz der App wurde in einem Javascript-Container ausgefuhrt werden, sei es im Browser, der mobilen App (PhoneGap) und dem Server (siehe: NodeJS, Jaxer). NoSQL 8211 Dies ist ein schwerer Aufruf zu machen, nur weil nicht viele Anwendungen werden diese Art von Skalierbarkeit benotigen. Das ist, wenn man es aus der Sicht der gro?en monolithischen Anwendungen betrachten. Wenn jedoch ein Unternehmen Tausende von kleinen Anwendungen bedienen soll, dann ist es schnell besser, diesen Weg zu verwirklichen, ohne den herkommlichen Aufwand fur die Verwaltung der typischen Unternehmens-App zu bewaltigen. Virtualisierung erhalten Sie auf halbem Weg, aber Cloud-basierte Infrastruktur, insbesondere Storage von spezialisierten NoSQL-Server verwaltet werden wurde die wirtschaftliche Weg zu gehen. Das Unternehmen besteht aus horizontal skalierbaren ReSTful zuganglich Endpunkte, die HTML und Javascript spucken werden. Endanwender konnen schnell Apps erstellen und diese auf eigenen Geraten installieren. Semantic Indexing 8211 So jetzt, dass Sie diese massiv horizonally skalierbare Datenspeicher haben, sind Sie mit einem noch gro?eren Problem der Suche nach etwas konfrontiert. Volltext-Engines wie LuceneSolr werden Standard-Tarif sein, aber das Unternehmen wird hohere Treue in ihren Recherchen zu verlangen und dies wird die Nachfrage nach Indizierung uber invertierte Indizes zu treiben. Erwarten Sie, um Server mit Hunderten von Gigabyte von DRAM zu sehen, dies zu ermoglichen. Big Analytics BigData benotigt eine Analyse. Die Analyse ist nur so gut wie die Qualitat Ihrer Daten. Es wird eine steigende Nachfrage nach qualitativ hochwertigeren Datenquellen, Datenqualitatswerkzeugen und naturlich Alternativen zur Analyse und Visualisierung von Daten geben. Es gibt intensive Debatten zwischen Map-Reduce NoSQL und traditionellen OLAP-Anbietern. NoSQL muss schnell genug voranschreiten, bevor Kunden ihre Unzulanglichkeiten erkennen. Schauen Sie auf Hadoop, um seine Dominanz in diesem Bereich zu erhohen. Private Clouds 8211 Trotz der wirtschaftlichen und technologischen Anreize des Outsourcings einer Infrastruktur, wird es immer die organisatorische und menschliche Notwendigkeit geben, eine zu bauen und zu besitzen. Private clouds of course will overlap and need to integrate with public clouds, simply because the dominant business model will be SaaS. Look for OpenStack to emerge as the clear leader. OAuth in the Enterprise 8211 OAuth is already widely used in consumer applications. With OAuth 2.0, I expect rapid adoption in the enterprise space simply because there is no other viable alternative. Application coordination will be a necessity and OAuth will be its enabler in secure environments. Inversion of Desktop Services 8211 Services that we commonly expect on a desktop like the file systems, short cuts, contacts, calendars and programs will increasingly reside in the cloud. This is a consequence for the need for greater security on mobile devices and the need to share information among muliple devices and muliple collaborators. The filesystem of the future will be collaborative shared spaces. We are already seeing Services like Dropbox, Instapaper, Evernote, Springboard, Delicious and Twitter serving as the means of coordination between mobile applications. Proactive Agents 8211 For decades people have been forecasting the emergence of digital personal assistants that would actively react to the environment on one8217s own behalf. The emergence of always present smart mobile devices and cloud computing shared spaces will be the catalyst for the developing of active agent based computing platforms and frameworks. At present, most computing is merely reactive, that is servicing web requests only on command of a user. Future computing will include a proactive aspect that suggests courses of actions to users. Semantic technologies like Zemanta and OpenCalais provide intelligence to writers by suggesting tags that are relevant to a written document. Migration to Scala 8211 My hunch on the programming language that will have the highest growth in adoption and interest would be Scala. Scala8217s appeal is that it is elegant and can express complex constructs succinctly. I see most adopters migrating from serverside developers looking for a new shiny toy to play with. Scala frameworks like Lift and Akka, and IDEs like IntelliJ will be the wind that propels this migration. Alternative JVM languages like Groovy, Clojure and JRuby will likely plateau in popularity as a consequence. What now is becoming apparent with these trends is greater fragmentation in IT. No more is one kind of database, one kind of programming language, one kind of operating system, one kind of UI framework going to be viable. One cannot control anymore what its built on (specifically for any cloud based service), however one may still have control of the data (see: Dataportability. org) and this will be key. Share the article Share the article This is an updated list of active Open Source Workflow Engine that are written in Java or hosted in a JVM: uEngine 8211 The uEngine BPM suite consists of a modeling tool and process engine, dashboard with SSO and a OLAP inspired process analyzer. uEngine BPM foundation is built using the Liferay Enterprise Portal, Mondrian OLAP Server, JBoss Drools BRE and Axis 2. Triana 8211 An open source problem solving environment developed at Cardiff University that combines an intuitive visual interface with powerful data analysis tools. Already used by scientists for a range of tasks, such as signal, text and image processing, Triana includes a large library of pre-written analysis tools and the ability for users to easily integrate their own tools. Pegasus 8211 The Pegasus project encompasses a set of technologies the help workflow-based applications execute in a number of different environments including desktops, campus clusters, grids, and now clouds. Scientific workflows allow users to easily express multi-step computations, for example retrieve data from a database, reformat the data, and run an analysis. Once an application is formalized as a workflow the Pegasus Workflow Management Service can map it onto available compute resources and execute the steps in appropriate order. Pegasus can handle 1 to 1 million computational tasks. Drools Flow 8211 Drools Flow provides workflow to the Drools platform. Drools Flow allows end users to specify, execute and monitor their business logic. The Drools Flow process framework is easily embeddable into any Java applicationor can run standalone in a server environment. Activiti 8211 Activiti is a Business Process Management (BPM) and workflow system targeted at business people, developers and system admins. Its core is a super-fast and rock-solid BPMN 2 process engine for Java. It8217s open-source and distributed under the Apache license. Activiti runs in any Java application, on a server, on a cluster or in the cloud. It integrates perfectly with Spring. JBoss jBPM is a platform for multiple process languages supporting workflow, BPM, and process orchestration. jBPM supports two process languages: jPDL and BPEL. jPDL combines human task management with workflow process constructs that can be built in Java applications. Includes also a Visual Designer for jPDL and Eclipse-based tooling for BPEL. RiftSaw 8211 Project Riftsaw is a WS-BPEL 2.0 engine that is optimized for the JBoss Application Server container. WS-BPEL 2.0 is an XML-based language for defining business processes that orchestrate web services. Riftsaw is based on Apache ODE . Joget 8211 Joget Workflow is a people-driven, form-based workflow management system. Joget Worklfow is XPDL compliant and has a plug-in architecture to extend its usability. The system can be used on its own to manage the flow of processes and data captured from forms. Supports synchronous and asynchronous integration of other business processes. Supports portal integration using AJAX or JSON APIs. Orchestra 8211 Orchestra is a complete solution to handle long-running, service oriented processes. It is based on the OASIS standard BPEL 2.0. Provides a generic engine (Process Virtual Machine), Web 2.0 based process console and a graphical BPEL designer. Shark is completely based on standards from WfMC and OMG using XPDL as its native workflow definition format. Storage of processes and activities is done using Enhydra DODS. Taverna The Taverna project aims to provide a language and software tools to facilitate easy use of workflow and distributed compute technology within the eScience community. Taverna is both a workflow enactor and also an editing suite. Bonita is a flexible cooperative workflow system, compliant to WfMC specifications. A comprehensive set of integrated graphical tools for performing different kind of actions such as process conception, definition, instanciation, control of processes, and interaction with the users and external applications. 100 browser-based environment with Web Services integration that uses SOAP and XML Data binding technologies in order to encapsulate existing workflow business methods and publish them as a J2EE-based web services. A Third Generation Worflow engine based in the activity anticipation model. Imixs 8211 The project comprises a framework to create workflow systems as well as a reference implementation based on the J2EE standard. The project includes the development of a graphic editor for creation and management of workflow models based on the Eclipse framework. Bigbross Bossa The engine is very fast and lightweight, uses a very expressive Petri net notation to define workflows, does not requires a RDBMS and is very simple to use and to integrate with java applications. Actually, it was designed to be embedded. YAWL 8211 YAWL (Yet Another Workflow Language), an open source workflow languagemanagement system, is based on a rigorous analysis of existing workflow management systems and workflow languages. Unlike traditional systems it provides direct support for most of the workflow patterns (workflowpatterns). YAWL supports the control-flow perspective, the data perspective, and is able to interact with web services declared in WSDL. It is based on a distributed, web-friendly infrastructure. Zebra 8211 Zebra is a workflow engine 8211 originally developed to fill in the gaps in some commercial and open source workflow engines. The key differences between it and other workflow systems are able to model all the workflows described in workflow patterns, a GUI designer and Hibernate persistence layer. ActiveBPEL 8211 ActiveBPEL engine is a robust runtime environment that is capable of executing process definitions created to the Business Process Execution Language for Web Services (BPEL4WS, or just BPEL) 1.1 specifications. Ode 8211 Orchestration Director Engine 8211 The initial source for Ode originates from the Sybase Business Process Enginge (BPE) and the PXE BPEL 2.0 engine from Intalio. ODE implements the WS-BPEL specification. The implementation will also support MessageEvent to process correlation. ODE can be plugged into various service bus or component architectures like ServiceMix. BeanFlow 8211 A tiny library with just a few classes and only depends on commons-logging and Java 5. Uses plain Java code to do boolean logic, handle state, do looping, call functions, create objects, aggregation and composition. Based on just one single concept, joins. Swamp 8211 SWAMP is a workflow processing platform. The workflow is designed in a XML based meta language. Workflows can be built from different workflow 8216patterns8217 like simple actions, decisions, selections, loops, but also custom code and external events. SWAMP builds a HTML GUI from the workflow definition file that guides different users through the whole process, sends notifications if required, assembles overview pages over all running processes and much more. A SOAP interface can be used to integrate external systems into the workflow. Sarasvati 8211 Sarasvati is a workflowbpm engine based on graph execution. It has a simple core which allows for subsititions of implementations. Features include: Simple graph execution based core Process DefinitionGraph Visualizations Domain specific language (Rubric) for user understandable guards XML file format for process definitions Hibernate backed engine for DB persistence Memory backed engine TobFlow 8211 TobFlow (Total Object Base and Flow or the Object Flow) is a web application platform to manage forms and workflows. It is made of an engine which manages the user interface (forms) and the scheduling of tasks (workflows) based on object model descriptions. The TobFlow is a true document workflow tool. Werkflow is a flexible, extensible process - and state-based workflow engine. It aims to satisfy a myriad of possible workflow scenarios, from enterprise-scale business processes to small-scale user-interaction processes. Using a pluggable and layered architecture, workflows with varying semantics can easily be accomodated. What makes OSWorkflow different is that it is extremely flexible. Run WFE 8211 RunaWFE consists of JBOSS-JBPM workflow core and a set of additional components. Includes user web interface, graphical process designer, flexible system for roles executors determination, web services, portlets, Alfresco integration and security with LDAPMS Active Directory integration. WfMOpen is a J2EE based implementation of a workflow facility (workflow engine) as proposed by the Workflow Management Coalition (WfMC) and the Object Management Group (OMG). Workflows are specified using WfMC8217s XML Process Definition Language (XPDL) with some extensions. The Open for Business Workflow Engine is based on the WfMC and OMG spec. OFBiz Workflow Engine uses XPDL as its process definition language. JFolder JFolder (formerly PowerFolder) contains features critical to many applications 8211 including web pages, workflow, security, persistence, email, file management, and data access. Open Business Engine Open Business Engine is an open source Java workflow engine which supports the Workflow Management Coalition8217s (WfMC) workflow specifications, including interface 1, also known as XPDL, interface 23 known as WAPI and interface 5 for auditing. OBE provides an environment for executing activities in a controlled, centralized environment. OBE supports both synchronous and asynchronous execution of workflows. The primary OBE implementation is based on J2EE. Freefluo 8211Freefluo is a workflow orchestration tool for web services. It can handle WSDL based web service invocation. It supports two XML workflow languages, one based on IBM8217s WSFL and another named XScufl. Freefluo is very flexible, at its core is a reusable orchestration framework that is not tied to any workflow language or execution architecture. Freefluo includes extension libraries that enable execution of workflows written in a subset of WSFL. Micro-Workflow 8211 The micro-workflow framework targets developers who want to separate the control and logic aspects in their programs, thus making them flow independent. A well-factored flow independent application facilitates change because the most frequent business changes translate into process changes, thus leaving the code intact. Flow independence also fosters reuse, because domain objects make fewer assumptions about the control context in which they operate con:cern 8211 con:cern is a workflow engine based on an extended case handling approach. A process is described as a set of activities with pre - and postconditions. An activity is executed when its preconditions are met. It manipulates the process item, thereby creating postconditions. The process flow is determined at run-time. This approach is superior to the conventional process flow approach. XFlow2 8211 Inspired by simple workflow definition language in XFlow developed to improve its implementation. Externalized SQL in iBatis mapping files. Works as embedded workflow engine. Apache Agila 8211 Agila is centered around Business Process Management, Workflow and Web Service Orchestration. It8217s composed of two specialized modules: Agila BPM and Agila BPEL. Agila BPM is basically handling tasks and users who have to complete these tasks. It8217s a very flexible and lightweight workflow component. Agila BPEL is a BPEL-compliant Web Services Orchestration solution Syrup 8211 Syrup is an adaptive Workflow system. Syrup provides five basic concepts: Tasks, Links, Workflows, Workers and the WorkSpace. Syrup can overcome the von Neumann bottleneck that stops traditional software systems from scaling. It does this by strictly separating the specification, identification and execution phase of Workflows in a distributed setup. Syrup doesn8217t follow the more complex standards such as Wf-XML, BPML and XPDL. Dalma 8211 The heart of the engine is an ability to capture the execution state of a thread and resume it later. Many applications of today need to have a part of the program that waits for other entities. Often there are multiple conversations running concurrently. Those are what we call 8220workflow8221 applications. Today, those applications can be written, but one can8217t write it very productively. Dalma makes it very easy to write those workflow applications by letting you write it as an ordinary procedural program without any boilerplate. Pi Calculus for SOA 8211 The first stage of this project is to provide an implementation of the W3C Web Services Choreography Description Language (WS-CDL). It provides the necessary tools to describe and police blueprints for complex distributed IT architectures as well as for describing cross domain business protocols (e. g. FIX, fpML, SWIFT, etc). Intalio BPMS Intalio BPMS is designed around the open source Eclipse BPMN Modeler, Apache ODE BPEL engine, and Tempo WS-Human Task service. GridAnt 8211 GridAnt is not claimed as a substitution for more sophisticated and powerful workflow engines such as BPEL4WS, XLANG and WSFL. Nevertheless, applications with simple process flows tightly integrated to work with GT3 can vastly benefit from GridAnt without having to endure any complex workflow architectures. The philosophy adopted by the GridAnt project is to use the workflow engine available with Apache Ant and develop a Grid workflow vocabulary on top of it. In other words, we provide a set of Grid tasks to be used within the Ant framework. Kepler Project 8211 The Kepler project8217s overall goal is to produce an open-source scientific workflow system that allows scientists to design scientific workflows and execute them efficiently using emerging Grid-based approaches to distributed computation. Kepler is based on the Ptolemy II system for heterogeneous, concurrent modeling and design. JOpera 8211 JOpera for Eclipse is a rapid service composition tool offering a visual language and autonomic execution platform for building distributed applications out of reusable services, which include but are not strictly limited to Web services. Due to its generality, JOpera for Eclipse has a wide range of applications: from classical Workflow Management and Business Process Automation, Enterprise application integration, to Virtual laboratories (e. g. scientific workflows, bioinformatics), Cluster and Grid computing and even Data Stream processing. BpmScript 8211 BpmScript aims to make writing Business Processes simple by handling Workflow, Web Services Orchestration and Sheduling. BpmScript has an embedded ServiceMix ESB. This allows it to take advantage of the prebuilt ServiceMix components (e. g. SOAP, FTP, Email, File, RSS, Jabber, JMS etc.) JaCOB 8211 PXE8217s BPEL implementation relies on the JACOB framework to implement the BPEL constructs. The framework provides the mechanism necessary to deal with two key issues in implementing BPEL constructs: Persistence of execution state and Concurrency. By rolling up these concerns in the framework, the implementation of the BPEL constructs can be simpler by limiting itself to implementing the BPEL logic and not the infrastructure necessary to support it. Tempo 8211 Intalio Tempo is a set of runtime components that support BPEL4People to bring workflow functionality to a BPEL engine. Tempo provides one possible User Interface for users to manage their tasks, which goes beyond the scope of BPEL4People. Tempo only provides runtime component. It does not provide tools to generate workflow processes nor does it provide forms. Oryx 8211 Oryx is a web-based, extensible modeling platform. You can create diagrams in many different modeling languages and share them. GWES 8211 The Generic Workflow Execution Service (GWES) is the workflow enactment engine. GWES coordinates the composition and execution process of workflows in arbitrary distributed systems, such as SOA, Cluster, Grid, or Cloud environments. The Generic Workflow Description Language (GWorkflowDL) is based on Petri nets. It provides interfaces to Web Portal frameworks and to a command line clients. The workflow service supports pure Web Services and Globus Toolkit 4. Java Workflow Tooling 8211 The Java Workflow Tooling project (JWT) aims to build design time, development time and runtime workflow tools and to foster an ecosystem of interoperable Business Process Management (BPM) platforms. ZBuilder3 is a second generation of workflow development and management system which intends to be an open source product. It defines a set of standard JMX management interfaces for different workflow engines and their workflows. Abandoned Twister 8211 Twister8217s aim is to provide a new generation, easily integrable, B2B oriented workflow solution in Java, based on the latest specification efforts in this field. The process engine is based on the BPEL business process specifications and Web Services standards. Abandoned MidOffice BPEL Engine 8211 MidOffice BPEL Editor (MOBE) is an open-source platform for process orchestration which executes, monitors, adjusts and terminates pre-defined processes). The platform is implemented using J2EE technologies and standards like BPEL, XML and SOAP. Abandoned jawFlow 8211 JawFlow is a Workflow Engine partially conformal to WfMC (wfmc. org) directives. It ia based on XML Process Definition Language (XPDL) and activities can be written in Java or any BSF based scripting language. JawFlow is composed of modules that are JMX Mbeans. Abandoned Beexee 8211 Bexee is a BPEL engine capable of executing deployed business processes described in BPEL by orchestrating existing Web Services. Abandoned OpenWFE OpenWFE is an open source java workflow engine. It features 3 components, easily scalable. an engine, a worklist and a web interface. Its workflow definition language is inspired of Scheme, a Lisp dialect, though it is expressed in XML. Abandoned Antflow 8211 AntFlow (Onionnetworks)is a tool for the automation and scheduiling of data system tasks, including those with complex dependencies and workflow logic. Antflow represents a new approach to simplifying system automation that leverages pipelines of hot folders chained together to perform a given task. Using XML, Antflow associates an automated task, such as data transfer, compression, or encryption, with a directory on the local system. Whenever a file is copied or written into the hot folder, the associated task is executed and the file is moved to the next hot folder in the pipeline for further processing. Abandoned Please let me know if I missed something that should be in the list. Share the article Share the article In recent days I have come across a couple of interesting articles on the web on how to define service APIs. The first one titles 8220Web API Documentation Best Practices 8221 from ProgrammableWeb. The author writes about the importance of good documentation in that it encourages and keeps developers interested in the service and also helps reduce support costs. The article describes some basic areas that should be covered by documentation such as having an overview, a introduction section, sample code, and references. The article further recommends the following best practices: Auto-generate Documentation Include Sample Code Show Example Requests and Responses Explain Authentication and Error Handling Mark Blotny wrote that 8220Each Application Should Be Shipped With a Set of Diagnostics Tools. He writes that developers typically have limited access to the production servers. However in the event that something goes wrong, developers require the capabilities to perform an investigation in reasonable time to identify to uncover the causes of the problems. He writes that a service api should have the following: Each integration point should include a diagnostic tool. There should be accessible logs for each call to an external system. Service peformance data should be accessible by developers. All unexpected errors should be logged and easily accessible. Finally there is an article by Juergen Brendel who wrote 8220The Value of APIs that Can be Crawled 8220. He writes that a service API should be designed such that it can be discovered via a crawler. Although this requirement is commonsense for anyone concerned with SEO, it unfortunately isn8217t quite common for developers of service APIs. The notion of a decentralized index who8217s data is populated by crawlers should in fact be key technology component of any Service Oriented Architecture (SOA). Surprisingly however, despite the success of search engine companies like Google, this component is absent in most of all SOA stacks I have seen. In SOA stacks, there is a notion of a service directory, in most implementations the assumption is for a centralized service and the onus is on each service to register and provide appropriate and current information to the directory. It appears to be logically the same thing, however what scales in practice is the decentralized indexcrawler and not the centralized directory. These three articles show that there is in fact value in providing service functionality that goes beyond the documented functional requirements. There is in fact research that I came across that documents this in a more comprehensive manner. Here are the property groups that a service may provide: I love lists exhaustive lists like this because it reminds me of what I may be missing. Speaking of which, it reminds me that Web Services Modeling Ontology (WSMO) has something formal along similar lines. In fact, if you really want to go into the deep end with service contracts, you can read this. It is interesting how this non-functional attributes (i. e. ilities) align well with the idea of Aspects Oriented Programming and can be implemented in a proxy like infrastructure. That is in fact what it appears that existing 8220API Management8221 firms (ex. Mashery. Sonoa. WebServius. 3Scale ) appear to provide. Here are some examples of the features that these API Management firms are offering: Reporting, Analytics and Visualization dashboard. Traffic management and rate-limiting Security, Access Control, Authorization. Mediation 8211 Protocol Bridging. Monetization User management and provisioning. Self service provisioning. Community management. Portal, Access key management, FAQs, Wiki Scalabilability. Clustering, Caching. Threat Protection 8211 Denial of service attacks. Versioning Operations Management. Root cause analysis. Logging. Share the article Share the article Did some more googling around and have uncovered a couple more noteworthy SOA patterns. These are from the following sources: Agent Design Patterns Design Patterns for Policy Based Engagements Patterns for Service-Oriented Information Exchange Requirements Saga Pattern Context Aware Privacy Design Pattern Selection Agent Itinerary 8211 Objectifies agent itineraries and routing among destinations. Forward 8211 Provides a way for a host to forward newly arrived agents automatically to another host Ticket 8211 Objectifies a destination address, and encapsulates the quality of service and permissions that are needed to dispatch an agent to a host address and execute it there Delegation 8211 The debtor of a commitment delegates it to a delegatee who may accept the delegation, thus creating a new commitment with the delegatee as the new debtor. Escalation 8211 Commitments may be canceled or otherwise violated. Under such circumstances, the creditor or the debtor of the commitment may send escalations to the context Org. Preemption 8211 To cancel a commitment based on conflicting demands. Barrier 8211 Guards an action and specifies (pre)conditions on its execution Co-location 8211 Two or more resources are to be co-located at a certain time and place for a specified duration. Correspondence 8211 Relating two pieces of information each owned by a different participant Deadline 8211 Some information is required for an action before a certain time after which an alternate action is taken Expiration 8211 Some information will become invalid at a certain point in time (not shown in figure) Notification 8211 On-state-change xe2x80x9cpushingxe2x80x9d of information to enforce Correspondence. Query 8211 On-demand periodic polling of information to enforce Correspondence Retry 8211 Retrying an action a number of times before resorting to an alternate action Selection Choosing from among similar service offerings from multiple participants according to some criteria Solicitation 8211 Gathering information about service offerings from participants Token 8211 Issuing a permission for executing an action to other participants Saga 8211 How can we get transaction-like behavior or complex interactions between services without transactions. Obligation Management 8211 Allow obligations relating to data processing to be transferred and managed when the data is shared Sticky Policies 8211 Bind policies to the data it refers to A couple of them are redundant with other patterns in other texts. You can find these patterns here: Share the article Posts navigation