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>
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>{% page_attribute "page_title" %}</title>
|
<title>
|
||||||
|
{% block title %}
|
||||||
|
{% page_attribute "page_title" %}
|
||||||
|
{% endblock %}
|
||||||
|
</title>
|
||||||
{% addtoblock "external-css" %}
|
{% addtoblock "external-css" %}
|
||||||
{% bootstrap_css %}
|
{% bootstrap_css %}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
{% extends "djangocms_blog/base.html" %}
|
{% extends "djangocms_blog/base.html" %}
|
||||||
{% load i18n thumbnail cms_tags %}
|
{% load i18n thumbnail cms_tags %}
|
||||||
{% load url from future %}
|
{% load url from future %}
|
||||||
|
|
||||||
{% block meta_description %}{{ post.meta_description }}{% endblock meta_description %}
|
{% block meta_description %}{{ post.meta_description }}{% endblock meta_description %}
|
||||||
{% block meta_keywords %}{{ post.meta_keywords }}{% endblock meta_keywords %}
|
{% 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 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 -->
|
<!-- page header -->
|
||||||
{% block base_header %}
|
{% block base_header %}
|
||||||
{% include "djangocms_blog/_header_post_detail.html" %}
|
{% include "djangocms_blog/_header_post_detail.html" %}
|
||||||
|
|
Loading…
Reference in a new issue