I need to keep several versions of a application running at the same time on Service Fabric.
1.0 1.1 ....
Instead of updating and replacing versions, I need to k
As Matt Thalman said, is possible to have different versions of same app running in the Service Fabric cluster.
I've tested with the sample app WordCount(http://aka.ms/servicefabric-wordcountapp). To see more details how download the app and deploy it, see https://azure.microsoft.com/en-us/documentation/articles/service-fabric-get-started-with-a-local-cluster/
I've duplicated the WordCount as WordCountV1 and WordCountV2.
Then I've changed the /ApplicationManifest.xml to have different ApplicationTypeVersion on each package. It's necessary for displaying the current version of the App in the Cluster Manager because both apps are shown grouped by the ApplicationTypeName.
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="WordCount" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="WordCount" ApplicationTypeVersion="2.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
Yet I've changed the /WordCountWebServicePkg/Code/wwwroot/index.html file to have different content on both packages.
Is necessary to specify different Endpoints, so I've changed the file /WordCountWebServicePkg/ServiceManifest.xml in both packages to respond on different Ports
<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8081" />
<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8082" />
The last step is to use different a ApplicationName to publish packages:
Publish-NewServiceFabricApplication -ApplicationPackagePath c:\ServiceFabric\WordCountV1.sfpkg -App
licationName "fabric:/WordCountV1"
Publish-NewServiceFabricApplication -ApplicationPackagePath c:\ServiceFabric\WordCountV2.sfpkg -App
licationName "fabric:/WordCountV2"
Both apps are published side-by-side and we can have more control on version update with that.
http://localhost:8081/
http://localhost:8082/
Hope it helps!
PS: Azure Service Fabric documentation team, this subject can be good to be in public docs
Yes, you can do this as long as you have different application names. The application name is specified in the application parameters file in your Service Fabric Application (.sfproj) project. That application name value is used when Visual Studio invokes Service Fabric's New-ServiceFabricApplication
PowerShell cmdlet. This means you can have two apps running in a cluster with the same application type and version as long as they have different application names. Or you could have different versions of the application type if you wish. As long as they have different application names, it doesn't matter; they're treated as unique applications.