Upload
vlad-mihnea
View
169
Download
0
Embed Size (px)
DESCRIPTION
Grady - Grails Rapid Application Development for Ymens Bouncing off clouds - Rapid Development for Cloud Ready Applications
Citation preview
Bouncing off clouds - Rapid Development for Cloud Ready Applications
Vlad Mihnea R&D Manager
www.ymens.com
A random cat and some clouds
So what's the ruckus about?
3 Months
3 Apps
0 Buffer
Grady Cloud
GRADY = Grails Rapid Application Development for Ymens
But what is a cloud ready application?
SaaS
Online
Subscription based
Recurring Billing
Automated Updates
Configurable
Scalable Efficient
Internet
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
So what is our “simple” answer?
Bootstrap
Plugins
[Magic]
Groovy
Grails GRADY
Rapid Development framework, based on open source technologies seamlessly glued together
How do we isolate tenant data?
Separate DB Shared Schema
Separate Schema
Multi Tenant
Single DB Plugin
Multi Tenancy: Data Architecture
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
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
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 ☺
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 } }
demo.ymens.com
ymens.com/grady
www.ymens.com
It’s aliveeee!
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.
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
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:
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
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
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
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
Cloud Application Architecture
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