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