Re: [Architecture] [AF] [MB] Make Appfactory tenant subscription to stratos environments fault tolerant

2015-01-04 Thread Dimuthu Leelarathne
Hi Mahesh and all,

I have another suggestion. We should keep the dev, test, prod subscribers
in the respective Stratos controllers. This is because it will reduce the
load on the network.

The architecture stays the same.

thanks,
dimuthu

On Fri, Dec 19, 2014 at 2:16 PM, Dimuthu Leelarathne dimut...@wso2.com
wrote:

 Hi Mahesh,

 What is the possibility of removing the second REST call. If we are
 putting an additional moving part we need to justify why. For example we
 could say in this point you can put a LB and horizontally scale (Just one
 of many possible answers). In this case I don't see such a use case unless
 there is no Java API. Does Stratos provide Java API? If so that would be a
 better way, IMO.

 thanks,
 dimuthu





 On Wed, Dec 17, 2014 at 12:42 PM, Manjula Rathnayake manju...@wso2.com
 wrote:

 Hi Mahesh,

 +1 for the current design. I assume you have multiple instances of
 durable subscribers for each subscription made to Stratos cartridges. For
 example, if we have multiple tenant aware cartridges(App Server, UES
 Server, BPS Server etc), the durable subscriber should be able to
 instantiate based on subscription details for each cartridges in all the
 environments.

 Further we can consider unsubscribing from cartridges etc. Based on the
 message received by the topic subscribers, topic subscriber can decide the
 action plan(subscribe to cartridge, unsubscribe,etc).

 In case of failure, lets assume subscription to production app server
 cartridges is failed. Are we going to stop further actions in that
 particular tenant such as avoiding promoting to production? IMO, notifying
 to the tenant administrator and system administrators would be sufficient
 via notification mechanisms(wall,email).

 thank you.


 On Wed, Dec 17, 2014 at 3:16 PM, Mahesh Chinthaka mahe...@wso2.com
 wrote:

 Hi Harsha,
 I see your point.
 If you follow tenant creation bpel you may see initializeBuildManager
 and initializeRepositoryManager happens one after the other in a row.
 If it got failed in any step the process won't continue.
 But in last step of bpel you can see that initializeCloudManager is
 called for all 3 environments at the same time.
 In order to consider tenant creation as successfull we need to have
 all 3 subscriptions successful. I think thats why this fault tolerance
 mechanism is more important in this step than others.
 Anyway I will discuss more with the team and will update this thread.

 On Wed, Dec 17, 2014 at 2:45 PM, Harsha Thirimanna hars...@wso2.com
 wrote:

 Hi Mahesh,

 What about the other failure situation within BPEL, like
 initializeBuildManager and initializeRepositoryManager. Can we do that also
 consuming this topics ? Because that also mandatory for the tenant creation
 flow. WDYT ?

 thanks



 *Harsha Thirimanna*
 Senior Software Engineer; WSO2, Inc.; http://wso2.com
 * http://www.apache.org/*
 *email: **hars...@wso2.com* az...@wso2.com* cell: +94 71 5186770  ,
 +94 *
 *774617784twitter: **http://twitter.com/
 http://twitter.com/afkham_azeez*
 *harshathirimannlinked-in: **http:
 http://lk.linkedin.com/in/afkhamazeez**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122
 http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122*

 *Lean . Enterprise . Middleware*


 On Wed, Dec 17, 2014 at 1:31 PM, Mahesh Chinthaka mahe...@wso2.com
 wrote:

 Hi all,

 Im working on Making the tenants subscription to stratos environments
 fault tolerant [1]

 This has been discussed in mail thread with subject  -
 [Architecture] [AF] Tenant subscribing to stratos environments - making 
 it
 fault tolerant

 *Issue*

 **

 There are some possible failure points in AF, hence in App Cloud. One
 such critical point is making the tenants subscribed to the dev, test and
 prod stratos environments. Due to any reason, if this step fails, then,
 thats the end of story for that tenant.


 Actually in appfactory tenant creation,

 When a tenant creation request is made, appfactory sends  REST calls
 to stratos environments (dev,prod,test) to create tenants. At the moment
 there is no way to overcome a situation where tenant creation fails in one
 or more stratos environments.

 *Proposal*

 *===*

 Here what I'm going to do is, integrate WSO2 Message Broker to take
 tenant creation requests to a durable topic and manipulate the
 process in a fault tolerant manner. The durable topic will keep
 messages around persistently for any suitable consumer to consume them.


 Appfactory will have a publisher who publishes messages in the topic
 inside MB when a tenant creation is requested.


 There will be a subscriber for each stratos environment who is
 listening to above topic(create_teanant). If subscription is
 successfull then subscriber will acknowledge to MB and MB will not send
 that particular request to same subscriber again. If subscription got
 failed subscriber will not ack. and MB will take care of sending that
 request until it becomes successful.


 At the moment we have 3 

