Aplication Architectures using Google cloud

The below architecture diagrams helps in understanding deployment architectures for different use cases.  I want to have a quick pointer to look at these diagrams from my blog, instead of searching for them every time.

Web applications:  https://cloud.google.com/solutions/architecture/webapp

Digital asset management and sharing:  https://cloud.google.com/solutions/architecture/digitalassets

Content Management : https://cloud.google.com/solutions/architecture/contentmanagement

High Performance Computing:  https://cloud.google.com/solutions/architecture/highperformancecomputing

IOT: https://cloud.google.com/solutions/architecture/streamprocessing

Mobile Apps and Games:  https://cloud.google.com/solutions/architecture/mobileandgames

Choosing web framework – Django

After going through this website: https://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks

I felt, man! many languages and each language has several web frameworks. This will add more confusion.  After spending 12 years with C language, I wanted to learn some high level language where applications are developed using extensively available libraries (packages/modules). I choose Python because of its wide spread usage in enterprise environments.

Python supports below frameworks. Now we have full of choices.

Project Current stable version Release date License
Bottle 0.12.8 2014-12-28[31] MIT
BlueBream 1.0 (dormant) 2011-01-18 ZPL
CherryPy 3.7.0 2015-04-24[32] BSD
CubicWeb 3.20.7 2015-04-22[33] LGPL
Django 1.8.6 2015-11-04[34] BSD
Flask 0.10.1 2013-06-14[35] BSD
Grok 2.8 (dormant) 2013-02-14[36] ZPL
Nagare 0.4.1 (dormant) 2012-01-18 BSD
Pyjs 0.8.1a (dormant) 2012-05-06 Apache
Pylons 1.0.1 (dormant) 2012-08-14 BSD
Pyramid 1.5.7 2015-04-28 BSD
TACTIC 4.3.0.v02 2015-03-31[37] EPL
Tornado 4.2 2015-05-26[38] Apache
TurboGears 2.3.5 2015-04-28[39] MIT, LGPL
web2py 2.11.2 2015-05-30[40] LGPL3
Webware 1.1.1 (dormant) 2013-01-18 Python
Zope 2 2.13.23 2015-06-29[41] ZPL

I want to choose one option out of these. After interacting with some experienced engineers in these technology and doing some study in the internet.  I came to an understanding, Flask is easy to start with if we want an application built for small scale.

“So for Small applications with simpler requirements go with FLASK. Pyramid and Django are both aimed at larger applications, but take different approaches to extensibility and flexibility. Pyramid targets flexibility and lets the developer use the right tools for their project. This means the developer can choose the database, URL structure, templating style, and more. Django aims to include all the batteries a web application will need so developers need only to open the box and start working, pulling in Django’s many modules as they go.”

“Django includes an ORM out of the box, while Pyramid and Flask leave it to the developer to choose how (or if) they want their data stored. The most popular ORM for non-Django web applications is SQLAlchemy by far, but there are plenty of other options from DynamoDB and MongoDB to simple local persistence like LevelDB or plain SQLite. Pyramid is designed to use any persistence layer, even yet-to-be-invented ones.”

“Django’s ‘batteries included’ approach makes it easy for developers who know Python already to dive in to web applications quickly without needing to make a lot of decisions about their application’s infrastructure ahead of time. Django has templating, forms, routing, authentication, basic database administration, and more built in. In contrast, Pyramid includes routing and authentication, but templating and database administration require external libraries.”

“The extra work up front to choose components for Flask and Pyramid apps yields more flexibility for developers whose use case doesn’t fit a standard ORM, or who need to interoperate with different workflows or templating systems.”

Since Django has all built in a box, as a beginner I decided to go with django. The wikipedia link compares web frameworks with following parameters:

Ajax

MVC framework

MVC push-pull

i8n & L10n

ORM

Testing framework

DB migration framework

Security framework

Template framework

Caching framework

Form Validation framwork

Will talk more about these capabilities in further blogs.

PS: Para’s with ” ” are not my wordings. I used these from https://www.airpair.com/python/posts/django-flask-pyramid

Web hosting vendors

I talked to couple guys who has hosted their websites in some hosting sites. I asked them about those web hosting companies, got below information:

Hcoop 

  • They claim this: “We are an Internet hosting service and community, run democratically as a USA 501(c)(12) non-profit corporation. HCoop members pool their resources to support most any services that qualify as “Internet hosting.” Using custom tools written in SML we offer the benefits of a shared hosting environment with nearly the same flexibility a VPS would offer. Thanks to our cooperative structure, costs are low ($7 US/month) and funds are put toward expanding the resources available to each member.”

DigitalOcean 

  • They have monthly and hourly plans, prices ranges from $5 to $640 per month
  • for $160/month, you get
  • 16GBMemory 8 CoreProcessor 160GBSSD Disk 6TBTransfer

E2ENetworks 

  • Sample price for a dedicated server DEDI-201S
  •  Rs 11999 (Rs 13679 with taxes) / month, Single Quadcore Intel Xeon E3-1231 v3,
  • 8 VCPUs , CentOS / Debian / Ubuntu , 32 GB RAM, 2 x 120 GB SSD diskspace (RAID-1) , 1 IP Address

AWS 

  • This is the most popular hosting service provide.

Godaddy 

  • popular web hosting company. First year they charge less, subsequent years you need to pay more. They have services like, web design, domain name, hosting
  • Their plans start from 1000 per year..

Google Hosting

  • Domain registration starts with 450 rupees per year.
  • you can use their apps at $10 per month per user. https://www.google.com/intx/en_in/work/apps/business/index.html
  • you can host your website for free for first year. Look at http://www.indiagetonline.in/
  • domains.google.com
  • They have app engine,  cloud.google.com to host your web applications (python, Java, PHP, GO). They provide sandbox environment to deploy your app.
  • They also have Managed VM service, which is in Beta stage.

yahoo small Business

  • web site hosting starts from $3.75 – $8.9/per month with lot of features, I felt this is more attractive pricing for the features.
    • 1000 email addresses
    • Unlimited site pages
    • $100 credit for search marketing
    • Unlimited disk space
    • Unlimited data transfer
    • 1 domain + 500 subdomains
    • Private registration included
    • Site design tools (Yahoo + 3rd party)
    • Account access for colleagues/friends
    • Secure FTP
    • File Manager
    • WordPress blogging
    • PHP 5.3.6, Perl 5.8.7, MySQL 5.1
    • phpMyAdmin (free open-source add-on)
    • Virtually unlimited databases
    • Password protection
    • Site search capability
    • Snapshot backups
    • Shared SSL certificates with 256k (bank-level) encryption

Net4 

  • They 30rupees/month to 450rupees/month plans for hosting your website
  • They also give access to linux/windows OS

Tata Communication 

  •  Need to get more information, they have advanced hosting facility.
  • Heard that flipkart , snapdeal has their servers from this facility.