Lifthub (#rpscala 26)

1,666 views

Published on

Lifthub is a Lift Platform as a Service. It's an experimental project and in active development.

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

  • Be the first to like this

No Downloads
Views
Total views
1,666
On SlideShare
0
From Embeds
0
Number of Embeds
222
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lifthub (#rpscala 26)

  1. 1. Lifthub Lift Platform as a Service <ul><li>Kazuo KASHIMA </li></ul><ul><ul><li>@k4200 (English) </li></ul></ul><ul><ul><li>@kaigaiengineer (Japanese) </li></ul></ul><ul><ul><li>d.hatena.ne.jp/k4200 </li></ul></ul>
  2. 2. Table of Contents <ul><li>Introduction </li></ul><ul><li>Demo </li></ul><ul><li>Architecture </li></ul><ul><li>Program </li></ul><ul><li>Future </li></ul>
  3. 3. INTRODUCTION
  4. 4. What is Lifthub? <ul><li>In short, Lift version of Heroku. </li></ul><ul><ul><li>http://heroku.com/ </li></ul></ul><ul><li>Users can host Lift based apps. </li></ul><ul><ul><li>No complicated settings </li></ul></ul><ul><ul><li>Access via web and git </li></ul></ul><ul><li>Experimental project, at this moment. </li></ul><ul><li>http://www.lifthub.net/ </li></ul>
  5. 5. What is Lift? <ul><li>ggrks </li></ul>
  6. 6. How to use Lifthub? <ul><li>Sign up and register your SSH public key. </li></ul><ul><li>Create a project. </li></ul><ul><ul><li>Choose an application type (Basic, MVC, etc.) </li></ul></ul><ul><ul><li>Choose a database (Currently, only MySQL) </li></ul></ul><ul><li>Development </li></ul><ul><ul><li>git pull </li></ul></ul><ul><ul><li>git push </li></ul></ul><ul><li>Deploy the app using the UI. </li></ul><ul><li>Run & have fun! </li></ul>
  7. 7. DEMO
  8. 8. ARCHITECTURE
  9. 9. Overview nginx MySQL Server Manager : : User applications Management application jetty Lifthub Port 80 Port 9000 Port 9001 Port 9xxx Port 8080 deploy start/stop requests create jetty a.war jetty b.war jetty x.war
  10. 10. Reverse proxy <ul><li>Each user app runs </li></ul><ul><ul><li>on a different port </li></ul></ul><ul><ul><li>in a different instance of jetty </li></ul></ul><ul><ul><li>eg. appfoo -> 9000, appbar -> 9001 </li></ul></ul><ul><li>*.lifthub.net -> 111.171.209.16 </li></ul><ul><li>Nginx works as a reverse proxy. </li></ul><ul><ul><li>http://appfoo.lifthub.net/ -> localhost:9000 </li></ul></ul><ul><ul><li>http://appbar.lifthub.net/ -> localhost:9001 </li></ul></ul>
  11. 11. Development cycle jetty MySQL Lifthub gitosis sbt proj-a ssh key Register ssh key Register Create project proj-a git pull Create Create git push JGit Build & deploy a.war sbt package etc.
  12. 12. PROGRAM
  13. 13. Components <ul><li>Web UI </li></ul><ul><ul><li>Lift native features </li></ul></ul><ul><ul><ul><li>MegaProtoUser </li></ul></ul></ul><ul><ul><ul><li>CRUDify </li></ul></ul></ul><ul><ul><li>External libraries </li></ul></ul><ul><ul><ul><li>JGit </li></ul></ul></ul><ul><ul><ul><li>Embedded Jetty </li></ul></ul></ul><ul><li>Server Manager </li></ul><ul><ul><li>Akka Remote Actor </li></ul></ul><ul><ul><li>Calls “sbt” command </li></ul></ul>
  14. 14. Tips <ul><li>sbt sub projects </li></ul><ul><ul><li>http://d.hatena.ne.jp/k4200/20110211/1297416108 </li></ul></ul><ul><li>Akka Remote Actors </li></ul>
  15. 15. Other programs and libraries <ul><li>gitosis </li></ul><ul><ul><li>Git repository hosting program </li></ul></ul><ul><ul><li>http://eagain.net/gitweb/?p=gitosis.git </li></ul></ul><ul><li>JGit </li></ul><ul><ul><li>Java implementation of git </li></ul></ul><ul><ul><li>http://www.jgit.org/ </li></ul></ul>
  16. 16. FUTURE
  17. 17. Schedule Date Plan ~ Feb Development Mid Mar Presentation for users of the cloud service that Lifthub uses Apr Closed beta From May? Open??
  18. 18. TODO <ul><li>Limit sign up (requires invitation) </li></ul><ul><ul><li>Extend MegaProtoUser -> Done </li></ul></ul><ul><li>Security </li></ul><ul><ul><li>Isolate user apps (chroot?) </li></ul></ul><ul><li>Dynamic resource allocation </li></ul><ul><ul><li>Memory (requres restart of jetty) </li></ul></ul><ul><ul><li>Disk (??) </li></ul></ul><ul><ul><li>CPU </li></ul></ul>

×