Dirigible powered by Orion for Cloud Development (EclipseCon EU 2015)

Preview:

Citation preview

DIRIGIBLENedelcho Delchev (@delchevn)

EclipseCon EU 2015

Agenda

• Overview• Highlights• Driving Forces• Technical Look• Future Look• Recap

Overview

What is it?Dirigible is an Integrated Development Environment as a Service (IDEaaS) for dynamic applications. It provides both development tools and runtime environment.Dirigible is part of the Eclipse Cloud Development TLP (ECD), along with Orion, Che, Flux and CloudFoundry Tools.

ECD?

What can you do with it?Everything you need for your next generation cloud application:• Database management• Scripting services• Shell commands• Flows & Jobs• Web content• Wiki documents• Lifecycle management• Monitoring logs

Highlights

Building BlocksThree major pillars:• Repository• IDE• Runtime

Web IDEDirigible has a full-fledged Web IDE running entirely in a browser, hence doesn’t require any installation and configuration steps. Focused on JavaScript support client- and server-side.

Orion EditorEmbedded Orion editor is the default one for JavaScript and HTML5/CSS authoring. Dirigible’s injected API is integrated in code-completion as well.

http://www.dirigible.io/blogs/2015/10/28/blogs_dirigible_orion_editor.html

Standard Eclipse PluginsBy using single source paradigm of Eclipse RAP, it is possible ~90% of the functionality to run server-less in the standalone Eclipse IDE. In this way you can still use your favorite tools e.g. JDT, JSDT, eGit. Focused mainly on the Java services development.

http://www.dirigible.io/help/eclipse-rcp.html

Deployment OptionsDirigible is entirely modularized leveraging OSGi by Eclipse Equinox. It provides a few default options of packaging - Trial, All-In-One, Runtime and RCP Update Site with platform specific builds for SAP HANA Cloud Platform and Apache Tomcat (standalone or CloudFoundry or OpenShift).

http://www.dirigible.io/help/tomcat.html

Off-line OptionsThere are three options for off-line mode development using Dirigible:• Self-contained executable jar• Local instance deployed on Java Web container

such as Apache Tomcat• Native plugins in Eclipse

http://download.eclipse.org/dirigible/

Bring-Your-Own-LanguageIn case you want to use a language different than the built-in ones - JavaScript and Java, you can easily implement a bridge extension for JVM languages like Groovy, jRuby, Jython, Scala, etc.

http://www.dirigible.io/blogs/2015/10/21/blogs_dirigible_impl_sql_plugin.html

Usage?So far internally at SAP and very few customers and partners as well as a learning tool at universities and schools

Driving Forces

The Ultimate GoalDirigible promotes so called In-System Programming development model. It avoids the side-effects of a simulated (local) environment, gives access to the live data, ensures all the dependencies and integrations are on place and at the end results to the shortest development turn-around time ever.

Dynamic Applications• Built for change• Consist of atomic components• Promote REST/Web 2.0 patterns• Built on micro-services architecture• Cover vertical scenarios• Provide end-to-end completeness• Extensible and adaptable

http://www.dirigible.io/help/dynamic_applications.html

Pull PrincipleIn fact, the absolute pull principle – we develop the toolkit in the way we ourselves need it and use it.

RAD Technics• Fast prototyping• Predefined templates• Wizards and specialized editors• Reusable artifacts• Enforce best-practices

Injected ServicesDirigible has a concepts of Injected Services and Execution Context. • Injected Services are predefined objects or

platform services wrappers, which are accessible directly during the script execution.

• The Context is a standard way to pass parameters throughout the process of separated modules.

It is possible to extend the set of Injected Services e.g. based on Cloud Platform in use.

http://www.dirigible.io/help/api.html

Content TransportAll the artifacts for a given project in Dirigible are stored in the underlying Repository component. It has an abstract File System like structure, hence it can be easily bundled and transported to another instance. There is a remote interface as well as CLI, which can be used for integration with the legacy transport management systems in your landscape.

Registry Content

New Instance

Zip archive via HTTPor Git clone

