Tuesday, 4 February 2014

What is the best cloud application production infrastructure for me?

This is another exploratory post considering the way forward this year. Blogging is now core but still just one strand of a wider goal I've been pursuing for years.

I see blogging as conversation but also specification and wider thought. In the process of delivering a product or service I've found early discussion and collaboration to be essential. Blogging is the simplest way to do that.

I can easily try ideas out. Present them, get feedback and see what people actually use or engage in. It also allows me to pursue many different paths of though. See where they lead and develop the core concepts of an idea better.

The long term vision though is to produce media and programs ultimately leading to games and experiences. So the question today is what is the best infrastructure to support this. Now the web has become a utility and most products and services support it you can basically take your development and production process where ever you go and get the job done. At least you can if you pick the right tools and learn how to make them work in your workflow.

First I'll brainstorm my current thoughts to see what I already have in place or could put in place. See if this covers enough bases and look for holes in the idea. This should also give you more of an idea of what I am rambling on about.

Essentially I'm asking what is a good enough, or brilliant, development and production setup that works at work, home and out and about. Is there one or must I compromise and where?

What I want to do and how I currently do it

  • Blogging: Blogger and Wordpress. Will move to self hosted wordpress early this year
  • Unity 3d: code stored in github, Store output files in dropbox public folder
  • HTML 5: code stored in github, developed and published through cloud9ide
  • Content store: Dropbox public folder. Works on all devices, reliable and built for scale
  • Distributed Versioned file store: for managing codebases. Use github free version.
  • Learning tools: planning a self hosted moodle install
  • Web server: PHP is the language I use the most and supports the most popular web software I'm likely to use
    • Drupal, 
    • Wordpress
    • Moodle
The questions I have are many and varied and I'll answer them over time. Here are a few to give you can idea of where I am going:
  1. Is there one host that would do all this? I don't think so and I don't think I would want it. Too much lock in. The hassle of so many different solution is balanced by the freedom to connect and switch them as needed. AWS or bitnami for example
  2. Do web hosts support github these days or is ftp still the norm? github is so much more straightforward. Cloud9ide does it so well.
  3. Is it possible to provide data and server side programming on a web host and use this as required in html 5 and unity applications? Seems a relative no brainer. Just haven't got round to it.
  4. Is dropbox a good enough content delivery network (CDN)? Isn't designed for professional use but for now is it good enough. What metrics should I gather?
Creating this article has been useful already. It's helping me formulate what it is I'm actually trying to do and see that I do have most of it already in place or I know it can be done and how to do it. 

Essentially I feel we're entering a world where many parts of the infrastructure that support an application or experience are distributed. The networks and data rates are so good and reliable and the tools understand how to make it work easily enough. 

For example I think the way Tennis results are expressed isn't very good. I find it really hard to follow the tours as a result. All I need is a reliable source of results in a format I can reinterpret as requoired. Then I need tools to visualise this data in ways that help me follow the tour and understand the results better. 

That's just one example out of hundreds. The infrastructure you would need is 

Data provider

The web server provides and stores most of the data. Handling the following jobs:
  • something to pull in the data, 
  • turn it into a standard format 
  • and store it. 
  • Then supply it when needed. 

Visualise the data

 The tools to visualise the data include:
  • HTML 5 developed and published within the cloud9ide editor or dropbox public folder
  • Unity developed within the unity editor published in dropbox public folder

Both have excellent cross platform ways of sharing and visualising data. 

Content delivery network (CDN)

Dropbox hosts the media files for me including the unity files. It hosts images too. Not a good place for videos.
Youtube hosts many of the videos I share and some I have uploaded. 
Should this be my web server instead or is it best to keep these things separate?

Distributed Code Management

Git manages the code throughout the infrastructure and gets it where it needs to be. Currently using the free public version.

I'm asking questions like:
Which hosts support a git workflow?
Should my wordpress sites be under a git workflow?
My gut tells me not yet. Just get good WP hosting first so I learn what that's like. Get a separate git hosting elsewhere and when I'm ready combine the two some how.

For now I'm just surveying the scene.

My search returned plenty of results with people doing just this so it's possible.

Graphics and image Editor

I'm using the pixlr editor app in chrome. So it is the same across all my desktops and does the basics I need for now. Mainly editing photos. Resizing them for web. Accepts photo urls as well as local files. Means I don't need to install a separate image editor on each desktop and maintain it. 

No comments: