Dynamic  deployment  
             with  Apache  Felix

                           Marcel  Offermans




Friday, November 6...
Friday, November 6, 2009
Marcel  Offermans


        • commi0er  and  PMC  member  at  Apache  Felix
        • commi0er  at  Apache  ACE
        • s...
Agenda



        • The  case  for  OSGi
        • Dynamic  Deployment  with  Apache  ACE
        • Demo,  ACE  in  AcIon
...
The  case  for  OSGi



        • Paint  ApplicaIon
        • wri0en  in  Java
        • sold  to  customers




Friday, N...
“Specials”  that  fork  your  code




Friday, November 6, 2009
ConCnuous  builds  taking  a  long  Cme




Friday, November 6, 2009
Code  reflects  the  architecture?




Friday, November 6, 2009
How  hard  is  it  to  change  something?




Friday, November 6, 2009
Re-­‐use:  copy/paste




Friday, November 6, 2009
Re-­‐use:  Object  Oriented




Friday, November 6, 2009
Re-­‐use:  Component  Based




Friday, November 6, 2009
ParCConing  your  applicaCon


        • minimize  dependencies
        • consider  rate  of  change
        • minimize  c...
Designing  with  services

                      >)=9)%)%                                                      A(..0=9



...
Designing  with  services

                      >)=9)%)%                                                                 ...
Designing  with  services

                      %)=9)%)%                                                                 ...
The  Case  for  ACE

        • Started  in  incubator  on  april  24th  2009
        • So<ware  distribuIon  framework  
 ...
