2013.10.09 DevFest Lombardia 2013 @ Milano
How to put 100k lines of code in the (Google) cloud:
storms and rainbows
carlo....
2
What are the most common keywords for job ads?

3
IaaS (Servers, storage, etc)

Developers

PaaS (Architecture stacks,
cloud services)

Developers/
Sys-admins

SaaS (Cloud ...
PaaS boundaries
SaaS (Cloud applications)

Applications
Application platforms

PaaS (Stack applicativi,
cloud services)
Pr...
The PaaS service “cloud”
SaaS

PaaS

IaaS

and many more...

6
Who is using Google AppEngine and PaaS?

SaaS
Startups

Services in
marketplaces and
social network
eco-systems

IT depart...
GAE in private cloud
TCK (Test Compatibility Kit)

Google

CapeDwarf
Google AppEngine
API su JBoss AS7

JBoss

RedHat Open...
GAE architecture
Admin & accounting
Webapp

Datastore

Requests

Load balancers

Blobstore
Webapp
Webapp

Fetch API
Email
...
Development vs deployment environments

Deploy

Eclipse

IntelliJ Idea

GAE plugin (ufficiale)

GAE plugin

Develop

GAE S...
Pros and cons: a matter of design priorities

Open vs proprietary
Scalability
Standards & compatibility
Reliability
Platfo...
Portofino: project overview
Name: Portofino
Type: Enterprise Application Platform
License: LGPL
Maintainer: ManyDesigns sr...
Portofino: what is it for?
Quickly assemble applications using:

13
Portofino-based real-life applications
Recruiting and
bid management

Project management

CRM

14
Portofino: a web-based development platform
The developer can edit db metadata,
create and configure pages,
set security, ...
Porting P4 to GAE: main difficulties
Versions of core platforms and API:
Java 5 vs 6 vs 7
Servlet API 2.5 vs 3.0
Startup t...
Porting P4 to GAE: what we have changed (1)
Java 5 -> Java 6 (with GAE <= 1.7.7.1)
Oracle/Postgresql/MS SQLServer -> forge...
Porting P4 to GAE: what we have changed (2)
Wizard, admin, online configuration -> only in development
Startup time reduct...
GAE: what we have used
Java (and indirectly Groovy)
Cloud SQL: as a relational DB
User API: user info, login/logout links
...
GAE: what we haven’t used
Datastore: interesting using JPA or JDO but the migration from
Hibernate is expensive
Images: no...
Conclusions

21
References
Google AppEngine:
https://developers.google.com/appengine/
https://developers.google.com/appengine/docs/java/
C...
Thank you!
Carlo Bonamico

Paolo Predonzani

Solution Architect & Trainer
@carlobonamico
carlo.bonamico@nispro.it

MANYDES...
Upcoming SlideShare
Loading in...5
×

How to put 100k lines of code into the (Google) cloud: storms and rainbows

3,608

Published on

Many examples of cloud-based applications start from scratch... but is it possible to deploy an existing, complex application on the cloud in a reasonable time?
We present our experience in porting the Portofino open-source enterprise platform to Google App Engine, discussing difficulties and advantages.

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,608
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "How to put 100k lines of code into the (Google) cloud: storms and rainbows"

  1. 1. 2013.10.09 DevFest Lombardia 2013 @ Milano How to put 100k lines of code in the (Google) cloud: storms and rainbows carlo.bonamico@nispro.it paolo.predonzani@manydesigns.com
  2. 2. 2
  3. 3. What are the most common keywords for job ads? 3
  4. 4. IaaS (Servers, storage, etc) Developers PaaS (Architecture stacks, cloud services) Developers/ Sys-admins SaaS (Cloud applications) End-users SaaS vs PaaS vs IaaS 4
  5. 5. PaaS boundaries SaaS (Cloud applications) Applications Application platforms PaaS (Stack applicativi, cloud services) Pre-configured packages / architectural stacks IaaS (Server, storage, ecc) O.S., packages to be chosen and configured 5
  6. 6. The PaaS service “cloud” SaaS PaaS IaaS and many more... 6
  7. 7. Who is using Google AppEngine and PaaS? SaaS Startups Services in marketplaces and social network eco-systems IT departments Cost savings, scalability Integration (Gmail, Drive, etc) Private cloud 7
  8. 8. GAE in private cloud TCK (Test Compatibility Kit) Google CapeDwarf Google AppEngine API su JBoss AS7 JBoss RedHat OpenShift 8
  9. 9. GAE architecture Admin & accounting Webapp Datastore Requests Load balancers Blobstore Webapp Webapp Fetch API Email Search Webapp Images Capabilities Webapp ... Dynamic instances User API ... Services 9
  10. 10. Development vs deployment environments Deploy Eclipse IntelliJ Idea GAE plugin (ufficiale) GAE plugin Develop GAE SDK 10
  11. 11. Pros and cons: a matter of design priorities Open vs proprietary Scalability Standards & compatibility Reliability Platform independence 11
  12. 12. Portofino: project overview Name: Portofino Type: Enterprise Application Platform License: LGPL Maintainer: ManyDesigns srl Language: Java, Groovy, jsp Stable version: 4.0.10 Development version: 4.1.beta5 Community members: ~100 on English mailing list ~60 on Italian mailing list Total downloads: 35k 12
  13. 13. Portofino: what is it for? Quickly assemble applications using: 13
  14. 14. Portofino-based real-life applications Recruiting and bid management Project management CRM 14
  15. 15. Portofino: a web-based development platform The developer can edit db metadata, create and configure pages, set security, and edit Groovy, all via web An application wizard allows to connect to an existing database in 30 seconds... 15
  16. 16. Porting P4 to GAE: main difficulties Versions of core platforms and API: Java 5 vs 6 vs 7 Servlet API 2.5 vs 3.0 Startup time: Every request must complete in 60s The first request includes the instance startup delay Sandbox limits: No java.awt.* No threads Readonly file-system 16
  17. 17. Porting P4 to GAE: what we have changed (1) Java 5 -> Java 6 (with GAE <= 1.7.7.1) Oracle/Postgresql/MS SQLServer -> forget it! MySQL -> Google Cloud SQL Authentication -> User API Temporary files -> File Service Scheduling: Quartz (internal) -> cron (external) Charting: JFreeChart -> HTML 5/JS/SVG (client-side) Pdf: iText -> PDFJet Planned Planned ? Blobs: file -> Blobstore Planned 17
  18. 18. Porting P4 to GAE: what we have changed (2) Wizard, admin, online configuration -> only in development Startup time reduction! -> modularization optional features disabled Object in session -> Serializable Email: local queue -> direct using java.mail Minor differences between MySQL and Cloud SQL 18
  19. 19. GAE: what we have used Java (and indirectly Groovy) Cloud SQL: as a relational DB User API: user info, login/logout links File Service: temporary files URL Fetch API: transparent through java.net.* Blob Store: for attachments Planned Task Queue & backends: useful for pdf generations, batch, etc Memcached: cache for hibernate and HTML Planned Planned 19
  20. 20. GAE: what we haven’t used Datastore: interesting using JPA or JDO but the migration from Hibernate is expensive Images: not applicable but pdf support would be nice Python and other languages Capabilities API: service availability Channel API: “push” communications Multitenancy Search 20
  21. 21. Conclusions 21
  22. 22. References Google AppEngine: https://developers.google.com/appengine/ https://developers.google.com/appengine/docs/java/ CapeDwarf: http://www.jboss.org/capedwarf Portofino: http://www.manydesigns.com/ https://sourceforge.net/projects/portofino/ 22
  23. 23. Thank you! Carlo Bonamico Paolo Predonzani Solution Architect & Trainer @carlobonamico carlo.bonamico@nispro.it MANYDESIGNS srl founder @manydesigns paolo.predonzani@manydesigns.com 23

×