Flexible Application Development Using Fuse & Openshift

Preview:

Citation preview

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!

Recommended