Deployment



                      !"#$"%&%'()                 !"#$%&'(


                      !"#$"%&%'(*    !"#$%&'"()...
Keeping  the  history
                                                  last year
                                 !"#$"%&...
Why?


        • Automate  deployment
        • Insight  into  who  uses  what
        • History  of  each  system
       ...
Topology

                                                         !"#$%!
                                                ...
High  level  overview



                           !"#"$!"$%&'
                                            !"#,-&("$+
   ...
Dependency  Management




        • Organizing  components
        • Mapping  them  to  targets




Friday, November 6, 2...
Organizing  components

        • group  components:  makes  them  manageable
        • two  levels:  group  and  license
...
Mapping  them  onto  targets


        • mapping  licenses  to  targets
        • someImes  done  by  an  external  system...
User  Interface

        • user  retrieves,  
        • modifies  locally  and  
        • stores  data  on  server




Fri...
Deployment

        • list  of  targets
            • list  of  versions  per  target
                 • list  of  compone...
Deployment  Repository


          ',*-&'(          )&*(+"%(                 !"#$"%&%'(
                              2   ...
Management  Agent

        • manages  life  cycle  of  bundles
          BundleContext
        • controls  package  sharin...
Management  Agent


                                !"#"$%!%#&'"$%#&

                            *'.#"/0#,        '('.#

...
Deployment  Admin

        • deployment  packages
        • versioned  set  of  arIfacts
        • transacIonal  install/u...
From  dependency  to  deployment




               !"#$%&'%(#)*"#$+                     ,*-%.)%&'%(#)*"#$+           /%(0...
Feedback


                                                                       !"#$%!
        *#(+,-,(&,&$.            ...
Demo




Friday, November 6, 2009
Demo




Friday, November 6, 2009
Demo




Friday, November 6, 2009
Demo




Friday, November 6, 2009
Wrapup


        • Apache  ACE  is  incubaIng
        • Take  it  for  a  test-­‐drive!
        • Looking  for  contribuIo...
QuesCons?

                               ?
        ?                              ? ?      ?
                           ?...
Upcoming SlideShare
Loading in …5
×

Dynamic Deployment With Apache Felix

2,887 views

Published on

A talk about Apache ACE and how it can be used to dynamically deploy components to targets.

Published in: Technology

Dynamic Deployment With Apache Felix

  1. 1. Dynamic  deployment   with  Apache  Felix Marcel  Offermans Friday, November 6, 2009
  2. 2. Friday, November 6, 2009
  3. 3. Marcel  Offermans • commi0er  and  PMC  member  at  Apache  Felix • commi0er  at  Apache  ACE • so<ware  architect  at  luminis  technologies • marcel.offermans@luminis.nl Friday, November 6, 2009
  4. 4. Agenda • The  case  for  OSGi • Dynamic  Deployment  with  Apache  ACE • Demo,  ACE  in  AcIon • Wrapup Friday, November 6, 2009
  5. 5. The  case  for  OSGi • Paint  ApplicaIon • wri0en  in  Java • sold  to  customers Friday, November 6, 2009
  6. 6. “Specials”  that  fork  your  code Friday, November 6, 2009
  7. 7. ConCnuous  builds  taking  a  long  Cme Friday, November 6, 2009
  8. 8. Code  reflects  the  architecture? Friday, November 6, 2009
  9. 9. How  hard  is  it  to  change  something? Friday, November 6, 2009
  10. 10. Re-­‐use:  copy/paste Friday, November 6, 2009
  11. 11. Re-­‐use:  Object  Oriented Friday, November 6, 2009
  12. 12. Re-­‐use:  Component  Based Friday, November 6, 2009
  13. 13. ParCConing  your  applicaCon • minimize  dependencies • consider  rate  of  change • minimize  complexity • maximize  architected  flexibility • promote  reuse • improve  testability Friday, November 6, 2009
  14. 14. Designing  with  services >)=9)%)% A(..0=9 28"=4? C- (,)= 203) =)8 #0=302 @07(;' &<0,) -.,(%')% *+,(%')% 4%0,< 2:;0%) #"%#6) '%"0=46) 234 /0#)1(($ !"#$% A(=54;%0B(= @(4 &'(%) *3)=' #(=54 6(44)% 56)272'). 8)1903 )3)=' Friday, November 6, 2009
  15. 15. Designing  with  services >)=9)%)% A(..0=9 %)=9)%)% #(..0=9 28"=4? C- (,)= 203) =)8 #0=302 28"=4D#0=302 28"=4D;" 28"=4D#.9D(,)= 28"=4D#.9D203) 28"=4D#.9D=)8 28"=4D#(='%(62 @07(;' &<0,) -.,(%')% *+,(%')% 607(;' 2<0,) ".,(%')% )+,(%')% 4%0,< 2:;0%) #"%#6) '%"0=46) 234 /0#)1(($ !"#$% 607(;'D4%0,< 2<0,)D2:;0%) 2<0,)D#"%#6) 2<0,)D'%"0=46) ".,D234 )+,DE(($ ".,D!"#$% A(=54;%0B(= @(4 &'(%) *3)=' (24"D#0 (24"D6(4 2'(%) (24"D)3)=' #(=54 6(44)% 56)272'). 8)1903 )3)=' /)6"+D#0 /)6"+D6(4 2'(%)D/2 2'(%)D8)1903 /)6"+D)3)=' Friday, November 6, 2009
  16. 16. Designing  with  services %)=9)%)% #(..0=9 >)=9)%)% A(..0=9 %)=9)%)% #(..0=9 ;" #(..0=92 28"=4? C- (,)= 203) =)8 #0=302 28"=4D#0=302 28"=4D;" 28"=4D#.9D(,)= 28"=4D#.9D203) 28"=4D#.9D=)8 28"=4D#(='%(62 9%08"=4 &<0,) 0,"D"( @07(;' -.,(%')% *+,(%')% 607(;' 2<0,) ".,(%')% )+,(%')% 4%0,< 2<0,)2 234 )+,(%')%2 4%0,< 2:;0%) #"%#6) '%"0=46) 234 /0#)1(($ !"#$% 607(;'D4%0,< 2<0,)D2:;0%) 2<0,)D#"%#6) 2<0,)D'%"0=46) ".,D234 )+,DE(($ ".,D!"#$% 0,"D(24" A(=54;%0B(= @(4 &'(%) *3)=' (24"D#0 (24"D6(4 2'(%) (24"D)3)=' #(=5409."= 6(4 56)2'(%) 8)1903 )3)=' #(=54 6(44)% 56)272'). 8)1903 )3)=' /)6"+D#0 /)6"+D6(4 2'(%)D/2 2'(%)D8)1903 /)6"+D)3)=' Friday, November 6, 2009
  17. 17. The  Case  for  ACE • Started  in  incubator  on  april  24th  2009 • So<ware  distribuIon  framework   based  on  OSGi • 7  commi0ers • working  codebase • no  release  yet • h0p://incubator.apache.org/ace/ Friday, November 6, 2009
  18. 18. Deployment !"#$"%&%'() !"#$%&'( !"#$"%&%'(* !"#$%&'"() !"#$%&') !"#$"%&%'(! !"#$%&'* Friday, November 6, 2009
  19. 19. Keeping  the  history last year !"#$"%&%'() +,-.&'() last month !"#$"%&%'() !"#$"%&%'(* +,-.&'() last week !"#$"%&%'() !"#$"%&%'(* !"#$%&'( +,-.&'(! +,-.&'(* now !"#$"%&%'() !"#$%&'( !"#$"%&%'(* !"#$%&') +,-.&'(! !"#$"%&%'(* !"#$"%&%'(! !"#$%&') !"#$%&'* !"#$"%&%'(! !"#$%&'* Friday, November 6, 2009
  20. 20. Why? • Automate  deployment • Insight  into  who  uses  what • History  of  each  system • Consistent  development,  tesIng,  producIon • Basis  for  several  possible  extensions Friday, November 6, 2009
  21. 21. Topology !"#$%! 0"&"$%0%&!. "$%&! !"#$%! /2,%&! *#(+,-,(&,&$. 0"&"$%0%&!. &%!'(#) -%#+%# "$%&! !"#$%! 0"&"$%0%&!. "$%&! /(0*(&%&!. #%*(-,!(#1 Friday, November 6, 2009
  22. 22. High  level  overview !"#"$!"$%&' !"#,-&("$+ ()$)*"("$+ .""!/)%0 Friday, November 6, 2009
  23. 23. Dependency  Management • Organizing  components • Mapping  them  to  targets Friday, November 6, 2009
  24. 24. Organizing  components • group  components:  makes  them  manageable • two  levels:  group  and  license • Analogy:  IKEA  catalog • data  is  kept  in  “store  repository” !"#$%&'%(#)*"#$+ !"#$"%&%' ,-".$ ()*&%+& Friday, November 6, 2009
  25. 25. Mapping  them  onto  targets • mapping  licenses  to  targets • someImes  done  by  an  external  system • data  kept  in  “license  repository” !"#$%&$'($)*&"+*,- !"#$%&$ '()*$+ Friday, November 6, 2009
  26. 26. User  Interface • user  retrieves,   • modifies  locally  and   • stores  data  on  server Friday, November 6, 2009
  27. 27. Deployment • list  of  targets • list  of  versions  per  target • list  of  components  per  version • management  agent !"#$%&'"()*+"#%,-)%.& !"#$%& '()*(+%+& Friday, November 6, 2009
  28. 28. Deployment  Repository ',*-&'( )&*(+"%( !"#$"%&%'( 2 1"#$"%&%'/0 !"#$"%&%'() 3 1"#$"%&%'/0 !"#$"%&%'() !"#$"%&%'(! .,*-&'/0 4 1"#$"%&%'/0 !"#$"%&%'(! !"#$"%&%'(* 5 1"#$"%&%'/1 !"#$"%&%'(* 2 1"#$"%&%'/6 !"#$"%&%'(* .,*-&'/6 3 1"#$"%&%'/0 !"#$"%&%'() !"#$"%&%'(* Friday, November 6, 2009
  29. 29. Management  Agent • manages  life  cycle  of  bundles BundleContext • controls  package  sharing  policies PackageAdmin • controls  starIng/stopping  order StartLevel !"#$%"&'($)&%*+,-./'0 1/'&%"2&)$.$),-$/3 45&%!"#$%6++$,3)& • implements  a  security  policy 7&+&,8&%9:%;&'8$/3%9<= >?3&%=@@A Condi7onalPermissionAdmin Friday, November 6, 2009
  30. 30. Management  Agent !"#"$%!%#&'"$%#& *'.#"/0#, '('.# "#10)-2#$34 (/"!340)6 3(*5 !"#$%&'(%)$ "!*')+#,- Friday, November 6, 2009
  31. 31. Deployment  Admin • deployment  packages • versioned  set  of  arIfacts • transacIonal  install/update • fix  packages  provide  deltas • signing  makes  them  secure • extensible  through  resource  processors • AutoConfig  defines  configuraIon  admin  data Friday, November 6, 2009
  32. 32. From  dependency  to  deployment !"#$%&'%(#)*"#$+ ,*-%.)%&'%(#)*"#$+ /%(0#+1%."&'%(#)*"#$+ !"#$"%&%' ,-".$ ()*&%+& + ()*&%+& /0-1&' = /0-1&' !"#$"%&%' Friday, November 6, 2009
  33. 33. Feedback !"#$%! *#(+,-,(&,&$. /"&"$%/%&!. &%!'(#) -%#+%# "$%&! 012,!. 012,!. 3($ 3($ !=#".%@A*?B*-%45(%23-'+*,C%151*%4521- $"#$E%;21-<*%$"%,+533*- !:#". !D#".!"#$"%&'()*+%,+'(+*- $"#$9 !"#$"%&'()*+%,+'(+*- $E#".!"#$.%/+'(01)%23-'+*%4(56%7*(,851%9%+5%: $"#.9 !"#$.%/+'(01)%23-'+*%4(56%7*(,851%9%+5%: $!#".!"#$.%;21-<*%"=%23-'+*- E$#$$ !"#$.%;21-<*%"=%23-'+*- !"#$9%>3-'+*%+5%7*(,851%:%,2??**-*- E9#$$ !"#$9%>3-'+*%+5%7*(,851%:%,2??**-*- !.#$9%&'()*+%,+533*- !.#$9%&'()*+%,+533*- Friday, November 6, 2009
  34. 34. Demo Friday, November 6, 2009
  35. 35. Demo Friday, November 6, 2009
  36. 36. Demo Friday, November 6, 2009
  37. 37. Demo Friday, November 6, 2009
  38. 38. Wrapup • Apache  ACE  is  incubaIng • Take  it  for  a  test-­‐drive! • Looking  for  contribuIons: • Apache  Felix  Karaf • Maven  /  Nexus  repository • Kalumet,  JEE  auto  deployment Friday, November 6, 2009
  39. 39. QuesCons? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Friday, November 6, 2009

×