mjollnir01

50
Mjolnirr The private cloud platform

Upload: dmitry-savchenko

Post on 06-Jul-2015

278 views

Category:

Technology


0 download

DESCRIPTION

Mjolnirr Juelich presentation

TRANSCRIPT

Page 1: Mjollnir01

MjolnirrThe private cloud platform

Page 2: Mjollnir01

22.11.13

Mjolnirr 2

Outline● Overview● Architecture● Implementation● Getting started● Distributed analytics with Mjolnirr● Experiments● Further research

Page 3: Mjollnir01

22.11.13

Mjolnirr 3

Overview

Page 4: Mjollnir01

22.11.13

Mjolnirr 4

What is Mjolnirr?● Private PaaS cloud distributed platform● Developer-friendly API● Store● Built-in async messaging● JavaFX-based browser● Third-party application support

Page 5: Mjollnir01

22.11.13

Mjolnirr 5

How can I use it?● You can create:

– Your own private DropBox– Enterprise Service Desk application– Distributed analytics application– etc

Page 6: Mjollnir01

22.11.13

Mjolnirr 6

Private PaaS● Storing enterprise data in a public cloud is a

definitely bad idea– It can be lost...– ...or stolen...– ...and you even cannot control it!

● Want some privacy? DIY!

Page 7: Mjollnir01

22.11.13

Mjolnirr 7

Features● JavaFX FXML layouts● Jade language support● CSS + ZUSS (like LESS/SASS but ZUSS)● Can work on any computer (including PC)● Built-in async requests system

– Direct component request (by name)– Broadcat interface request (any implentation of target

interface in current Mjolnirr installation)

Page 8: Mjollnir01

22.11.13

Mjolnirr 8

Developer API● Different types of components

– Application– Module

● Maven plugins● SDK● IDE integration

– Intellij IDEA

Page 9: Mjollnir01

22.11.13

Mjolnirr 9

Mjolnirr and MVC

Page 10: Mjollnir01

22.11.13

Mjolnirr 10

Store● Store is the third-party components online-

shop● For business

– Setup your IT infrastructure fast & cheap● For software companies

– Expand your market share

Page 11: Mjollnir01

22.11.13

Mjolnirr 11

For developers● You can use Mjolnirr as infrastructure solution

– Write once — sell to anyone● If you have no enterprise clients

– Use the Store to enter B2B market● Feel free to fork Mjolnirr — it's open source

Page 12: Mjollnir01

22.11.13

Mjolnirr 12

For business● Easy-to-deploy infrastructure solution● Lots of components in Store● Extensible architecture — add components

when you need it● Integration — Mjolnirr will be integrated with

SAP, PSI, Oracle, MS Dynamics etc.

Page 13: Mjollnir01

22.11.13

Mjolnirr 13

Competitors● Yandex Cocaine● OpenStack● VMWare Private Cloud

Page 14: Mjollnir01

22.11.13

Mjolnirr 14

Yandex Cocaine● Heroku-like PaaS● Supports lots of languages● Doesn't support application migration and

container autodeployment● Doesn't provide message subsystem

Page 15: Mjollnir01

22.11.13

Mjolnirr 15

OpenStack● IaaS● Requires several servers to deploy on● Works with virtual machines and, therefore,

requires some software for hosting etc● Doesn't provide message subsystem

Page 16: Mjollnir01

22.11.13

Mjolnirr 16

VMWare Private Cloud● Commercial IaaS● Works with virtual machines and, therefore,

requires some software for hosting etc● Doesn't provide message subsystem

Page 17: Mjollnir01

22.11.13

Mjolnirr 17

Architecture

Page 18: Mjollnir01

22.11.13

Mjolnirr 18

System structure

Page 19: Mjollnir01

22.11.13

Mjolnirr 19

Component types● Application

– Provides interface, static files and some logic– [MVC] Controller + views

● Module– Encapsulates one entity logic– [MVC] Model

Page 20: Mjollnir01

22.11.13

Mjolnirr 20

Message passing

Page 21: Mjollnir01

22.11.13

Mjolnirr 21

Message passing

Page 22: Mjollnir01

22.11.13

Mjolnirr 22

Message passing

Page 23: Mjollnir01

22.11.13

Mjolnirr 23

Implementation

Page 24: Mjollnir01

22.11.13

Mjolnirr 24

Technologies● JavaFX● GSON● Guice● HornetQ & Netty● Maven● Apache Commons

Page 25: Mjollnir01

22.11.13

Mjolnirr 25

UNICORE integration

Page 26: Mjollnir01

22.11.13

Mjolnirr 26

Getting started

Page 27: Mjollnir01

22.11.13

Mjolnirr 27

Sample project creation● Mjolnirr maven archetype

mvn archetype:generate

-DarchetypeCatalog=http://mjolnirr.com/

archiva/repository/mjolnirr

Page 28: Mjollnir01

22.11.13

Mjolnirr 28

Component POM.xml<pluginRepositories>

<pluginRepository>

<id>mjolnirr</id>

<name>Maven Plugin Repository</name>

<url>

http://mjolnirr.com/archiva/repository/mjolnirr

</url>

</pluginRepository>

</pluginRepositories>

Page 29: Mjollnir01

22.11.13

Mjolnirr 29

Component POM.xml<plugin>

<groupId>com.mjolnirr</groupId>

<artifactId>

mjolnirr-maven-plugin

</artifactId>

<version>0.2</version>

<configuration>

<mainClass>org.example.Main</mainClass>

</configuration>

</plugin>

Page 30: Mjollnir01

22.11.13

Mjolnirr 30

Main component classpublic class Calculator extends AbstractApplication {

@Override

public void initialize(ComponentContext c) {

this.context = c;

}

public String calculate(String exp) {

return magic(exp);

}

}

Page 31: Mjollnir01

22.11.13

Mjolnirr 31

Message passingCommunicator communicator = new HornetCommunicator();

communicator.sendSync(context, «component», «method», args, String.class);

communicator.send(context, «component», «method», args, new CallbackA());

Page 32: Mjollnir01

22.11.13

Mjolnirr 32

Deployment: physical level

Page 33: Mjollnir01

22.11.13

Mjolnirr 33

Deployment: logical level

Page 34: Mjollnir01

22.11.13

Mjolnirr 34

Distributed analyticswith Mjolnirr

Page 35: Mjollnir01

22.11.13

Mjolnirr 35

Analytics application● Web pages crawling and analytics

– N crawler nodes– M analytics nodes– 1 portal to represent the data

Page 36: Mjollnir01

22.11.13

Mjolnirr 36

Traditional approach

Page 37: Mjollnir01

22.11.13

Mjolnirr 37

Traditional approach● Self-written protocol or external library● Self-written scheduling or external library● Stand-alone applications● Reference storage for all of the modules

Page 38: Mjollnir01

22.11.13

Mjolnirr 38

Mjolnirr approach

Page 39: Mjollnir01

22.11.13

Mjolnirr 39

Mjolnirr approach● Automatic serialization, predefined

communication protocol● Built-in Quartz scheduling● Automatic components management● Automatic load balancing

Page 40: Mjollnir01

22.11.13

Mjolnirr 40

Experiments

Page 41: Mjollnir01

22.11.13

Mjolnirr 41

Serial execution● Request passed through the chain of N proxy

nodes● N = 10..100

Page 42: Mjollnir01

22.11.13

Mjolnirr 42

Serial execution

10 25 50 1000

500

1000

1500

2000

2500

3000

Nodes count

Tim

e in

mill

isec

onds

Page 43: Mjollnir01

22.11.13

Mjolnirr 43

Parallel execution● N requests sent simultaneously● Each module does some work for 10 seconds

Page 44: Mjollnir01

22.11.13

Mjolnirr 44

Parallel execution

1 10 25 50 1000

200

400

600

800

1000

1200

1400

1600

1800

Request count

Tim

e in

mill

isec

onds

Page 45: Mjollnir01

22.11.13

Mjolnirr 45

Further research

Page 46: Mjollnir01

22.11.13

Mjolnirr 46

Further directions● Application-level migration

– Moving the running component instance from one container to another

● Fault tolerance– Automatic component distribution, state saving and

resuming● Better integration

– Eclipse, Visual Studio

Page 47: Mjollnir01

22.11.13

Mjolnirr 47

Currently implemented● Current version is 0.2

– FXML browser– Container without application moving feature– Proxy and static file hosting– Sync and async messaging– Jade and ZUSS support

Page 48: Mjollnir01

22.11.13

Mjolnirr 48

Roadmap● 0.3

– Administrator interface– Nodes monitoring and container autodeployment– Template support– Custom classes in browser JavaScript– Netty + Protobuf– Database unified access module

Page 49: Mjollnir01

22.11.13

Mjolnirr 49

Roadmap● 0.4

– Browser plugins support– Custom FXML elements– Controller state saving

Page 50: Mjollnir01

22.11.13

Mjolnirr 50

Thanks!

Dmitry Savchenko, cofounder [email protected] Mihailov, cofounder [email protected]: [email protected] homepage: http://mjolnirr.com