flexible application development using fuse and openshift

Post on 14-Feb-2017

230 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

RED HAT FORUM, HELSINKI, 4.10.2016

HELPING THE WORLD GO DIGITAL

Flexible application development using Fuse & Openshift

BRIEFLY ABOUT AMBIENTIA

Ambientia is a consulting, design and application development company that creates web and mobile applications for the digitization of our customers’ businesses

•  Company founded in 1996 •  Altogether 140+ professionals

!

BRIEFLY ABOUT AMBIENTIA

E-COMMERCE ONLINE SERVICES IoT SOLUTIONS DIGITAL WORK ENVIRONMENT DIGITALIZATION OF PROCESSES ADLM SOLUTIONS

TECHNOLOGY PARTNERS

RAKENNUSTIETO – THE CUSTOMER CASE

Building Information Group is the leading provider of construction information in Finland. The group aims to foster both good planning and building methods and good property management practices. The Foundation and its activities are directed by a Board and an Assembly that represents the entire building and construction industry through 52 associations and organisations.

The aim in the development of digital services has been to: •  Renew existing digital services to support new business models •  Develop new digital services •  Develop a service channel for flexible integrations to a number of

backend systems and potentially third party systems

In the future customers will be able to buy digital information services more flexibly and in a more customized manner.

RAKENNUSTIETO – THE CUSTOMER CASE

Ambientia’s proposal included a new kind of an architecture for the long-term development of digital services. Red Hat FUSE will be introduced in order to gain:

1.  Minimizing the number of integrations

2.  Develop functionalities once and reutilize them in different end user applications

3.  Allowing for a more modular application architecture

4.  Enable multivendor development work

Technical Implementation

FUSE backend services

FLEXIBLE TOOLS - FUSE

”Red Hat Jboss Fuse is a lightweight, flexible integration platform that enables rapid integration across the extended enterprise—on-premise or in the cloud. JBoss Fuse includes modular integration capabilities, a new style enterprise service bus (ESB), to unlock information.” https://www.redhat.com/en/technologies/jboss-middleware/fuse

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

THE NEXT STEP: RED HAT OPENSHIFT

Rakennustieto aims to find one reliable partner to host all the developed front end applications. Ambientia provides the customer with an Openshift environment that will run applications developed by Ambientia, but also third party applications integrated to the customer digital experience.

Openshift and Fuse environments

SUPPORTING THIRD PARTY DEVELOPERS

Ambientia also provides support for the third party application developers in their efforts to produce OpenShift compatible applications.

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.

Limitations of Virtual Machines

Identified problems with using VMs -  the whole VM is the client to your backend services -  when one part needs scaling up, the whole VM has to be scaled up -  scaling out means copying the whole application stack to another VM

- new VM's need a lot of resources and manual network configuration - all stateful components need to be configured for clustering (for example all traditional web applications store user session at the server-side)

-  all components consume shared resources (cpu, memory, disk, network) -  all components have access to each other

- intentionally or unintentionally (in case of a security breach, all components are exposed to the attacker)

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. We use BitBucket hosted by Ambientia as the centralized version control system for the project. It helps us to organize and control the source codes in a multi-vendor project in a consistent manner. It provides access control for different groups of users and provides a consistent code base to our CI/CD tools.

FLEXIBLE TOOLS

Bamboo is a professional tool for continuous integration. It helps software projects by providing consistency in the way an application is built, tested and deployed. Removing manual steps from the process it saves time and removes human errors. We use Bamboo to automate building the source code into deployaple .jar files.

FLEXIBLE TOOLS

Nexus is a repository manager that helps drastically reduce build times. It caches artifacts retrieved from central repositories and stores the build results. We have an internal Nexus server.

FLEXIBLE TOOLS

After compilation we use OpenShift to build a Docker image and deploy it into the production environment hosted by Ambientia. Our production environment currently consists of 10 nodes. Minimum development needs for OpenShift are easily packaged into the Container Development Kit by Red Hat. It consists of a Vagrant box that runs on VMWare/VirtualBox on your workstation and has all the same features as a real life server installation.

Conclusion Flexible & Cool.

… as long as ...

-  Your application components are stateless -  Your application stack is split into modules

Thanks!

top related