Re: [Architecture] [AF] [MB] Make Appfactory tenant subscription to stratos environments fault tolerant

2015-01-04 Thread Mahesh Chinthaka
Hi Dimuthu,
Noted.

thanks.

On Mon, Jan 5, 2015 at 10:34 AM, Dimuthu Leelarathne dimut...@wso2.com
wrote:

 Hi Mahesh and all,

 I have another suggestion. We should keep the dev, test, prod subscribers
 in the respective Stratos controllers. This is because it will reduce the
 load on the network.

 The architecture stays the same.

 thanks,
 dimuthu

 On Fri, Dec 19, 2014 at 2:16 PM, Dimuthu Leelarathne dimut...@wso2.com
 wrote:

 Hi Mahesh,

 What is the possibility of removing the second REST call. If we are
 putting an additional moving part we need to justify why. For example we
 could say in this point you can put a LB and horizontally scale (Just one
 of many possible answers). In this case I don't see such a use case unless
 there is no Java API. Does Stratos provide Java API? If so that would be a
 better way, IMO.

 thanks,
 dimuthu





 On Wed, Dec 17, 2014 at 12:42 PM, Manjula Rathnayake manju...@wso2.com
 wrote:

 Hi Mahesh,

 +1 for the current design. I assume you have multiple instances of
 durable subscribers for each subscription made to Stratos cartridges. For
 example, if we have multiple tenant aware cartridges(App Server, UES
 Server, BPS Server etc), the durable subscriber should be able to
 instantiate based on subscription details for each cartridges in all the
 environments.

 Further we can consider unsubscribing from cartridges etc. Based on the
 message received by the topic subscribers, topic subscriber can decide the
 action plan(subscribe to cartridge, unsubscribe,etc).

 In case of failure, lets assume subscription to production app server
 cartridges is failed. Are we going to stop further actions in that
 particular tenant such as avoiding promoting to production? IMO, notifying
 to the tenant administrator and system administrators would be sufficient
 via notification mechanisms(wall,email).

 thank you.


 On Wed, Dec 17, 2014 at 3:16 PM, Mahesh Chinthaka mahe...@wso2.com
 wrote:

 Hi Harsha,
 I see your point.
 If you follow tenant creation bpel you may see initializeBuildManager
 and initializeRepositoryManager happens one after the other in a row.
 If it got failed in any step the process won't continue.
 But in last step of bpel you can see that initializeCloudManager is
 called for all 3 environments at the same time.
 In order to consider tenant creation as successfull we need to have
 all 3 subscriptions successful. I think thats why this fault tolerance
 mechanism is more important in this step than others.
 Anyway I will discuss more with the team and will update this thread.

 On Wed, Dec 17, 2014 at 2:45 PM, Harsha Thirimanna hars...@wso2.com
 wrote:

 Hi Mahesh,

 What about the other failure situation within BPEL, like
 initializeBuildManager and initializeRepositoryManager. Can we do that 
 also
 consuming this topics ? Because that also mandatory for the tenant 
 creation
 flow. WDYT ?

 thanks



 *Harsha Thirimanna*
 Senior Software Engineer; WSO2, Inc.; http://wso2.com
 * http://www.apache.org/*
 *email: **hars...@wso2.com* az...@wso2.com* cell: +94 71 5186770  ,
 +94 *
 *774617784twitter: **http://twitter.com/
 http://twitter.com/afkham_azeez*
 *harshathirimannlinked-in: **http:
 http://lk.linkedin.com/in/afkhamazeez**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122
 http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122*

 *Lean . Enterprise . Middleware*


 On Wed, Dec 17, 2014 at 1:31 PM, Mahesh Chinthaka mahe...@wso2.com
 wrote:

 Hi all,

 Im working on Making the tenants subscription to stratos environments
 fault tolerant [1]

 This has been discussed in mail thread with subject  -
 [Architecture] [AF] Tenant subscribing to stratos environments - making 
 it
 fault tolerant

 *Issue*

 **

 There are some possible failure points in AF, hence in App Cloud. One
 such critical point is making the tenants subscribed to the dev, test and
 prod stratos environments. Due to any reason, if this step fails, then,
 thats the end of story for that tenant.


 Actually in appfactory tenant creation,

 When a tenant creation request is made, appfactory sends  REST calls
 to stratos environments (dev,prod,test) to create tenants. At the moment
 there is no way to overcome a situation where tenant creation fails in 
 one
 or more stratos environments.

 *Proposal*

 *===*

 Here what I'm going to do is, integrate WSO2 Message Broker to take
 tenant creation requests to a durable topic and manipulate the
 process in a fault tolerant manner. The durable topic will keep
 messages around persistently for any suitable consumer to consume them.


 Appfactory will have a publisher who publishes messages in the topic
 inside MB when a tenant creation is requested.


 There will be a subscriber for each stratos environment who is
 listening to above topic(create_teanant). If subscription is
 successfull then subscriber will acknowledge to MB and MB will not send
 that particular request to same subscriber again. If subscription
 got failed subscriber 

