Merge branch 'release/1.4.1'
This commit is contained in:
		
				commit
				
					
						9f3ee8a7c8
					
				
			
		
					 3 changed files with 199 additions and 3 deletions
				
			
		
							
								
								
									
										193
									
								
								docs/hosting_app_spec.rst.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								docs/hosting_app_spec.rst.txt
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,193 @@
 | 
			
		|||
=====================================
 | 
			
		||||
Ungleich Hosting WebApp Specification
 | 
			
		||||
=====================================
 | 
			
		||||
 | 
			
		||||
Author: Raul Ascencio
 | 
			
		||||
Contact: raul.ascencio@ungleich.ch
 | 
			
		||||
Version: 0.1
 | 
			
		||||
Date: 2015-06-11
 | 
			
		||||
Copyright © ungleich GmbH 2015
 | 
			
		||||
 | 
			
		||||
-----
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -2,7 +2,11 @@
 | 
			
		|||
<!doctype html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <title>{% page_attribute "page_title" %}</title>
 | 
			
		||||
    <title>
 | 
			
		||||
      {% block title %}
 | 
			
		||||
      {% page_attribute "page_title" %}
 | 
			
		||||
      {% endblock %}
 | 
			
		||||
    </title>
 | 
			
		||||
    {% addtoblock "external-css" %}
 | 
			
		||||
    {% bootstrap_css %}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,10 @@
 | 
			
		|||
{% extends "djangocms_blog/base.html" %}
 | 
			
		||||
{% load i18n thumbnail cms_tags %}
 | 
			
		||||
{% load url from future %}
 | 
			
		||||
 | 
			
		||||
{% block meta_description %}{{ post.meta_description }}{% endblock meta_description %}
 | 
			
		||||
{% block meta_keywords %}{{ post.meta_keywords }}{% endblock meta_keywords %}
 | 
			
		||||
{% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
 | 
			
		||||
{% block title %}{{ post.get_title }}{% endblock %}
 | 
			
		||||
{% block title %}{% page_attribute "page_title" %} - {{ post.get_title }}{% endblock %}
 | 
			
		||||
<!-- page header -->
 | 
			
		||||
{% block base_header %}
 | 
			
		||||
{% include "djangocms_blog/_header_post_detail.html"  %}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue