Lessons learned from a large scale OSGi web app. Jago de Vreede Paul Bakker



Similar documents
Modularity in the cloud. A case study

Continuous Automated Deployment with

Architecture Workshop

Karthikeyan Sadayamuthu Senior Java Developer Mobile: (470)

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

HYBRID. Course Packet

Rapid Application Development. and Application Generation Tools. Walter Knesel

Agile Best Practices and Patterns for Success on an Agile Software development project.

Nuxeo, an open source platform for content-centric business applications. Stéfane Fermigier, Nuxeo Laurent Doguin, Nuxeo

OUR COURSES 19 November All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan Göteborg Sweden

Framework Adoption for Java Enterprise Application Development

Managing Complexity in Mobile Application Deployment Using the OSGi Service Platform

Building a Modular Server Platform with OSGi. Dileepa Jayakody Software Engineer SSWSO2 Inc.

Urbancode Deploy Overview

Red Hat Mobile Application Platform

Operations and Monitoring with Spring

Developing modular Java applications

Migration and Developer Productivity Solutions Cloud, Mobile and Web Development Workshop

NoSQL web apps. w/ MongoDB, Node.js, AngularJS. Dr. Gerd Jungbluth, NoSQL UG Cologne,

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

Software Development Interactief Centrum voor gerichte Training en Studie Edisonweg 14c, 1821 BN Alkmaar T:

SENIOR WEB DEVELOPER

Preparing Your Business for Magento 2.0

MarkLogic Server. Reference Application Architecture Guide. MarkLogic 8 February, Copyright 2015 MarkLogic Corporation. All rights reserved.

Welcome to the Force.com Developer Day

enterprise IBM Rational Team Concert 2 Essentials

Vincent Gabriel. Summary. Experience. Senior Software Developer at Landmark Network

OUR TEAM. Enterprise Application Experts

Inside the Digital Commerce Engine. The architecture and deployment of the Elastic Path Digital Commerce Engine

ENTERPRISE MOBILE BACKEND AS A SERVICE EVALUATION CHECKLIST

Client Overview. Engagement Situation. Key Requirements

Apache Sling A REST-based Web Application Framework Carsten Ziegeler cziegeler@apache.org ApacheCon NA 2014

Software development & technologies in Market Research industry

Developing Microsoft SharePoint Server 2013 Core Solutions

OXAGILE RESUMES SUMMARY OF QUALIFICATIONS TECHNICAL SKILLS SENIOR JAVA SOFTWARE ENGINEER

SAV2013: The Great SharePoint 2013 App Venture

Lucy Zhang UI Developer Contact:

This Record of activity confirms that Jonathan Scrase has completed the following courses within the Microsoft Virtual Academy:

White Paper: 1) Architecture Objectives: The primary objective of this architecture is to meet the. 2) Architecture Explanation

Server-side OSGi with Apache Sling. Felix Meschberger Day Management AG 124

AngularJS for the enterprise

Gabriel Iuga. London, United Kingdom Tel: ; Website:

Paul Boisvert. Director Product Management, Magento

Sandesh Prasanna Kumar

Testing Tools using Visual Studio. Randy Pagels Sr. Developer Technology Specialist Microsoft Corporation

Connect Web Experience. Basel. Modular Front-End in AEM. Namics. Michael Kreis. Software Engineer. René Bach. Senior Frontend Engineer.

SAP Mobile Platform Intro

Best Practices for Python in the Cloud: Lessons

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Sparx Systems Enterprise Architect Cloud-based repository hosting

NextRow - AEM Training Program Course Catalog

A central continuous integration platform

Beyond the SOA/BPM frontiers Towards a complete open cooperative environment

The Learn-Verified Full Stack Web Development Program

Agenda. Success Stories with OpenShift. 11:15-11:45 am. OpenShift Tech Overview 9:40-10:30 am. Red Hat Mobile on OpenShift 10:45-11:15 am

FROM BANNER 8 TO BANNER XE. What s the story?

ENGINEER - DEVELOPER ADVANCED JAVA. 28 years old - 7 years of experience

How To Use An Informix System With A Computer System (For A Dba)

EMPLOYEE LOCATION TRACKING SERVICE

Skillsoft Course Directory

How to choose the right PaaS Platform?

WE BUILD ONLINE SYSTEMS USEFUL WEB & MOBILE APPLICATIONS

TIAGO FAIA MARQUES Online CV / Portfolio

Multi-touch app development with modern web tools. David Reagan, Advanced Visualization Lab

HADOOP BIG DATA DEVELOPER TRAINING AGENDA

Oracle im Open Source Kontext Abgrenzung GlassFish vs. JBoss und wozu noch WebLogic?

Easy configuration of NETCONF devices

Cloud Powered Mobile Apps with Azure

HP OO 10.X - SiteScope Monitoring Templates

Pro<DOC/> e-commerce Technology An Introduction

Introducing. Cathal McGloin, VP & General Manager, Mobile Platforms Javier Perez, Director of Product Management and Global Consulting

Portals, Portlets & Liferay Platform

Milan Mlynárčik. PelicanTravel.com, s.r.o., Bratislava, Slovakia Jun 2014 Sep 2014

APP DEVELOPMENT ON THE CLOUD MADE EASY WITH PAAS

Introduction to Oracle Mobile Application Framework Raghu Srinivasan, Director Development Mobile and Cloud Development Tools Oracle