Re: [Architecture] [AF] [MB] Make Appfactory tenant subscription to stratos environments fault tolerant

2014-12-19 Thread Dimuthu Leelarathne
Hi Mahesh,

What is the possibility of removing the second REST call. If we are putting
an additional moving part we need to justify why. For example we could say
in this point you can put a LB and horizontally scale (Just one of many
possible answers). In this case I don't see such a use case unless there is
no Java API. Does Stratos provide Java API? If so that would be a better
way, IMO.

thanks,
dimuthu





On Wed, Dec 17, 2014 at 12:42 PM, Manjula Rathnayake manju...@wso2.com
wrote:

 Hi Mahesh,

 +1 for the current design. I assume you have multiple instances of durable
 subscribers for each subscription made to Stratos cartridges. For example,
 if we have multiple tenant aware cartridges(App Server, UES Server, BPS
 Server etc), the durable subscriber should be able to instantiate based on
 subscription details for each cartridges in all the environments.

 Further we can consider unsubscribing from cartridges etc. Based on the
 message received by the topic subscribers, topic subscriber can decide the
 action plan(subscribe to cartridge, unsubscribe,etc).

 In case of failure, lets assume subscription to production app server
 cartridges is failed. Are we going to stop further actions in that
 particular tenant such as avoiding promoting to production? IMO, notifying
 to the tenant administrator and system administrators would be sufficient
 via notification mechanisms(wall,email).

 thank you.


 On Wed, Dec 17, 2014 at 3:16 PM, Mahesh Chinthaka mahe...@wso2.com
 wrote:

 Hi Harsha,
 I see your point.
 If you follow tenant creation bpel you may see initializeBuildManager
 and initializeRepositoryManager happens one after the other in a row. If
 it got failed in any step the process won't continue.
 But in last step of bpel you can see that initializeCloudManager is
 called for all 3 environments at the same time.
 In order to consider tenant creation as successfull we need to have all
 3 subscriptions successful. I think thats why this fault tolerance
 mechanism is more important in this step than others.
 Anyway I will discuss more with the team and will update this thread.

 On Wed, Dec 17, 2014 at 2:45 PM, Harsha Thirimanna hars...@wso2.com
 wrote:

 Hi Mahesh,

 What about the other failure situation within BPEL, like
 initializeBuildManager and initializeRepositoryManager. Can we do that also
 consuming this topics ? Because that also mandatory for the tenant creation
 flow. WDYT ?

 thanks



 *Harsha Thirimanna*
 Senior Software Engineer; WSO2, Inc.; http://wso2.com
 * http://www.apache.org/*
 *email: **hars...@wso2.com* az...@wso2.com* cell: +94 71 5186770  ,
 +94 *
 *774617784twitter: **http://twitter.com/
 http://twitter.com/afkham_azeez*
 *harshathirimannlinked-in: **http:
 http://lk.linkedin.com/in/afkhamazeez**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122
 http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122*

 *Lean . Enterprise . Middleware*


 On Wed, Dec 17, 2014 at 1:31 PM, Mahesh Chinthaka mahe...@wso2.com
 wrote:

 Hi all,

 Im working on Making the tenants subscription to stratos environments
 fault tolerant [1]

 This has been discussed in mail thread with subject  - [Architecture]
 [AF] Tenant subscribing to stratos environments - making it fault tolerant

 *Issue*

 **

 There are some possible failure points in AF, hence in App Cloud. One
 such critical point is making the tenants subscribed to the dev, test and
 prod stratos environments. Due to any reason, if this step fails, then,
 thats the end of story for that tenant.


 Actually in appfactory tenant creation,

 When a tenant creation request is made, appfactory sends  REST calls to
 stratos environments (dev,prod,test) to create tenants. At the moment there
 is no way to overcome a situation where tenant creation fails in one or
 more stratos environments.

 *Proposal*

 *===*

 Here what I'm going to do is, integrate WSO2 Message Broker to take
 tenant creation requests to a durable topic and manipulate the process
 in a fault tolerant manner. The durable topic will keep messages
 around persistently for any suitable consumer to consume them.


 Appfactory will have a publisher who publishes messages in the topic
 inside MB when a tenant creation is requested.


 There will be a subscriber for each stratos environment who is
 listening to above topic(create_teanant). If subscription is
 successfull then subscriber will acknowledge to MB and MB will not send
 that particular request to same subscriber again. If subscription got
 failed subscriber will not ack. and MB will take care of sending that
 request until it becomes successful.


 At the moment we have 3 stratos environments therefore we will have 3
 subscribers listening to that particular topic(create_teanant) in MB. In a
 case of AF having more stratos environments in future, it is possible to
 add more subscribers. Durable topic subscribers[2] will be used here since
 it will persist the subscription on behalf of the client 

[Architecture] [AF] [MB] Make Appfactory tenant subscription to stratos environments fault tolerant

2014-12-17 Thread Mahesh Chinthaka
Hi all,

Im working on Making the tenants subscription to stratos environments fault
tolerant [1]

This has been discussed in mail thread with subject  - [Architecture] [AF]
Tenant subscribing to stratos environments - making it fault tolerant

*Issue*

**

There are some possible failure points in AF, hence in App Cloud. One such
critical point is making the tenants subscribed to the dev, test and prod
stratos environments. Due to any reason, if this step fails, then, thats
the end of story for that tenant.


Actually in appfactory tenant creation,

When a tenant creation request is made, appfactory sends  REST calls to
stratos environments (dev,prod,test) to create tenants. At the moment there
is no way to overcome a situation where tenant creation fails in one or
more stratos environments.

*Proposal*

*===*

Here what I'm going to do is, integrate WSO2 Message Broker to take tenant
creation requests to a durable topic and manipulate the process in a fault
tolerant manner. The durable topic will keep messages around persistently
for any suitable consumer to consume them.


Appfactory will have a publisher who publishes messages in the topic inside
MB when a tenant creation is requested.


There will be a subscriber for each stratos environment who is listening to
above topic(create_teanant). If subscription is successfull then subscriber
will acknowledge to MB and MB will not send that particular request to same
subscriber again. If subscription got failed subscriber will not ack. and
MB will take care of sending that request until it becomes successful.


At the moment we have 3 stratos environments therefore we will have 3
subscribers listening to that particular topic(create_teanant) in MB. In a
case of AF having more stratos environments in future, it is possible to
add more subscribers. Durable topic subscribers[2] will be used here since
it will persist the subscription on behalf of the client subscription when
client is not online.


This step is not synchronous therefore  above changes will not effect the
tenant creation flow.


*Architectural diagram *

*=*

Architectural diagram can be found in [3]



​


[1] - https://wso2.org/jira/browse/APPFAC-2436

[2] -
https://docs.wso2.com/display/MB220/Creating+a+Durable+Topic+Subscription

[3] -
https://docs.google.com/a/wso2.com/drawings/d/15CmM3rCTwjUUu4V6lp2WX32nRzufraDXawALNYIoTek/edit

-- 
*Mahesh Chinthaka Vidanagama* | Software Engineer
WSO2, Inc | lean. enterprise. middleware.
#20, Palm Grove, Colombo 03, Sri Lanka
Mobile: +94 71 63 63 083 | Work: +94 112 145 345
Email: mahe...@wso2.com | Web: www.wso2.com
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] [AF] [MB] Make Appfactory tenant subscription to stratos environments fault tolerant

2014-12-17 Thread Mahesh Chinthaka
Hi Harsha,
I see your point.
If you follow tenant creation bpel you may see initializeBuildManager
and initializeRepositoryManager
happens one after the other in a row. If it got failed in any step the
process won't continue.
But in last step of bpel you can see that initializeCloudManager is called
for all 3 environments at the same time.
In order to consider tenant creation as successfull we need to have all 3
subscriptions successful. I think thats why this fault tolerance mechanism
is more important in this step than others.
Anyway I will discuss more with the team and will update this thread.

