+ All Categories
Home > Internet > Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Date post: 04-Jul-2015
Category:
Upload: vlad-mihnea
View: 169 times
Download: 0 times
Share this document with a friend
Description:
Grady - Grails Rapid Application Development for Ymens Bouncing off clouds - Rapid Development for Cloud Ready Applications
21
Bouncing off clouds - Rapid Development for Cloud Ready Applications Vlad Mihnea R&D Manager www.ymens.com
Transcript
Page 1: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

   

Bouncing off clouds - Rapid Development for Cloud Ready Applications

Vlad Mihnea R&D Manager

www.ymens.com

Page 2: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

A random cat and some clouds

Page 3: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

So what's the ruckus about?

3 Months

3 Apps

0 Buffer

Grady Cloud

GRADY = Grails Rapid Application Development for Ymens

Page 4: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

But what is a cloud ready application?

SaaS

Online

Subscription based

Recurring Billing

Automated Updates

Configurable

Scalable Efficient

Internet

Page 5: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

And which are the typical cloud challenges?

Multi-tenancy

User Identity Management

Single Sign On

Access Management

Network Dependence

Integration & Interoperability

Data Mobility & Portability

Data Privacy & Security

Legacy Migration

Page 6: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

So what is our “simple” answer?

Bootstrap

Plugins

[Magic]

Groovy

Grails GRADY

Rapid Development framework, based on open source technologies seamlessly glued together

Page 7: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

How do we isolate tenant data?

Separate DB Shared Schema

Separate Schema

Multi Tenant

Single DB Plugin

Multi Tenancy: Data Architecture

Page 8: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

How do we manage identities?

Authentication Spring Security

Authorization Spring Security

Account Management Spring Security

Audit Logging Hibernate Envers

The 4 A’s of Cloud Identity

Page 9: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Much ado about nothing? We did it again!

4th of October: official launch date Smarter! Better! Faster!

Adopt Grady company wide Core to our Cloud Broker Platform

Foster Innovation through Rapid Prototyping No silver bullet. Beware of the tradeoffs!

3 Months

3 Apps

0 Buffer

Grady Cloud

Page 10: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

And we are…

þ  A young team with mixed backgrounds using an heterogeneous tech stack.

þ  An agile team who believes in an iterative, incremental and sustained pace of development.

þ  A self-organizing team oriented towards products, customers and innovation.

þ  A growing team.

And hiring ☺

Page 11: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Before I go @Audited @MultiTenant class Product { enum Type { SUBCRIPTION, USAGE, TRIAL } String name String description String category Float price Type type static mapping = { } static constraints = { name unique: 'tenantId', nullable: false, blank: false, maxSize: 50 category nullable: false, blank: false, maxSize: 50 price min: 0.0f, scale: 3 type inList: [Type.SUBCRIPTION, Type.USAGE, Type.TRIAL] description blank: true, widget: 'textarea' tenantId display: false } }

Page 12: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

demo.ymens.com

ymens.com/grady

www.ymens.com

It’s aliveeee!

Page 13: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Grails & Groovy

q  Grails: þ OSS, Groovy-based high-productivity framework inspired by Ruby on

Rails and following the "coding by convention" paradigm þ Grails applications can run in standard Java servlet containers.

q  Groovy: þ OOP language for the Java platform þ  Dynamic language with features similar to those of Python, Ruby, Perl,

and Smalltalk þ  Can be used as a scripting language for the Java Platform, is

dynamically compiled to Java Virtual Machine (JVM) bytecode, and interoperates with other Java code and libraries.

Page 14: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Plugins & Magic

q  Plugins þ  Java Melody => Monitoring þ  Console => Runtime DSL Debugging þ  jQuery => Provided Resources

q  [Magic] þ  New UI Widgets þ  REST Scaffolding þ  Enhanced Scaffolding Templates þ  Custom Validators & Constrains þ  SCIM Integration

Page 15: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Core Plugins

q  Spring Security Core: Secure applications using the powerful Spring Security library þ  Spring Security Configuration Info: Provides a basic UI to view the

