Upload
dmitry-savchenko
View
278
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Mjolnirr Juelich presentation
Citation preview
MjolnirrThe private cloud platform
22.11.13
Mjolnirr 2
Outline● Overview● Architecture● Implementation● Getting started● Distributed analytics with Mjolnirr● Experiments● Further research
22.11.13
Mjolnirr 3
Overview
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
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
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!
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)
22.11.13
Mjolnirr 8
Developer API● Different types of components
– Application– Module
● Maven plugins● SDK● IDE integration
– Intellij IDEA
22.11.13
Mjolnirr 9
Mjolnirr and MVC
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
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
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.
22.11.13
Mjolnirr 13
Competitors● Yandex Cocaine● OpenStack● VMWare Private Cloud
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
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
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
22.11.13
Mjolnirr 17
Architecture
22.11.13
Mjolnirr 18
System structure
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
22.11.13
Mjolnirr 20
Message passing
22.11.13
Mjolnirr 21
Message passing
22.11.13
Mjolnirr 22
Message passing
22.11.13
Mjolnirr 23
Implementation
22.11.13
Mjolnirr 24
Technologies● JavaFX● GSON● Guice● HornetQ & Netty● Maven● Apache Commons
22.11.13
Mjolnirr 25
UNICORE integration
22.11.13
Mjolnirr 26
Getting started
22.11.13
Mjolnirr 27
Sample project creation● Mjolnirr maven archetype
mvn archetype:generate
-DarchetypeCatalog=http://mjolnirr.com/
archiva/repository/mjolnirr
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>
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>
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);
}
}
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());
22.11.13
Mjolnirr 32
Deployment: physical level
22.11.13
Mjolnirr 33
Deployment: logical level
22.11.13
Mjolnirr 34
Distributed analyticswith Mjolnirr
22.11.13
Mjolnirr 35
Analytics application● Web pages crawling and analytics
– N crawler nodes– M analytics nodes– 1 portal to represent the data
22.11.13
Mjolnirr 36
Traditional approach
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
22.11.13
Mjolnirr 38
Mjolnirr approach
22.11.13
Mjolnirr 39
Mjolnirr approach● Automatic serialization, predefined
communication protocol● Built-in Quartz scheduling● Automatic components management● Automatic load balancing
22.11.13
Mjolnirr 40
Experiments
22.11.13
Mjolnirr 41
Serial execution● Request passed through the chain of N proxy
nodes● N = 10..100
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
22.11.13
Mjolnirr 43
Parallel execution● N requests sent simultaneously● Each module does some work for 10 seconds
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
22.11.13
Mjolnirr 45
Further research
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
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
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
22.11.13
Mjolnirr 49
Roadmap● 0.4
– Browser plugins support– Custom FXML elements– Controller state saving
22.11.13
Mjolnirr 50
Thanks!
Dmitry Savchenko, cofounder [email protected] Mihailov, cofounder [email protected]: [email protected] homepage: http://mjolnirr.com