193 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			193 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| =====================================
 | |
| Ungleich Hosting WebApp Specification
 | |
| =====================================
 | |
| 
 | |
| Author: Raul Ascencio
 | |
| Contact: raul.ascencio@ungleich.ch
 | |
| Version: 0.1
 | |
| Date: 2015-06-11
 | |
| Copyright © ungleich GmbH 2017
 | |
| 
 | |
| -----
 | |
| Terms
 | |
| -----
 | |
| 
 | |
| User
 | |
|     The end-user, person/entity who books/use one or more vm's.
 | |
| 
 | |
| Ungleich
 | |
|     The company agents/users the creators and admins ofr the ungleich hosting
 | |
|     webapp.
 | |
| 
 | |
| --------
 | |
| Overview
 | |
| --------
 | |
| 
 | |
| Ungleich hosting is a Plataform as  a Service (PaaS) for multiple application
 | |
| stack, offers multiple languages (ruby, python, javascript {node,io}.js),
 | |
| application servers and databases.
 | |
| 
 | |
| Ungleich hosting let the user focus on being more productive, without having
 | |
| to worry about the complexities of maintaining a production enviroment.
 | |
| 
 | |
| **This spec is not complete**, in fact it hasn't even be reviewed once, it
 | |
| probably needs a couple of revisions to be accepted.
 | |
| 
 | |
| What the ungleich plataform offers:
 | |
| 
 | |
| - Stack management.
 | |
| - Monitoring and alerting.
 | |
| - High availability.
 | |
| - Automatic aplication deployment.
 | |
| - Ready to use stacks.
 | |
| - Automated Management.
 | |
| - User Access Management [?].
 | |
| - Production Ready Services (Postgresql, Memcached, Redis...).
 | |
| - Backups and redundancy.
 | |
| - Full management and support for stack-related issues [?]
 | |
| 
 | |
| Avilable stacks:
 | |
| 
 | |
| **Ruby Stack**
 | |
| 
 | |
| - Load balancers:
 | |
|   - HAProxy
 | |
| - Frameworks:
 | |
|   - Ruby on Rails
 | |
|   - ...
 | |
| - Web Servers:
 | |
|   - NGINX
 | |
|   - ...
 | |
| - Application Servers:
 | |
|   - Unicorn
 | |
|   - Passenger
 | |
|   - Puma [?]
 | |
| - Databases:
 | |
|   - Postgresql
 | |
|   - Mysql [?]
 | |
|   - Mongodb [?]
 | |
| - Caching:
 | |
|   - Memcached [?]
 | |
