fabric3
Content
Documentation
Developer Reference
Packaging
Single-VM Packaging
Single-VM Packaging
search
attachments
weblink
advanced
image-effects
image-attributes
Paragraph
Paragraph
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Preformatted
Quote
Bold
Italic
Underline
Colour picker
More colours
Formatting
Strikethrough
Subscript
Superscript
Monospace
Clear formatting
Bullet list
Numbered list
Task list
Outdent
Indent
Align left
Align center
Align right
Page layout
Link
Table
Insert
Insert content
Files and images
Link
Symbol
Emoticon
Markup
Horizontal rule
Insert macro
User mention
Jira Issue/Filter
Info
Status
Gallery
Table of Contents
Jira timeline
Lucidchart Diagrams
Trello Board
Other macros
Page layout
No layout
Two column (simple)
Two column (simple, left sidebar)
Two column (simple, right sidebar)
Three column (simple)
Two column
Two column (left sidebar)
Two column (right sidebar)
Three column
Three column (left and right sidebars)
Find/Replace
Keyboard shortcuts help
You are not logged in. Any changes you make will be marked as
anonymous
. You may want to
Log In
if you already have an account.
<p>Fabric3 supports two basic models for deploying to a single-VM environment: single contribution deployment and multi-contribution deployment.</p><h2>Single Contribution Deployment</h2><p>Single contribution deployment bundles all application services in a single contribution archive as depicted in the diagram below: </p><p><img class="confluence-embedded-image" loading="lazy" src="https://fabric3.atlassian.net/wiki/download/attachments/1540266/Slide19.jpg?version=1&modificationDate=1374787263440&cacheVersion=1&api=v2" data-image-src="https://fabric3.atlassian.net/wiki/download/attachments/1540266/Slide19.jpg?version=1&modificationDate=1374787263440&cacheVersion=1&api=v2" data-unresolved-comment-count="0" data-linked-resource-id="1474590" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="Slide19.jpg" data-base-url="https://fabric3.atlassian.net/wiki" data-linked-resource-content-type="image/jpeg" data-linked-resource-container-id="1540266" data-linked-resource-container-version="8" data-media-id="43f903fb-254d-4b81-a286-cece03b05e39" data-media-type="file" title="fabric3 > Single-VM Packaging > Slide19.jpg" data-location="fabric3 > Single-VM Packaging > Slide19.jpg" data-image-height="405" data-image-width="720"></p><p>The primary advantage of this approach is simplicity: only a single archive needs to be delivered and deployed. The main drawback of a single contribution is lack of modularity. A single archive bundles all artifacts such as Java classes together. Classes bundled together cannot be individually versioned. Moreover, visibility of implementation classes cannot be restricted using technologies such as OSGi import/export directives (see <a class="confluence-link" href="/wiki/spaces/FABRIC/pages/1540230/Modularity" data-linked-resource-id="1540230" data-linked-resource-version="4" data-linked-resource-type="page" data-linked-resource-default-alias="Modularity" data-base-url="https://fabric3.atlassian.net/wiki">Modularity</a> for how Fabric3 supports OSGi). For basic applications, the single contribution model may be a reasonable trade-off for the simplicity it offers.</p><h2>Multi-Contribution Deployment </h2><p>Multi-contribution deployment involves separating application services into two or more contribution archives: </p><h2><img class="confluence-embedded-image" loading="lazy" src="https://fabric3.atlassian.net/wiki/download/attachments/1540266/Slide20.jpg?version=1&modificationDate=1374787279786&cacheVersion=1&api=v2" data-image-src="https://fabric3.atlassian.net/wiki/download/attachments/1540266/Slide20.jpg?version=1&modificationDate=1374787279786&cacheVersion=1&api=v2" data-unresolved-comment-count="0" data-linked-resource-id="1474591" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="Slide20.jpg" data-base-url="https://fabric3.atlassian.net/wiki" data-linked-resource-content-type="image/jpeg" data-linked-resource-container-id="1540266" data-linked-resource-container-version="8" data-media-id="54d4128c-5681-4eae-99d7-45c114618ed3" data-media-type="file" title="fabric3 > Single-VM Packaging > Slide20.jpg" data-location="fabric3 > Single-VM Packaging > Slide20.jpg" data-image-height="405" data-image-width="720"></h2><p>The main advantage of this approach is modularity: contributions can be broken down by functional subsystem allowing them to be versioned and evolved independently. In addition, multiple contributions can promote looser coupling between services as implementation classes can be separated into distinct modules. The downside of multi-contribution deployment is increased complexity; deployers need to manage multiple artifacts.</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-schema-version="1" style="background-image: url(https://fabric3.atlassian.net/wiki/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm99&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p>For an example of multi-contribution deployment, see the <a class="confluence-link" href="/wiki/spaces/FABRIC/pages/1212531/FastQuote" data-linked-resource-id="1212531" data-linked-resource-version="5" data-linked-resource-type="page" data-linked-resource-default-alias="FastQuote" data-base-url="https://fabric3.atlassian.net/wiki">FastQuote</a> sample application.</p></td></tr></table><p> </p><h2>Single-VM Packaging Best Practice</h2><p>For all but the most trivial applications, multi-contribution deployment is the recommended approach as the benefits of modularity far outweigh added complexity. This model aligns well with Gradle and Maven (as well as other build systems) multi-module approach to application development. In order to make multi-contribution deployment easier, we have also developed a system of application deployment that relies on automated assembly of custom runtime images. For details, see <a class="confluence-link" href="/wiki/spaces/FABRIC/pages/1212498/Service+Delivery" data-linked-resource-id="1212498" data-linked-resource-version="10" data-linked-resource-type="page" data-linked-resource-default-alias="Service Delivery" data-base-url="https://fabric3.atlassian.net/wiki">Service Delivery</a>. </p>
Save
Close
Edit
Preview
View changes
Revert to last published version
{"serverDuration": 407, "requestCorrelationId": "ca2b8602b01d4c23b1251d5aeca76688"}