flexible application development using fuse and openshift

33
RED HAT FORUM, HELSINKI, 4.10.2016 HELPING THE WORLD GO DIGITAL

Upload: duongkien

Post on 14-Feb-2017

230 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Flexible application development using Fuse and Openshift

RED HAT FORUM, HELSINKI, 4.10.2016

HELPING THE WORLD GO DIGITAL

Page 2: Flexible application development using Fuse and Openshift

Flexible application development using Fuse & Openshift

Page 3: Flexible application development using Fuse and 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

!

Page 4: Flexible application development using Fuse and Openshift

BRIEFLY ABOUT AMBIENTIA

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

TECHNOLOGY PARTNERS

Page 5: Flexible application development using Fuse and Openshift

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.

Page 6: Flexible application development using Fuse and Openshift

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

Page 7: Flexible application development using Fuse and Openshift

Technical Implementation

Page 8: Flexible application development using Fuse and Openshift

FUSE backend services

Page 9: Flexible application development using Fuse and Openshift

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

Page 10: Flexible application development using Fuse and Openshift

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.

Page 11: Flexible application development using Fuse and Openshift

Deploying OSGi modules to FUSE

Page 12: Flexible application development using Fuse and Openshift

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.

Page 13: Flexible application development using Fuse and Openshift
Page 14: Flexible application development using Fuse and Openshift

Runtime environments

Page 15: Flexible application development using Fuse and Openshift

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.

Page 16: Flexible application development using Fuse and Openshift

Openshift and Fuse environments

Page 17: Flexible application development using Fuse and Openshift

SUPPORTING THIRD PARTY DEVELOPERS

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

Page 18: Flexible application development using Fuse and Openshift

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.

Page 19: Flexible application development using Fuse and Openshift

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)

Page 20: Flexible application development using Fuse and Openshift

Splitting public frontend application

Page 21: Flexible application development using Fuse and Openshift

Splitting search backend application

Page 22: Flexible application development using Fuse and Openshift
Page 23: Flexible application development using Fuse and Openshift

Service scaling (Part 1, wishful thinking)

Page 24: Flexible application development using Fuse and Openshift

Service scaling (Part 2, partially scalable)

Page 25: Flexible application development using Fuse and Openshift

Build, package and deploy

Page 26: Flexible application development using Fuse and Openshift

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

!

Page 27: Flexible application development using Fuse and Openshift

FLEXIBLE TOOLS

Page 28: Flexible application development using Fuse and Openshift

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.

Page 29: Flexible application development using Fuse and Openshift

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.

Page 30: Flexible application development using Fuse and Openshift

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.

Page 31: Flexible application development using Fuse and Openshift

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.

Page 32: Flexible application development using Fuse and Openshift

Conclusion Flexible & Cool.

… as long as ...

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

Page 33: Flexible application development using Fuse and Openshift

Thanks!