WSO2 Hackathon the hardest hackathon ever
I think this was my 7 hackathon I have participant this includes the stuff I organized as well. Aim was to make an application or a framework or etc using cloud concepts. Developing application using cloud concepts is a bit hard task let alone every thing else which comprised of talks, dramas, songs, games, DJ. You can readme in detail about the event from readme’s live blog http://readme.lk/liveblog-wso2-hackathon-colombo-2014/. Let’s say WSO2 knows to organize a partyrised hackathon they sure raised the bar for every other hackathon.
We devloped “Listop” and We Won !!!
Listop which we made for WSO2 hackathon. It is a operationalised list that is extensible using apps. All users gets there own docker container which sandboxes app execution for each user.
Listop is awesome #tweet/do - This will tweet “Listop is awesome” from you account
I am wrong #youtube/search - Listop search’s you for “I am wrong” and shows them as a sublist
Lispop enables you to do massive things using simple natural workflow. By Pasindu De Silva
Following is the system architecture
If you are wondering what are these funny names they are inspired by Game Of Thrones.
Jamie - is the frontend which has the marketplace for apps where users can install and workflow UI where you put your todo list.
When the user account is created what we first do is Create a A dns record for ‘username.listop.io’ to point the relevant ec2 instance. The advantage of this is that we can directly connect to the users ec2 instance without having to go through a proxy. It would have been more easier if dns also resolve the port also but it was not build to those things.
Baelish is our provisioning service which spins up docker containers, bind the necessary ports, username and userdata. After the docker container for that user is created it saves the information in a lookup.json file ( at the moment). Are docker base image is a google/nodejs-runtime.
Health checker (Kingsguard) - This services checks whether all the docker containers are up and running. Normal way of health checking would be to ping a given url and check whether it exists but we are using docker’s api to check which container are up.If the docker container is not running we call are provisioning service (Baelish) which either restart that docker container if it stopped or it will spin up a new instance for the user.
When users use listop.io?
- Listop.io backend are in the docker containers using ajax we call those. All request that resolves to a ec2 instance gose through are forward proxy ( Varys ) which looks at the request header which has the relevant users username and finds the port and then sends the request. Varys also authenticate incoming request.