<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://citconf.com/wiki/index.php?action=history&amp;feed=atom&amp;title=MicroservicesComboStyle</id>
	<title>MicroservicesComboStyle - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://citconf.com/wiki/index.php?action=history&amp;feed=atom&amp;title=MicroservicesComboStyle"/>
	<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=MicroservicesComboStyle&amp;action=history"/>
	<updated>2026-06-03T23:31:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://citconf.com/wiki/index.php?title=MicroservicesComboStyle&amp;diff=15743&amp;oldid=prev</id>
		<title>Douglassquirrel: Created page with &quot;* What do we think micro services are.. *        We want to be able to rewrite services and remove legacy code **    Make all &quot;objects&quot; separate processes that can run on diff...&quot;</title>
		<link rel="alternate" type="text/html" href="https://citconf.com/wiki/index.php?title=MicroservicesComboStyle&amp;diff=15743&amp;oldid=prev"/>
		<updated>2014-09-21T10:34:41Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;* What do we think micro services are.. *        We want to be able to rewrite services and remove legacy code **    Make all &amp;quot;objects&amp;quot; separate processes that can run on diff...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* What do we think micro services are..&lt;br /&gt;
*        We want to be able to rewrite services and remove legacy code&lt;br /&gt;
**    Make all &amp;quot;objects&amp;quot; separate processes that can run on different machines&lt;br /&gt;
**    Rather than single process tight binding between classes&lt;br /&gt;
**    We could run two of them on the same box to scale&lt;br /&gt;
**    Ability to rewrite each object even using different languages if required&lt;br /&gt;
**    Could communicate using direct RPC, e.g. as a fully meshed graph&lt;br /&gt;
***         Would require agreement on contracts between objects&lt;br /&gt;
***         Not favoured approach&lt;br /&gt;
***         &amp;quot;Orchestrated style&amp;quot;&lt;br /&gt;
**    Combo Model&lt;br /&gt;
***         Tuple Spaces - Immutable data store&lt;br /&gt;
***         Objects publish immutable facts to central store&lt;br /&gt;
***         Objects can publish requests to store&lt;br /&gt;
***         Other objects can publish responses to requests to store&lt;br /&gt;
***         Objects interested in responses can take those and relay to end users/devices&lt;br /&gt;
***         Basically it&amp;#039;s pub/sub&lt;br /&gt;
***         Can add other subscribers after the fact and consume existing events&lt;br /&gt;
***         Promotes loose coupling&lt;br /&gt;
***         &amp;quot;Combo Style&amp;quot;&lt;br /&gt;
***         What about large messages, too large to pass round&lt;br /&gt;
****  Upload the large payload to a repository e.g. via webservice&lt;br /&gt;
****  Publish a &amp;quot;pointer&amp;quot; to the data&lt;br /&gt;
***         Why not just do RPC to request data directly&lt;br /&gt;
***         How do you handle errors&lt;br /&gt;
****  If you don’t get a response in a given time frame there is a problem&lt;br /&gt;
****  The client only needs to care the other service wsa unavailable and timed out, it should not concern itself with the specific error&lt;br /&gt;
***         How do you handle say an order fulfilment scenario where the micro service handling fulfilment was down when the fulfilment request was sent&lt;br /&gt;
****  In our case, each subscriber e.g the OrderProcessingService has its own unique persistent queue of messages it will resume processing when it starts up again&lt;br /&gt;
***        How do you &amp;quot;fix&amp;quot; data&lt;br /&gt;
****  E.g. order sent with wrong email&lt;br /&gt;
****  We want to correct the email without double fullfiilling the order&lt;br /&gt;
****         The order fulfilment step needs to be idempotent&lt;br /&gt;
****         The email sending service would not be, it would send the confirmation email again regardless&lt;br /&gt;
****         Each service will still hold its own state, or have its own database&lt;br /&gt;
***         When would you switch a service to use queues/RabbitMQ&lt;br /&gt;
*    Prediction: 20/09/14 DS: Formal verification of microservices system proof, using COQ?  &amp;lt;- fix me&lt;/div&gt;</summary>
		<author><name>Douglassquirrel</name></author>
	</entry>
</feed>