ScalingDirigible promotes architectural patterns proven in the cloud computing space. By wizards, templates and other RAD technics, it tries to enforce Web 2.0 paradigm and micro-services architecture. In case the application follows the best practices, it can be possible to scale horizontally afterwards on production landscape.

Technical Look

Create, Import or Clone a Project

Data Models

Inspect the Database state• Database Perspective has Database Viewer and

SQL Console for low level manipulations.

Generate a RESTful serviceOnce you have the data model in place, you can generate a CRUD service for it.

What is generated?Based on the database table definition, all server-side JavaScript artifacts are produced using predefined templates. After activation, you have a fully capable REST service exposing your data from the database layer as JSON content over HTTP.

Template

Metadata

Generator

REST service

JavaScript - Node.js or?Dirigible uses Mozilla Rhino.• Mature and stable framework• Supports CommonJS for dynamic loading of

modules• Built-in debugger with simple API• Possibility to invoke standard Java objects directly

Activate or Publish?• Activate copy the artifacts from the user’s

workspace to the sandbox for testing.• Publish copy the artifacts to the public registry

space.activate

publishWorkspac

e

Sandbox

Registry

Debugging the code?Dirigible provides a Debug perspective for the default language – JavaScript.

User InterfaceTo be complete for the entity management scenario, we added templates for pattern based user interface generation. Default technologies as of now:• Bootstrap + AngularJS• OpenUI5

Process declarations?In the context of Cloud Applications, usually it is required integrations with external 3-thd party services or just declarative description of consecutive calls. In Dirigible we semantically separated such services by adding: • Flows – simple context based routing in JSON • Jobs – asynchronous triggers with CRON

expressions in JSON

ExtensibilityThere is a generic extensibility concept in place. You can define extension points at the “packaged software” part, hence it is possible for others to introduce extensions to these extension points. There is no syntactical contract definition, it is bilateral.

SecurityThere is easy way to secure the endpoints of your services or user interfaces. You can choose from the set of predefined roles.It is possible to add more roles, if needed.

DocumentationTo make your application ready-to-use for your users it is not enough just to cover all the functional requirements. The documentation is considered as integral part of the application itself. The supported wiki formats are confluence, markdown, textile, tracwiki and twiki.

SCMGit is the SCM of choice for Dirigible. There is a simplified Git interaction support in the Web IDE. In case of more complex “merge” situations you can commit your changes in a new branch and continue with the fixes by using your favorite Git client or via the Terminal view.

Monitoring

Future Look

What is next?Some of the hot topics in discussion:• More widgets and enhancements in UI templates• Enhanced templates authoring• More integrations – no-SQL databases, messaging

busses• non-JVM Runtime implementations• More languages – groovy, ruby, python, DSLs, …• More form-based editors for major artifacts• WYSIWYG enhancements and binding support• Tutorials and courses• More samples and show-cases• Market place for reusable services• … your own deliveries

Worth to join?

?

Why to contribute? You have some Eclipse based plugins and you are

curious whether they can run in Dirigible environment? You are keen on using Web IDE based development, but

you miss important features? You are cloud platform provider and you want to see

your services as injected objects? You are in software business and want to boost the

productivity by developing new services in the cloud You are creator or a fan of a great programming language

and you want to integrate it as a scripting language? You are a teacher looking for an easy-to-use tool for your

courses … or you just know that to contribute to open source

projects is still considered cool by younger people

How to contribute?• Go to:https://github.com/eclipse/dirigible

clone, fork, make pull requests…

If in doubt, just contact us.

Recap

Key Takeaways• There is a project in Eclipse Foundation called

Dirigible• It provides development environment that can run

everywhere• It claims to provide everything you need as a

developer• It claims to provide fastest developer turn-around

time• It claims to promote the most powerful development

model• It enforces best-practices in your applications• It starts establishing ecosystem for business services

around it• It is built with care and love

References• http://www.dirigible.io• https://www.eclipse.org/dirigible/• https://github.com/eclipse/dirigible• http://www.dirigible.io/blogs.html• @dirigible_io• https://www.youtube.com/channel/UCY

nsiVQ0M9iQLqP5DXCLMBA/videos• http://scn.sap.com/docs/DOC-33139

 (Topic:IDEaaS)

Thank You!