On Wed, Dec 17, 2014 at 2:45 PM, Harsha Thirimanna hars...@wso2.com wrote:

 Hi Mahesh,

 What about the other failure situation within BPEL, like
 initializeBuildManager and initializeRepositoryManager. Can we do that also
 consuming this topics ? Because that also mandatory for the tenant creation
 flow. WDYT ?

 thanks



 *Harsha Thirimanna*
 Senior Software Engineer; WSO2, Inc.; http://wso2.com
 * http://www.apache.org/*
 *email: **hars...@wso2.com* az...@wso2.com* cell: +94 71 5186770  ,
 +94 *
 *774617784twitter: **http://twitter.com/
 http://twitter.com/afkham_azeez*
 *harshathirimannlinked-in: **http:
 http://lk.linkedin.com/in/afkhamazeez**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122
 http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122*

 *Lean . Enterprise . Middleware*


 On Wed, Dec 17, 2014 at 1:31 PM, Mahesh Chinthaka mahe...@wso2.com
 wrote:

 Hi all,

 Im working on Making the tenants subscription to stratos environments
 fault tolerant [1]

 This has been discussed in mail thread with subject  - [Architecture]
 [AF] Tenant subscribing to stratos environments - making it fault tolerant

 *Issue*

 **

 There are some possible failure points in AF, hence in App Cloud. One
 such critical point is making the tenants subscribed to the dev, test and
 prod stratos environments. Due to any reason, if this step fails, then,
 thats the end of story for that tenant.


 Actually in appfactory tenant creation,

 When a tenant creation request is made, appfactory sends  REST calls to
 stratos environments (dev,prod,test) to create tenants. At the moment there
 is no way to overcome a situation where tenant creation fails in one or
 more stratos environments.

 *Proposal*

 *===*

 Here what I'm going to do is, integrate WSO2 Message Broker to take
 tenant creation requests to a durable topic and manipulate the process
 in a fault tolerant manner. The durable topic will keep messages around
 persistently for any suitable consumer to consume them.


 Appfactory will have a publisher who publishes messages in the topic
 inside MB when a tenant creation is requested.


 There will be a subscriber for each stratos environment who is listening
 to above topic(create_teanant). If subscription is successfull then
 subscriber will acknowledge to MB and MB will not send that particular
 request to same subscriber again. If subscription got failed subscriber
 will not ack. and MB will take care of sending that request until it
 becomes successful.


 At the moment we have 3 stratos environments therefore we will have 3
 subscribers listening to that particular topic(create_teanant) in MB. In a
 case of AF having more stratos environments in future, it is possible to
 add more subscribers. Durable topic subscribers[2] will be used here since
 it will persist the subscription on behalf of the client subscription when
 client is not online.


 This step is not synchronous therefore  above changes will not effect
 the tenant creation flow.


 *Architectural diagram *

 *=*

 Architectural diagram can be found in [3]



 ​


 [1] - https://wso2.org/jira/browse/APPFAC-2436

 [2] -
 https://docs.wso2.com/display/MB220/Creating+a+Durable+Topic+Subscription

 [3] -
 https://docs.google.com/a/wso2.com/drawings/d/15CmM3rCTwjUUu4V6lp2WX32nRzufraDXawALNYIoTek/edit

 --
 *Mahesh Chinthaka Vidanagama* | Software Engineer
 WSO2, Inc | lean. enterprise. middleware.
 #20, Palm Grove, Colombo 03, Sri Lanka
 Mobile: +94 71 63 63 083 | Work: +94 112 145 345
 Email: mahe...@wso2.com | Web: www.wso2.com

 ___
 Architecture mailing list
 Architecture@wso2.org
 https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


 ___
 Architecture mailing list
 Architecture@wso2.org
 https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture



-- 
*Mahesh Chinthaka Vidanagama* | Software Engineer
WSO2, Inc | lean. enterprise. middleware.
#20, Palm Grove, Colombo 03, Sri Lanka
Mobile: +94 71 63 63 083 | Work: +94 112 145 345
Email: mahe...@wso2.com | Web: www.wso2.com
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] [AF] [MB] Make Appfactory tenant subscription to stratos environments fault tolerant

2014-12-17 Thread Manjula Rathnayake
Hi Mahesh,

+1 for the current design. I assume you have multiple instances of durable
subscribers for each subscription made to Stratos cartridges. For example,
if we have multiple tenant aware cartridges(App Server, UES Server, BPS
Server etc), the durable subscriber should be able to instantiate based on
subscription details for each cartridges in all the environments.

