With Open stack maturing, I was wondering why there is no ‘Stack’ for Hobbyists? Imagine that you want to host a Hobby Internet Application, then to make it into a practical Web Application, there is a whole stack of Components that need to be built and the ‘Application’ by itself isn’t going to serve the purpose sitting in a local machine. A decade ago hobbyists has to be satisfied with Static Website ‘Space’ providers to host Static Web Sites and these too would get laced with advertisements. Building a Web Application would need spending some dough for sure. But times have changed and now and options have multiplied with Computing and networking becoming relatively lower in cost and value shifting from mere Hardware/Software to Support of Open-Inter-Cloud Integrations. I have been looking around to build a full stack ‘Hobby’ applications with the following criteria:
‘Free’ Service for Unlimited Time Period
‘Lock-In’ free Service
Open Visibility of Service Rendered
As you can see the emphasis is definitely on ‘Free’ since this is for ‘Hobby’ Applications and unlike ‘Enterprise’ Applications these do not need committed, SLAs, Extreme Performance and Unlimited Scaling Capabilities, Large Teams and Extreme Security. If you are looking for a Stack for ‘Enterprise’ then this post will not be relevant for you.
Below is a quick summary of the different components I could gather where the Hobby Criteria is definitely possible to be met in the current Public Cloud Ecosystem
This is the obvious first step. Typically this would be the Laptop/Desktop in which you write the code. But Now there are both Public and Private Repository Managers that allow you to host your code and also Manage the entire build Cycle with the ecosystem supporting Team Management, Code Management (Branching,Forking, Pull Request…), Requirement Gathering, Document Wiki Management, Issue/Bug Management, Build Management (SCRUM/Agile)etc…Typically these would be handled by DevOps Solutions in the Enterprise Arena but for Hobby Developers Github is probably the obvious first start. Github provides unlimited ‘Public’ Repositories but no private repository. If ‘Private’ Space is needed then Bitbucket, GitLab, Visual studio Online and such sites are available. Gitlab unlike Bitbucket or Github has a primitive Milestone Management Capabilities which would be useful to set and track targets/milestones. Visual Studio Online stands out with its mature SCRUM/Agile built right into the website.
For Those interested in Requirements Management, ReqView stands out alone and is stuck with the style of documentation that was relevant for the waterfall styled application development. This IMO is still a space where a solid player is yet to appear.
Once Built the App needs to be hosted and my current favourite is Heroku from Salesforce since my prime target is NodeJS Hosting. There are others like Modulus from GoDaddy and OpenShift from Redhat. For .Net Apps Azure’s Web App Hosting is probably the best but sadly they (M$) only allow Custom Domain on Paid Web Apps
Ideally for survivability the Web Apps should be hosted in multiple locations and traffic load balanced using the Access Network.
Gone are the days when we would commit and then FTP into the Web server. Now Automation at multiple levels are available to perform the Build and then move the code to the Web App Hosting Service. Typically Web App Service Providers have Pull Mechanisms but vendors like Travis help in performing Automated Tests before upload directly using GIT. Gitlab has its own internal CI Engine…So You have plenty of options here
Webb You got the code and some means to host it but how do you bring the user to the application. Typically Hosters would give URLs which have a shared Domain name. You can get your own Domain for free from dot.tk or freenom.com but these domains might get blacklisted by browsers as these are used extensively by Spammers and Hackers. I Prefer to get a paid domain to be safe.
Next Comes the TLS/SSL and Network Load Balancing. Enterprises have been using Global Load Balancers from the likes of Akamai but these are not ‘Free’. This is where my current favourite is CloudFlare and NS1. Both support round Robin DNS Load Balancing where you could host in multiple cloud services and load balance between them to improve availability of your app. CloudFlare does a Passive Load Balancing but NS1 Claims to perform ‘Active’ for up to 2 Sites in the ‘Free’ edition.
With Web Apps being spread across multiple providers and ‘Access Network’ not able to provide ‘Sticky’ Binding, we need to look for external Session and Cache Stores. My Current Favourite for this is RedisLab. Initially I was sceptical of the delays that it might cause but my testing reveal very nominal delays. Now RedisLab provides Redis Service on a Cloud Provider on your choice for single tiny shared instance for free. But If you want further survivability, It is Possible with Instances spread across multiple cloud providers but it will cost some dough.
The Web App Providers also provide local Redis Services which are faster but cannot be used for Multi-Cloud Web Apps when I tried.
With Web Apps becoming interactive there is a need to shuffle data between the Browser and and Server. Web Sockets are now the the solutions when the server needs to ‘Push’ data to Clients. These could also be used for Browsers sharing data between themselves using Rooms. But this gets broken when the websites are across multiple Clouds…The Solution is to use Redis to Mediate. I’ll Detail in a later post on how that works.
Like RedisLab now MongoDB provides small instances on Cloud of your choice via mlab. Again Multi-Cloud Resilience is possible but at a Price
Haven’t seen similar services for other databases like MySQL, SQl server etc that expose the database for consumption from any cloud. All the providers I tried lock the usage to their own Web App Space
Now you have a full stack application loaded and running…How do you Load Test it? Hire 200 Testers? We got a Site for that now …Loader.io. They Perform Low intensity loads for free.
Ultimately Failures can happen but how do you know when it happens….This is where NewRelic comes up and holds your back. They Provide Mobile App access and Alert Notifications as part of their service.
If a Full Stack Solution is required, then it is definitely possible if time is spent on Architecting the Solution and Not just the Application. While this is focused on Hobbyists, with Cloud Based Security Improving this could ultimately becomes the standard way Enterprise Apps also get built….Time will Tell.