NORDICMIND, HELSINKI, 9.2.2017
Flexible Application Development Using Fuse & Openshift
RAKENNUSTIETO – THE CUSTOMER CASE
Stand-alone fullstack applications
Frontends and backends separated
Pool of service apis and per need frontends
Backend data management applications
MIDDLEWARE MOTIVATION
WHY CHOOSE FUSE:
1. Minimize the number of integrations
2. Develop functionalities once and reutilize them in different end user applications
3. Allow for a more modular application architecture
4. Enable multivendor development work
Technical implementation, FUSE backend services
OSGi modules All backend services are REST that produce and consume JSON. The component that generates the apis is Apache CXF. Behind those entrypoints are Camel routes. Routes handle passing the received message to the actual services. Services can be custom java beans or any existing components that can receive a Camel message. All backend code is wrapped as OSGi modules, which may contain java code, service registrations and so on.
Deploying OSGi modules to FUSE
OSGi module dependencies and grouping FUSE includes an OSGi container called Karaf. OSGi module installation and dependency management can be handled with Karaf features. Your custom implementation has some dependencies which can be provided by pre-defined features, existing OSGi-bundles or existing 3rd party libraries that you can wrap on-the-fly as OSGi modules. By typing "features:install tpa-tracking-ds-mysql" at the Karaf console, you get all the runtime dependencies and your module installed even to a fresh Fuse instance.
Runtime environments
Openshift and Fuse environments
Applications as Virtual Machines Moko (public frontend) and haku (backend search) applications as Virtual Machines. All services inside a VM are equal, consume limited shared resources and can cause issues that affect other services. Scaling up VM resources often requires downtime, scaling out VM's requires manual clustering configuration or setting up a loadbalancer.
Splitting public frontend application
Splitting search backend application
Service scaling (Part 1, wishful thinking)
Service scaling (Part 2, partially scalable)
Build, package and deploy
FLEXIBLE TOOLS Getting packaged applications to Openshift Company internal build pipeline - output can be an osgi module, executable
within Fuse Karaf OSGi container - output can be executable without Openshift
(for example web application jar-file with embedded tomcat)
Openshift project specific configuration - build, service and routing configurations
required per Openshift project - the company internal build pipeline could
take more responsibility of constructing Openshift configuration, but Docker and Openshift have their own tools for that
!
FLEXIBLE TOOLS
FLEXIBLE TOOLS
BitBucket is a professional Git version control system. Bamboo is a professional tool for continuous integration. Nexus is a repository manager.
Conclusion Flexible & Cool.
… as long as ...
- Your application components are stateless - Your application stack is split into modules
APIen hallinnalla uutta liiketoimintaa
Webinaari – 16.2. klo 14-15
Sosiaalinen Intranet
Tapahtuma Helsingissä – 9.3. klo 8.30-11.30
JIRA Service Desk
Webinaari – 14.3. klo 10-11
E-Commerce Helsinki Tapahtuma (Messukeskus osasto 5g34) – 8.-9.3.
Liferay Audience Targeting Webinaari – 21.3. klo 10-11
Henrin Kokkikoulu - OpenShift Aamiaistilaisuus Helsingissä – 22.3. klo 8.30-9.30
Q1
Thanks!