This presentation gives a high level overview of Apache ACE, an OSGi based software provisioning system that can be used to deploy all kinds of components to targets varying from embedded and mobile systems up to servers.
3. Status?
• april 2009: proposal to the incubator mailing list
• may 2009: started setting up project, IP clearance
• june 2009: (almost) done with IP clearance :)
luminis
6. Deployment
Component A Target A
Component B Target B
Component C Target C
luminis
7. Deployment
Component A Target A
Component B Deployment Target B
Component C Target C
luminis
8. Deployment
now
Component A Target A
Component B Target B
Component C Target C
luminis
9. Deployment
last year
Component A Target last
A month
Component A Target A last week
Component B
Component A Target A now
Component B Target C B
Target
Component A Target A
Component B Target C B
Target
Component B Target B
Component C Target C
Component C Target C
luminis
12. Management Agent
• manages life cycle of bundles
BundleContext
!"#$%"&'($)&%*+,-./'0
1/'&%"2&)$.$),-$/3
45&%!"#$%6++$,3)&
7&+&,8&%9:%;&'8$/3%9<=
62'$+%>??@
• controls package sharing policies
PackageAdmin
• controls relative starting/stopping order
Digitally
signed by
OSGi OSGi Alliance
DN: cn=OSGi
Alliance,
c=US
Alliance
Date:
2007.02.22
Signatur 14:45:47 +
e Not 01'00'
Verified
Start Level Service
• implements a security policy
Conditional Permission Admin
luminis
13. Management Agent
• identification, uniquely identifies a target
• discovery, provides mechanism to find server
• scheduler, periodically triggers updates
• deployment, downloads and installs updates
• audit log, tracks all life cycle changes
luminis
14. Deployment Admin
• versioned set of artifacts
• transactional install/update
• fix packages provide deltas
• signing makes them secure
• extensible through resource processors
luminis
16. Provisioning Server
store deployment
Store License Deployment
Repository Repository Repository
luminis
17. Deployment Repository
Deployment Repository
• has a collection of targets Target Component
• with different versions for each target
• with a set of components for each version
targets versions components
1 Component A Component B
2 Component A Component B Component C
Target A
3 Component A Component C Component D
4 Component C Component D
luminis
18. Store and License Repository
Store Repository License Repository Deployment Repository
Component License
+ License Target
= Target Component
• store and license map components to targets
• store groups components, license associates
these with targets
• these are all extensible objects
• on every update, the consequences for the
targets are calculated
luminis
19. Metadata vs content
• server repositories only store metadata
• this avoids having IP in these repositories
• it also allows integration with different component
repositories (OBR, Maven, anything reachable via
a URL)
luminis
20. Scaling the server
• repositories can be replicated
• there is always one master (holding a copy that
can be modified)
Repository replication Repository
master
luminis
21. Manipulating data
• client and server use a checkout / commit model
with optimistic locking
• client is responsible for “merging” if there are
concurrent changes
store version
retrieve version
Repository
list versions
luminis
22. The audit trail
• management agent stores all life cycle related
events in an audit log
• this log gets synchronized back to the server
server internet target
Audit Audit
Log Log
17:34 Checked for updates, none found 13:23 Target started
18:34 Bundle 23 stopped
23:20 13:24 Starting update from version 5 to 8
19:34
23:25 Target started
13:23 13:24 Bundle 37 updated
20:34
23:45 Starting update from version 5 to 8
13:24 13:25 Update to version 8 succeeded
21:34
02:22 Bundle 37 updated
13:24 14:25 Target stopped
05:22 Update to version 8 succeeded
13:25
14:25 Target stopped
luminis
23. Summing it up
• We’ve looked at dynamic deployment
• the management agent on the target
• the repositories on the server
• ...which hopefully gives you a high level overview
luminis