O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (Software AG)

152 visualizações

Publicada em

OSGi Community Event 2018 Presentation by Udo Hafermann (Software AG)

Abstract: In this talk we will share our experiences in developing a tool chain from classes, to bundles, to containers, to systems.
OSGi and Docker come together in a compelling way where the former provides modularity "in the small" and the latter "modularity in the large". We discover how the unique characteristics of OSGi enable a smooth transition from small to large.
The resulting environment enables developers to grow distributed systems on their local machine and test them with plain JUnit at all levels of granularity - classes to systems. During development OSGi enables the tool chain to update the system without container rebuilds.
While an increase in productivity is one benefit of such an environment, an arguably more important benefit is the way it empowers developers to gain new insights.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (Software AG)

  1. 1. © 2018 Software AG. All rights reserved. Udo Hafermann Todor Boev OSGi WITH DOCKER A POWERFUL WAY TO DEVELOP JAVA SYSTEMS
  2. 2. 2 | OVERVIEW • In this demo we present a tool chain from classes, to bundles, to containers, to systems • OSGi and Docker come together providing “modularity in the small” and “modularity in the large” • Grow distributed systems on your local machine and test them with plain JUnit at all levels of granularity - classes to systems • Update the system without container rebuilds • Increase your productivity but also gain new insights © 2018 Software AG. All rights reserved.
  3. 3. 3 | SAMPLE APPLICATION © 2018 Software AG. All rights reserved.
  4. 4. 4 | COMPOSITION LAYERS • Bundles implementing the functionality (services etc.) – Collected in a repo – Compile or provision • Features defining higher-level components – Collected in a repo • Runtimes (OSGi and non-OSGi) – Provisioned from higher-level components – Collected as container images ready for standing up systems • Systems – Configured and instantiated from images © 2018 Software AG. All rights reserved.
  5. 5. 5 | BUILD OVERVIEW © 2018 Software AG. All rights reserved.
  6. 6. 7 | DEMO: BUILD THE SYSTEM • Run (local) Gradle build to create bundles, features, containers • Use docker-compose to stand up the system © 2018 Software AG. All rights reserved.
  7. 7. 8 | EDIT-COMPILE-RUN © 2018 Software AG. All rights reserved.
  8. 8. 9 | DEVELOPMENT CYCLES © 2018 Software AG. All rights reserved.
  9. 9. 10 | DEMO: DEV CYCLES • Running “external” system test • Attach to a system’s (OSGi) console • Live update of a bundle • Attach a debugger • Deploy and run a test from inside a container © 2018 Software AG. All rights reserved.
  10. 10. 11 | FINDINGS • Suitable modularity at all levels – OSGi gives us flexibility/freedom to compose logic rather than containers – Component model independent of container model • Flexibility in the “middle layer” • Containers can be used for dev and production • Developers can work with the OSGi runtime representation in the running system – Dynamic updates, tests • Efficiency – Minimal container footprint – Quick turnaround – End-to-end (Junit) testing © 2018 Software AG. All rights reserved.
  11. 11. 12 | OPEN ENDS • Limitations of the example – Persistence – Production deployment, orchestration (Swarm, Kubernetes) • Too much configuration – E.g. ports for testing – Tooling gateway – Discovery © 2018 Software AG. All rights reserved.
  12. 12. 14 | © 2018 Software AG. All rights reserved.

×