|   - Redis (people often use it for other things and it's nice to have) [?]
 | |
| - Misc:
 | |
|   - Preinstalled gems (sidekiq/resque, )
 | |
| 
 | |
| **Python Stack**
 | |
| 
 | |
| - << Inserts Ruby Stack and replace:
 | |
| - Application Servers:
 | |
|   - Gunicorn
 | |
|   - uWSGI
 | |
| - Frameworks:
 | |
|   - Django
 | |
|   - ...
 | |
| - Misc:
 | |
|   - Celery/Gearman
 | |
|   - ...
 | |
| 
 | |
| **Node Stack**
 | |
| 
 | |
| - << Inserts Ruby Stack and replace:
 | |
| - Frameworks:
 | |
|   - Express
 | |
|   - Meteor
 | |
|   - Hoodie
 | |
| - Databases:
 | |
|   - ...
 | |
|   - Couchdb (Hoodie)
 | |
| - Misc:
 | |
|   - npm
 | |
|   - pm2
 | |
|   - browserify/requirejs/webpack
 | |
|   - ...
 | |
| 
 | |
| Brief summary of how it works:
 | |
| 
 | |
| 1. The *User* goes to an Ungleich Hosting website to register.
 | |
| 2. Once logged in, the *User* get asked for his/her billing information to start
 | |
|    booking machines.
 | |
| 3. After the *User* inserts a 'valid' credit card he books a VM.
 | |
| 4. When a VM is booked the *User* is subscribed to a 'plan' that it's related
 | |
|    with the VM specs.
 | |
|    a. User can be asked for a public SSH key, this key can be used to access
 | |
|    to the server.
 | |
| 5. The subscription gets confirmed, *Ugleich* deploy the requested infrastructure
 | |
|    and stack.
 | |
| 6. *User* is notified that the new VM is ready to use.
 | |
| 7. The *User* access the new VM and deploys the Application.
 | |
| 
 | |
| -----------------------
 | |
| Ungleich Hosting - Goal
 | |
| -----------------------
 | |
| 
 | |
|     As ungleich, we want to offer "Application Hosting" - pre-configured VMs plus
 | |
|     support for the technologies running on them, the VMs should be "clickable"
 | |
|     as in self service mid term.
 | |
| 
 | |
| --------------------------
 | |
| Ungleich Hosting - Phase 0
 | |
| --------------------------
 | |
| 
 | |
| This phase will deliver a fully functional webpage for railshosting, without the
 | |
| capabilities of the 'ungleich hosting app', except from selecting an stack
 | |
| ordering it by email and the user being subscribed to a plan (billing).
 | |
| This phase will
 | |
| 
 | |
| Where this phase come from:
 | |
| 
 | |
|     + ...for the moment, it is enough if we generate a mail for every order
 | |
|     + get rails-hosting.ch running so that somebody can order a VM including
 | |
|       payment
 | |
| 
 | |
| *********
 | |
| Non Goals
 | |
| *********
 | |
| 
 | |
| + The VMs should be "clickable" as in self service.
 | |
| + End-User interface to manage their VMs.
 | |
| 
 | |
| ************
 | |
| Requirements
 | |
| ************
 | |
| 
 | |
| #. Feature
 | |
|    Description
 | |
| 
 | |
| 1. *Ungleich* provides a service overview page
 | |
| 2. *Ungleich* provides a sign up page for users who want to
 | |
|    try the private beta of the service
 | |
| 3. *Ungleich* let *Users* upload their public SSHs keys
 | |
| 4. *Users* can subscribe to their choosen hosting plan.
 | |
| 5. Notify *Users* when their VMs are ready.
 | |
| 6. *Users* can access to their VMs using the uploaded SSHs keys.
 | |
| 7. *Users* can view their billing history.
 | |
| 8. *Users* are capable of canceling their plans.
 | |
| 9. *Users* are notified every time a new invoice is sucefully charged.
 | |
| 10. *Users* are notified every time their invoices fail to charge.
 | |
| 11. *Users* can add credit cards to their accounts.
 | |
| 12. *Users* can see a detail of every invoice.
 | |
| 13. *Users* can create multiple VMs.
 | |
| 14. *Users* can choose what SSHs keys will use for every VM.
 | |
| 15. *Users* can see the recent history of access to their VMs [?]
 | |
| 16. *Users* can edit their profiles.
 | |
| 17. *Users* can submit tickets to *Ungleich*
 | |
| 18. *Users* can configure DNS settings.
 | |
| 19. *Ungleich* can see the list of *Users*.
 | |
| 20. *Ungleich* can browse the VMs of all *Users*.
 | |
| 21. *Ungleich* is notified everytime an invoice fail to charge.
 | |
| 22. *Ungleich* provide help pages for every section of the site.
 | |
| 
 | |
| *******
 | |
| Details
 | |
| *******
 | |
| 
 | |
| ...
 | |
| 
 | |
| --------------------------
 | |
| Ungleich Hosting - Phase 1
 | |
| --------------------------
 | |
| 
 | |
| This phase will deliver the foundations for most of the ungleich hosting app capabilities.
 | |
| 
 | |
| 
 | |
|     for the moment, it is enough if we generate a mail for every order
 |