DevOps Best Practices for Mobile Apps. Sanjeev Sharma IBM Software Group

OpenShift is FanPaaStic For Java EE. By Shekhar Gulati Promo Code JUDCON.IN

Ruby on Rails Development Services

Offerte del 13 giugno 2014

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Orion: Software Development in the Browser

Enterprise Application Development In Java with AJAX and ORM

JAVA/J2EE DEVELOPER RESUME

Web Cloud Architecture

Experiences with Open-Source BPM/SOA-based Stack using Java EE Rok Povše, Matjaž B. Jurič

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

Continuous Integration and Delivery at NSIDC

Deploy Your First CF App on Azure with Template and Service Broker. Thomas Shao, Rita Zhang, Bin Xia Microsoft Azure Team

Transcription:

Lessons learned from a large scale OSGi web app Jago de Vreede Paul Bakker

Paul Bakker @pbakker

Jago de Vreede

Agenda! High level architecture Modular architecture Modularity with OSGi Cloud deployments with Apache ACE Frontend frameworks

Ask whenever you want!

The case PulseOn! Educational system focussed on personalized learning! Used in high schools in the Netherlands! Expand to other countries in the near future

Tools bndtools Eclipse OSGi plugin http://bndtools.org/ Eclipse http://eclipse.org/ Source control Cloud provisioning http://ace.apache.org/ WebStorm http://jetbrains.com/ webstorm/ Stash, Jira, Bamboo http://atlassian.com/

High level architecture Requirements:! Agile and modular Modern web app UI mostly offloaded to clients or devices Integration via REST API Horizontally scalable A m d a t u HTML 5 + JavaScript RESTful services OSGi services Apache Felix Mongo S3

Components Auth Blob stores MongoDB Multi-tenancy OpenSocial Search Remote Services REST Template Web...

Deployment Load Balancer Load Balancer PulseOn adn PulsLo eo Mongo Mongo Mongo PulseOn Load PulseOn PulseOn School B PulseOn School A Load Balancer Mongo Mongo Mongo DAMS LoMad DA S DAMS Content backend Mongo Mongo Mongo

Profiles Rest Progress Rest services... Rest all the way down Profiles API Progress API Curriculum API... API Profiles Service Progress Service Curriculum Service... Service MongoDB MongoDB MongoDB

A service should only do one single thing

Services are the (reusable) building blocks of our application

Benefits of a services based architecture! Small services are easy to maintain Small services are composable Services are easily testable

Packaging services Services are packaged in small bundles Related bundles may be generated from a single Bndtools project

Data Storage

Semantic data store (triple store) MySQL (with JPA) MongoDB Beginning Now

Relational databases in a modular system A part of data should be owned by 1 service How to set boundaries in a relational world!?

Relational databases in the modern web! ORM is REALLY difficult to get right Relational databases don t scale well

MongoDB: our database of choice Object Mapping trivial Easy to scale Powerful aggregation/map-reduce framework!

Code example: MongoDB with Amdatu Amdatu Mongo Service Setup Object Mapper Execute query

Release & Deployment

Binaries Release to release repo Release to release OBR

JavaScript minification closure compiler deterministic? => fixed March 3, 2014 Baseline OBR Release OBR CI Build Server

Deployment Software distribution framework Manages the installation and upgrade of bundles, configuration, etc. to heterogenous targets

Deployment Load Balancer Load Balancer PulseOn adn PulsLo eo Mongo Mongo Mongo PulseOn Load PulseOn PulseOn School B PulseOn School A Load Balancer Mongo Mongo Mongo DAMS LoMad DA S DAMS Content backend Mongo Mongo Mongo

Deployment PulseOn Load Balancer Load PulseOn PulseOn School Load Balancer DAMS Load DAMS DAMS Content backend

Deployment Load Balancer Apache ACE Target TaLrogad et Target School Load Balancer Target TaLrogad et Target Content backend Release OBR Baseline OBR CI Build Server

Continuous Deployment Load Balancer TaLrogad et School Apache ACE Snapshot OBR CI Build Server Load Balancer TaLrogad et Content backend Like to know more? Continuous Automated Deployment with Apache ACE youtube.com/watch?v=4s_zvgg_mlw

Unit testing OSGi code is trivial But what if we want more?

Integration testing turns out to be trivial as well! Automated dependency injection of service Setup Config Admin Junit style asserts

Frontend frameworks

jquery Pros Easy to get started Can do a lot with not much code Lot of helpful plugins available

jquery Cons Hard to maintain Hard to test

Backbone.js Pros Well structured Designed towards consuming REST data

Backbone.js Cons A LOT OF CODE!! Hard to maintain Testable

AngularJS

AngularJS Pros Well structured Designed towards consuming REST data Testable No guessing in html

TypeScript Pros compile time checks Well structured Code completion

TypeScript Cons Need to have a definition Well to work structured Slow-ish

Wrap up A modular architecture gives us: Maintainability!! Extensibility Freedom to change

But what if I want Spring EJB Hibernate? Just don t You really don t need to.

Cloud provisioning http://ace.apache.org/ Cloud OSGi services http://www.amdatu.org/ Amdatu Paul Bakker paul.bakker@luminis.eu @pbakker Eclipse OSGi plugin http://bndtools.org/ That s us http://luministechnologies.com Jago de Vreede jago.devreede@luminis.eu

Learn more? Friday 10.20-12.50 or 14.45-17.15!! Tutorial Developing modular cloud applications with OSGi