security configuration þ  Spring Security LDAP: Support for LDAP and Active Directory

authentication þ  Spring Security OpenID: Support for OpenID authentication

q  Hibernate Envers: þ  Plugin to integrate grails with Hibernate Envers þ  Easy Entity Auditing. All that you have to do is annotate your persistent

class or some of its properties, that you want to audit, with @Audited q  Multi Tenant Single DB:

Page 16: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Twitter Bootstrap & Less

q  Bootstrap: þ  Developed by Twitter as a framework to encourage consistency across

internal tools þ  No.1 project on GitHub with 71,000+ stars and 26,000+ forks þ  The most popular HTML, CSS, and JS framework for developing

responsive, mobile first projects on the web q  Less:

þ  CSS pre-processor, meaning that it extends the CSS language, adding features that allow variables, mixins and functions

þ Make CSS that is more maintainable, themable and extendable

Page 17: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Multi Tenancy: Data Architecture

q  Separate DB: Each tenant has its own set of data that remains logically isolated from data that belongs to all other tenants. þ  Metadata associates each database with the correct tenant, and database security

prevents any tenant from accidentally or maliciously accessing other tenants' data. q  Separate Schema: House multiple tenants in the same database, with each

tenant having its own set of tables that are grouped into a schema created specifically for the tenant. þ  When a customer first subscribes to the service, the provisioning subsystem creates a

discrete set of tables for the tenant and associates it with the tenant's own schema. þ  A significant drawback of the separate-schema approach is that tenant data is harder

to restore in the event of a failure. If each tenant has its own database, restoring a single tenant's data means simply restoring the database from the most recent backup.

q  Shared Schema: The same database and the same set of tables to host multiple tenants' data. þ  A Tenant ID column associates every record with the appropriate tenant þ  The shared schema approach has the lowest hardware and backup costs, because it

allows you to serve the largest number of tenants per database server þ  However, it may incur additional development effort in the area of security, to ensure

that tenants can never access other tenants' data, even in the event of unexpected bugs or attacks

Page 18: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Tradeoffs: No Silver Bullet

q  Grails þ  Tight Coupling þ  Anti-patterns þ  (Some) Immature Plugins

q  Twitter Bootstrap þ  A dark future where the entire web looks like the Bootstrap example

page þ  Heavy-handed, Prescriptive

Page 19: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Grady: Initial Goals

Requirement Description

Rapid Prototyping Quickly generate/implement a vertical prototype of the application

Scaffolding Generate CRUD code up yo UI Layer

Dynamic Form Generation Generate/Render forms based on data model

Configuration Based Validation Validate input in forms based on configuration and data model constraints

Support for Dictionaries Sets of predefined values to be reused across the application

Object Relational Mapping Map domain model to underlying persistence based on configuration/convention

Support for Workflows Support for wizards and basic support for workflows

User Management Basic user management

Access Management Basic authorization

Authentication HTTP basic access authentication and Digest authentication

Reporting Built-in reporting capabilities

Flexible Data Model Flexible schema or schemaless persistence

Page 20: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

Cloud Application Architecture

Page 21: Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015

So what's the ruckus about?

“Smarter. Faster. Better. These are today's words when talking about business. And, about development too. Nowadays, we’re all in the cloud and some of us have already faced a simple question without a simple

answer: how to build better apps faster? There are a multitude of challenges arising when trying to achieve this ambitious goal while

maintaining a productive pace for delivery and innovating at the same time. How do I isolate tenant data, how do I manage identities across federated clouds, how can I migrate legacy apps, how do I ensure single sign on in heterogeneous cloud environments (of course everything Smarter. Faster.

Better.) We now have a simple answer to some of these technical questions: our own rapid development framework, based on open source

technologies seamlessly glued together, of course, for cloud-ready applications - because this is what we do. We're inviting you to a practical discussion on how the R&D department can play a major role in delivering

every business' goal: time to market. Smarter. Better. Faster.”

Vlad, R&D Monica, Marketing


Recommended