SlideShare a Scribd company logo
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 
Internet 
Subscription 
based 
Automated 
Updates 
Recurring 
Billing 
Configurable 
Efficient Scalable
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? 
Plugins 
Bootstrap 
[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 
} 
}
It’s aliveeee! 
demo.ymens.com 
ymens.com/grady 
www.ymens.com
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

More Related Content

PDF
Spring Days NYC - A pattern language for microservices
PDF
A pattern language for microservices (melbourne)
PDF
Kong Summit 2018 - Microservices: decomposing applications for testability an...
PDF
#JaxLondon keynote: Developing applications with a microservice architecture
PDF
An overview of the Eventuate Platform
PDF
Building microservices with Scala, functional domain models and Spring Boot (...
PDF
A pattern language for microservices (#gluecon #gluecon2016)
PDF
Developing microservices with aggregates (SpringOne platform, #s1p)
Spring Days NYC - A pattern language for microservices
A pattern language for microservices (melbourne)
Kong Summit 2018 - Microservices: decomposing applications for testability an...
#JaxLondon keynote: Developing applications with a microservice architecture
An overview of the Eventuate Platform
Building microservices with Scala, functional domain models and Spring Boot (...
A pattern language for microservices (#gluecon #gluecon2016)
Developing microservices with aggregates (SpringOne platform, #s1p)

What's hot (20)

PDF
OReilly SACON2018 - Events on the outside, on the inside, and at the core
PDF
Futures and Rx Observables: powerful abstractions for consuming web services ...
PDF
Developing microservices with aggregates (devnexus2017)
PDF
Oracle Code One: Events and commands: developing asynchronous microservices
PDF
Decompose that WAR? A pattern language for microservices (@QCON @QCONSP)
PDF
Building microservices with Scala, functional domain models and Spring Boot
PDF
Microservices pattern language (microxchg microxchg2016)
PDF
Microservices in Java and Scala (sfscala)
PDF
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
PDF
Events on the outside, on the inside and at the core (jfokus jfokus2016)
PDF
A Pattern Language for Microservices
PDF
Microservices + Events + Docker = A Perfect Trio (dockercon)
PDF
Developing event-driven microservices with event sourcing and CQRS (london Ja...
PDF
Events to the rescue: solving distributed data problems in a microservice arc...
PDF
Developing microservices with aggregates (melbourne)
PDF
Solving distributed data management problems in a microservice architecture (...
PDF
There is no such thing as a microservice! (oracle code nyc)
PDF
YOW2018 - Events and Commands: Developing Asynchronous Microservices
PDF
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
PDF
Microservices and Redis #redisconf Keynote
OReilly SACON2018 - Events on the outside, on the inside, and at the core
Futures and Rx Observables: powerful abstractions for consuming web services ...
Developing microservices with aggregates (devnexus2017)
Oracle Code One: Events and commands: developing asynchronous microservices
Decompose that WAR? A pattern language for microservices (@QCON @QCONSP)
Building microservices with Scala, functional domain models and Spring Boot
Microservices pattern language (microxchg microxchg2016)
Microservices in Java and Scala (sfscala)
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Events on the outside, on the inside and at the core (jfokus jfokus2016)
A Pattern Language for Microservices
Microservices + Events + Docker = A Perfect Trio (dockercon)
Developing event-driven microservices with event sourcing and CQRS (london Ja...
Events to the rescue: solving distributed data problems in a microservice arc...
Developing microservices with aggregates (melbourne)
Solving distributed data management problems in a microservice architecture (...
There is no such thing as a microservice! (oracle code nyc)
YOW2018 - Events and Commands: Developing Asynchronous Microservices
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)
Microservices and Redis #redisconf Keynote
Ad

Similar to Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015 (20)

PPT
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
PDF
Cloudy in Indonesia: Java and Cloud
PDF
PaaS with Java
PDF
Cloudy Ajax 08 10
PDF
Spring into the Cloud - JDC2012 Cairo, Egypt
PDF
Spring Into the Cloud
PPTX
Techcello at a glance
PDF
Migrating to Public Cloud
PPTX
Leapfrogging with legacy
PPT
Azure Serrvices Platform Pro Dev Partners
PPTX
Azure Application Architecture Guide
PDF
Cloud Architecture Tutorial - Platform Component Architecture (2of3)
KEY
Spring in the Cloud - using Spring with Cloud Foundry
PDF
Cloud Best Practices
PPTX
Latest trends in information technology
PPTX
V mware evolutionary cloud 12 2012
PDF
Cloud Computing from an Entrpreneur's Viewpoint
PPT
ArcReady - Architecting Modern Distributed Applications
PPT
Technology Overview
PPT
S+S Architecture Overview
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
Cloudy in Indonesia: Java and Cloud
PaaS with Java
Cloudy Ajax 08 10
Spring into the Cloud - JDC2012 Cairo, Egypt
Spring Into the Cloud
Techcello at a glance
Migrating to Public Cloud
Leapfrogging with legacy
Azure Serrvices Platform Pro Dev Partners
Azure Application Architecture Guide
Cloud Architecture Tutorial - Platform Component Architecture (2of3)
Spring in the Cloud - using Spring with Cloud Foundry
Cloud Best Practices
Latest trends in information technology
V mware evolutionary cloud 12 2012
Cloud Computing from an Entrpreneur's Viewpoint
ArcReady - Architecting Modern Distributed Applications
Technology Overview
S+S Architecture Overview
Ad

Recently uploaded (20)

PDF
Smart Home Technology for Health Monitoring (www.kiu.ac.ug)
PPT
250152213-Excitation-SystemWERRT (1).ppt
PPT
415456121-Jiwratrwecdtwfdsfwgdwedvwe dbwsdjsadca-EVN.ppt
PDF
mera desh ae watn.(a source of motivation and patriotism to the youth of the ...
PDF
SASE Traffic Flow - ZTNA Connector-1.pdf
PPTX
newyork.pptxirantrafgshenepalchinachinane
PPTX
artificial intelligence overview of it and more
PDF
SlidesGDGoCxRAIS about Google Dialogflow and NotebookLM.pdf
PDF
The Ikigai Template _ Recalibrate How You Spend Your Time.pdf
PPTX
1402_iCSC_-_RESTful_Web_APIs_--_Josef_Hammer.pptx
PPTX
SAP Ariba Sourcing PPT for learning material
PPT
isotopes_sddsadsaadasdasdasdasdsa1213.ppt
PPTX
Mathew Digital SEO Checklist Guidlines 2025
PDF
The New Creative Director: How AI Tools for Social Media Content Creation Are...
PDF
Exploring VPS Hosting Trends for SMBs in 2025
PPTX
Funds Management Learning Material for Beg
PPTX
Layers_of_the_Earth_Grade7.pptx class by
PDF
Slides PDF: The World Game (s) Eco Economic Epochs.pdf
PPTX
artificialintelligenceai1-copy-210604123353.pptx
PPT
Ethics in Information System - Management Information System
Smart Home Technology for Health Monitoring (www.kiu.ac.ug)
250152213-Excitation-SystemWERRT (1).ppt
415456121-Jiwratrwecdtwfdsfwgdwedvwe dbwsdjsadca-EVN.ppt
mera desh ae watn.(a source of motivation and patriotism to the youth of the ...
SASE Traffic Flow - ZTNA Connector-1.pdf
newyork.pptxirantrafgshenepalchinachinane
artificial intelligence overview of it and more
SlidesGDGoCxRAIS about Google Dialogflow and NotebookLM.pdf
The Ikigai Template _ Recalibrate How You Spend Your Time.pdf
1402_iCSC_-_RESTful_Web_APIs_--_Josef_Hammer.pptx
SAP Ariba Sourcing PPT for learning material
isotopes_sddsadsaadasdasdasdasdsa1213.ppt
Mathew Digital SEO Checklist Guidlines 2025
The New Creative Director: How AI Tools for Social Media Content Creation Are...
Exploring VPS Hosting Trends for SMBs in 2025
Funds Management Learning Material for Beg
Layers_of_the_Earth_Grade7.pptx class by
Slides PDF: The World Game (s) Eco Economic Epochs.pdf
artificialintelligenceai1-copy-210604123353.pptx
Ethics in Information System - Management Information System

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

  • 1. Bouncing off clouds - Rapid Development for Cloud Ready Applications Vlad Mihnea R&D Manager www.ymens.com
  • 2. A random cat and some clouds
  • 3. So what's the ruckus about? 3 Months 3 Apps 0 Buffer Grady Cloud GRADY = Grails Rapid Application Development for Ymens
  • 4. But what is a cloud ready application? SaaS Online Internet Subscription based Automated Updates Recurring Billing Configurable Efficient Scalable
  • 5. 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
  • 6. So what is our “simple” answer? Plugins Bootstrap [Magic] Groovy Grails GRADY Rapid Development framework, based on open source technologies seamlessly glued together
  • 7. How do we isolate tenant data? Separate DB Shared Schema Separate Schema Multi Tenant Single DB Plugin Multi Tenancy: Data Architecture
  • 8. 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
  • 9. 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
  • 10. 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 ☺
  • 11. 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 } }
  • 12. It’s aliveeee! demo.ymens.com ymens.com/grady www.ymens.com
  • 13. 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.
  • 14. 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
  • 15. 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:
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 21. 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