Further we can consider unsubscribing from cartridges etc. Based on the
message received by the topic subscribers, topic subscriber can decide the
action plan(subscribe to cartridge, unsubscribe,etc).

In case of failure, lets assume subscription to production app server
cartridges is failed. Are we going to stop further actions in that
particular tenant such as avoiding promoting to production? IMO, notifying
to the tenant administrator and system administrators would be sufficient
via notification mechanisms(wall,email).

thank you.


On Wed, Dec 17, 2014 at 3:16 PM, Mahesh Chinthaka mahe...@wso2.com wrote:

 Hi Harsha,
 I see your point.
 If you follow tenant creation bpel you may see initializeBuildManager and 
 initializeRepositoryManager
 happens one after the other in a row. If it got failed in any step the
 process won't continue.
 But in last step of bpel you can see that initializeCloudManager is called
 for all 3 environments at the same time.
 In order to consider tenant creation as successfull we need to have all
 3 subscriptions successful. I think thats why this fault tolerance
 mechanism is more important in this step than others.
 Anyway I will discuss more with the team and will update this thread.

 On Wed, Dec 17, 2014 at 2:45 PM, Harsha Thirimanna hars...@wso2.com
 wrote:

 Hi Mahesh,

 What about the other failure situation within BPEL, like
 initializeBuildManager and initializeRepositoryManager. Can we do that also
 consuming this topics ? Because that also mandatory for the tenant creation
 flow. WDYT ?

 thanks



 *Harsha Thirimanna*
 Senior Software Engineer; WSO2, Inc.; http://wso2.com
 * http://www.apache.org/*
 *email: **hars...@wso2.com* az...@wso2.com* cell: +94 71 5186770  ,
 +94 *
 *774617784twitter: **http://twitter.com/
 http://twitter.com/afkham_azeez*
 *harshathirimannlinked-in: **http:
 http://lk.linkedin.com/in/afkhamazeez**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122
 http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122*

 *Lean . Enterprise . Middleware*


 On Wed, Dec 17, 2014 at 1:31 PM, Mahesh Chinthaka mahe...@wso2.com
 wrote:

 Hi all,

 Im working on Making the tenants subscription to stratos environments
 fault tolerant [1]

 This has been discussed in mail thread with subject  - [Architecture]
 [AF] Tenant subscribing to stratos environments - making it fault tolerant

 *Issue*

 **

 There are some possible failure points in AF, hence in App Cloud. One
 such critical point is making the tenants subscribed to the dev, test and
 prod stratos environments. Due to any reason, if this step fails, then,
 thats the end of story for that tenant.


 Actually in appfactory tenant creation,

 When a tenant creation request is made, appfactory sends  REST calls to
 stratos environments (dev,prod,test) to create tenants. At the moment there
 is no way to overcome a situation where tenant creation fails in one or
 more stratos environments.

 *Proposal*

 *===*

 Here what I'm going to do is, integrate WSO2 Message Broker to take
 tenant creation requests to a durable topic and manipulate the process
 in a fault tolerant manner. The durable topic will keep messages around
 persistently for any suitable consumer to consume them.


 Appfactory will have a publisher who publishes messages in the topic
 inside MB when a tenant creation is requested.


 There will be a subscriber for each stratos environment who is
 listening to above topic(create_teanant). If subscription is
 successfull then subscriber will acknowledge to MB and MB will not send
 that particular request to same subscriber again. If subscription got
 failed subscriber will not ack. and MB will take care of sending that
 request until it becomes successful.


 At the moment we have 3 stratos environments therefore we will have 3
 subscribers listening to that particular topic(create_teanant) in MB. In a
 case of AF having more stratos environments in future, it is possible to
 add more subscribers. Durable topic subscribers[2] will be used here since
 it will persist the subscription on behalf of the client subscription when
 client is not online.


 This step is not synchronous therefore  above changes will not effect
 the tenant creation flow.


 *Architectural diagram *

 *=*

 Architectural diagram can be found in [3]



 ​


 [1] - https://wso2.org/jira/browse/APPFAC-2436

 [2] -
 https://docs.wso2.com/display/MB220/Creating+a+Durable+Topic+Subscription

 [3] -
 https://docs.google.com/a/wso2.com/drawings/d/15CmM3rCTwjUUu4V6lp2WX32nRzufraDXawALNYIoTek/edit

 --
 *Mahesh Chinthaka Vidanagama* |