Monday, June 12, 2017

Choosing the right cloud provider - AWS vs Azure vs Google Cloud Platform



AWS vs Azure vs GCP
There are three main players in the race for cloud services providers - between them, they provide all products you might need for moving your business to the cloud. But these product offerings differ in pricing as well as the naming of their services - which can be confusing at times.
Here’s a quick guide to compare the services provided by the three main players - Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform (GCP).
Please note - this is by no means a comprehensive document - the product offerings by AWS, Azure and GCP are vast and it is always a good option to consult with a trusted technology partner to select the correct provider for your requirements. This guide is intended to make you familiar with some of the most commonly needed products for cloud.

Why move to the cloud?

Companies from both the public & private sector (Netflix, AirBNB, PBS and many more) increasingly rely on cloud services for their online operations. This allows them to concentrate on their core business idea and leave the infrastructure needs to the experts. In this day and age of constantly changing demand, setting up a physical infrastructure to provide such online services would get very expensive and time-consuming - with a team of technicians, lot of extra budget for servers, constantly changing hardware requirements and so on. With the help of cloud offerings provided by these players, a lot of startups find it quick and affordable to start their own ventures without these technical challenges.

Pricing

Pricing for products and services you use from these providers will depend largely on the computing power you need, the number of instances you deploy and the location. But some major advantages of using the cloud as compared to setting up your own physical infrastructure are
  • No upfront investment
  • Pay for what you use
  • No termination fees
  • Easy scaling up/scaling down
You can read up about the pricing details here - AWSGCPAzure

Amazon Web Services (AWS) vs Microsoft Azure vs Google Cloud Platform (GCP)

Amazon introduced IaaS (Infrastructure As A Service) at their first AWS service launched in 2004. It has been a front-runner in the race and has since kept adding features and offerings - giving them an upper hand over competition. To an extent, they are the most expensive in some regards. But they are also the best in terms of service offerings. Google and Microsoft joined the bandwagon later but quickly caught up. This did help bring down the prices which ultimately helps consumers.
Here’s a quick comparison of all the offerings provided by AWS, Azure and GCP and how it affects pricing.

1. Computation Power

This is the core of the services offered by computers - to calculate, to process data — to compute. To get faster processing for data analysis, graphics rendering or faster response time, you either need more hardware OR you can go to the cloud. If you buy hardware, it is yours. But it is also very expensive - purchasing, maintenance and all the idle time where they are not in use. On the other hand, moving to the cloud, you only pay for what you use and it is much easier and faster to scale up or scale down depending on the demand.
Amazon provides EC2 (Elastic Compute Cloud), their on-demand scalable instances. Google provides Compute Engine and Azure has Virtual Machines. While EC2 is arguably the most comprehensive, it can burn a hole in your pocket if you are not careful - the pricing is also a little complex to understand. The same goes for Microsoft Azure’s VMs as well. Google’s Compute Engine has very simple pricing, but it is also the least flexible.
With AWS Elastic Beanstalk and Google App Engine, you also have the option of buying computing processes for mobile and web apps - which significantly reduces cost compared to using EC2 or Compute Engine IF your app fits the specs for these services.
All three providers provide Docker capabilities with AWS ECS, Google Container Engine and Azure Container service.
Azure has another advantage in that it allows deploying Windows client apps with a RemoteApp service which the other two lack.

2. Storage

Storage is another important criteria for cloud services. Using any of these cloud providers, you can store data to the tune of some GBs to many petabytes.
For storage, Amazon’s S3 (Simple Storage Service) has been around for long and is very well documented with many samples as well as third-party libraries. Google’s Cloud Storage and Azure’s Storage also provide equally reliable services, but their resources are not as extensive as S3. Although, Google and Azure somewhat beat S3 on the pricing.
ServiceProviderPricing
Cloud StorageGoogle$0.026 (standard) / $0.02 (Durable Reduced Availability)
Data Lake StorageAzure$0.04
S3AWS$0.03 (standard) / $0.0125 (infrequent)
Azure StorageAzure$0.024 (Locally Redundant) / $0.048 (Geographically Redundant) / $0.061 (Read access - Geographically Redundant)
Block StorageRackspace$0.12
Cloud FilesRackspace$0.1
Archiving services are provided at lower rates compared to cloud storage, but it also provides lower access speed. Archiving services are generally used for storing objects which are not accessed regularly. The archiving services provided by Amazon, Azure and GCP are Glacier (AWS), Azure Backup (Azure) and Cloud Storage Nearline (GCP). Azure and AWS also provide solutions for archiving - Data Archive (AWS), Backup and Archive (Azure)
ServiceProviderPricing
Cloud Storage NearlineGoogle$0.01 (storage) + $0.01 (retrieval)
GlacierAWS$0.007
StorageAzure$0.01 (Locally Redundant) / $0.02 (Geographically Redundant) / $0.025 (Read access - Geographically Redundant)
Apart from storage and archiving, all three providers also provide services for creating content delivery networks. AWS provides CloudFront, Azure has a Content Delivery Network and GCP has Cloud CDN.

3. Analytics

Now comes the interesting and probably a very important part - using the computing, storage and content delivery using analytics. Usually when it comes to solutions hosted on the cloud, they deal with large data sets (big data). And unless we use analytics on this data and gather some important insights, it is pretty much useless.
Analytics on big data can help with many things - predictions, new offerings, cross-selling and so on. But analytics on such large data sets requires specific tools and programming models. Google was forefront in this race due to MapReduce - they came up with a number of products for users - BigQueryCloud Dataproc (managed Spack & Hadoop), Cloud Dataflow (data processing in real time), Cloud Datalab, Cloud Pub/Sub (streaming data and messaging) and even Genomics (for processing genomic data)!
Amazon provides Elastic MapReduce and Azure provides HDInsight. All three also provide various Big Data Solutions you can use. You can find them here - GCP Big Data solutions, AWS Big Data offerings, Azure Big Data solutions.
While Google has taken the lead on Big Data, Amazon takes the cake with QuickSight - an offering they provide for businesses to make sense of large amounts of structured and unstructured data. It helps businesses identify opportunities based on data sets and various strategies. This helps businesses where they don’t see the need to have a team of data scientists implementing solutions for analyzing their data - but still need to gather insights from the data they capture.
Analytics will also likely require you to use Machine Learning. Google is ahead in the race on this one too, with Cloud Machine Learning as well as offering products which they use for their own apps in specific areas - Cloud VisionSpeechNatural Language Processing and Translate. The Cloud ML alternatives provided by AWS and Azure are Amazon Machine Learning and Azure Machine Learning.

4. Location

When deploying your cloud services, location is very important - you should choose a data center which is close to your primary users. For instance if you are providing services to users in the East Coast of United States, it would be best to deploy your services there. This will reduce the response time and also offer better user experience. CDNs also help here for faster delivery of resources.
AWS Availability
AWS regions
Amazon wins hands-down in this area - it has  the most extensive coverage closely followed by Azure (although Azure has very good coverage in Asia). Google has a good coverage in United States, but not so much in Europe or Asia.
Azure availability
Azure regions
When selecting the location, do keep in mind that different locations cost different. United States and Europe generally offer the cheapest options. You can find more information here - AWS global reachAzure regions, Google cloud locations
Google cloud locations
Google cloud locations

5. Other products & services

These are the main service offerings provided by any cloud providers. But that is not the end. Here’s a quick list of other resources/services you might be interested in

a. Networking

  1. DNS - Amazon Route 53Google DNSAzure DNS
  2. Virtual Private Networks - Amazon VPC, Google Cloud Virtual Network, Azure VPN Gateway
  3. Load Balancing - Amazon ELB, Google Cloud Load Balancing, Azure Load Balancer

b. Database

  1. SQL - Amazon RDS (has support for multiple DBMS), Azure SQL DatabaseSQL Data warehouseSQL Server stretch database, Google Cloud SQL (only supports MySQL as of now)
  2. NoSQL - Amazon DynamoDB, Azure DocumentDB and Table storage,Google Bigtable and Cloud Datastore
  3. Cache services - Amazon ElastiCache, Azure Redis
  4. Other cloud database offerings by Amazon
Then there’s developer tools, security offerings, disaster recovery tools and so on.

Other Service Providers

While Amazon, Microsoft and Google are the big names in cloud providers, there are many small providers who offer some very competitive pricing. Many of them focus on indie developers rather than companies and can be worth giving a shot - esp if you need moderate scaling. Some examples include
  • Digital Ocean
  • Rackspace Cloud
  • Linode
  • Vultr


Sunday, June 11, 2017

What is Ruby on Rails



What is Ruby on Rails?

Ruby on Rails (ROR) is a web development framework developed in Ruby. It simplifies and abstracts repetitive tasks and aids in speedy application development. Programmers love this language because of its simplicity, agility, elegance and speed.

The key principle of RoR is convention over configuration. Rails comes with a set of conventions which saves programmers time in configuring files in order to set-up.

Why ROR for App Development?

Ruby on Rails - a framework built using Ruby. Its aims at rapid application developemtn for mobile and web applications.



Rails is a start-up friendly language. It is easy to use and understand and provides ample scope for development and scalability. Many startups in the recent decade have opted for Ruby. These include names like GitHub, Basecamp, SlideShare, Groupon etc. Rails is so loved because of it’s developer friendly command line and online support. To ease it for you, we have listed some of the most prominent plus points of Ruby on Rails.

Rapid Development:

Speed is the biggest competitive advantage of RoR. Rails is developed to support rapid application development(RAD). The Modal View Controller (MVC) in ROR is beautifully implemented and it focuses on (DRY) Don’t Repeat Yourself. These principles reduce the time consumed on app development and help programmers work at fast pace. Availability of good testing frameworks also helps in bug fixing. The ease of accommodating changes makes Rails the best pic for fast application development.

Adaptability

The code in rails is more like read as you go type. If properly written, the code needs very less documentation. This means that it is easier for new developers to catch-up on the project and start working. The self-documentary feature saves developers time spent in writing documentations.

Agile Methodology

Agile is the use of incremental, iterative and empirical processes to respond to project uncertainties. There is a wide gap between the thinking of a developer and the client, on how development works. Agile methodology is the way to improve communication and handle changing client’s requirements in real time. It is an alternative approach to traditional sequential development.

Cost Cuts

Rails is built on a completely open source platform. The combination of Linux and Ruby (both open source) provide great incentives for start-ups as they are always tight on budget. Since Rails and most of its libraries are open source, there are no costs involved in licensing. Not to forget, savings in development time are also cost cuts.

The CATCH

The only two downsides of Rails are the lack of experienced professionals and compatibility issues. Finding an experienced programmer is difficult as there are very few techies who are good with Rails. Many experienced professionals in Java and PHP have still not adopted RoR completely. ROR is developing at a very fast speed and its techie friendly nature aligns with the skilled developer's mindset.

RoR is much more resource intensive as compared to PHP thus many hosts are yet to develop support for it. Rails is usually not a good bet for low-end shared hosts. But this by no means is an end in itself. Heroku and EngineYard are among the best hosts providing such services. Alternatively, you can host it on a Virtual Private Server (VPS) with Amazon EC2, Rackspace, or Linode. You can then enjoy complete control over your server and can allocate resources to your application as needed.



Amazon DynamoDB vs MongoDB


In the past few years, we have seen a huge change in trends in the space of databases. A new emerging trend has been the usage of NoSQL ("not only SQL"). NoSQL came into picture when developers realized the need for an agile delivery system which is easily able to process unstructured data. The system needed to be extremely dynamic and relational databases did not quite cut it. A relational database model may not be the best solution for all situations. An alternative, more "cloud-friendly" approach was to employ NoSQL instead. This is where Amazon DynamoDB and MongoDB come in handy.

amazon dynomodb vs mongodb - complete comparison and meaning
 

NoSQL is a whole new way of thinking about databases. It is not a relational database. MongoDB, the most famous of NoSQL offerings, uses a documents model. A MongoDB database holds a collection which is a set of documents. Embedded documents and arrays reduce the requirement for joins, a key parameter for high performance and speed.


In January 2012, Amazon announced their NoSQL service, DynamoDB. While not the first in the league, it is definitely a game changer. Most people think of MongoDB as the epitome of NoSQL because of its ease of use compared to other databases. But it has major drawbacks in terms of data management.

5 features of Amazon DynamoDB that are very compelling as compared to its competitors:
1. Analytics

Extending the application of analytics to a database has not been as easy. Ideally, we would just want to send a request to the database and have it send back the result when ready. But every NoSQL database has failed in this aspect. MongoDB has major limitations when running map-reduce jobs.

On the other hand, DynamoDB integrates with Elastic Map Reduce and reduces the complexity of analyzing unstructured data. This is a BIG plus

2. Relaxed vs Strong consistency

With Amazon DynamoDB, there is no need to hardcode replication of values. Once you make a choice, everything works like it should. Like all Amazon product offerings, read and write units can be adjusted based on actual usage. In our opinion, nothing beats this!

3. Ease of getting started

Amazon poses a real threat to competition by offering a hosted solution. If you have an AWS account, getting started with DynamoDB is as simple as making a single API call! With other NoSQL solutions, the developer must have the right servers, installations and configurations. With DynamoDB, they just need to concentrate on the application and let AWS handle the rest.

4. Performance

Amazon, like AWS, provides amazing performance with DynamoDB. They give single digit latency even on very heavy loads. All data is synchronously replicated across all availability zones AND there is NO downtime even while there are throughput updates! The use of SSDs is a real game changer for random reads and updates.


5. Pay for use

Amazon lets you buy operations per second capability rather than CPU hours or storage space. This removes a whole lot of complexity for developers who would otherwise need to tune the database configuration, monitor performance levels, ramp up hardware resources when needed. This provides users a fast and reliable storage space for their needs with costs that scale in direct proportion to the demand.


With all its advantages, even if we consider a few flaws DynamoDB does have, as a product it comes closest to fulfilling the promise of NoSQL compared to its competitors: Easy-to-use structured storage without the complexity of managing SQL servers and the reliability and performance benefits of scaling out.

Friday, June 2, 2017

Blockchain & Bitcoin TedTalks



The Blockchain Revolution



Blockchain technology : From Hype to Reality 



Bitcoin for consumers today





Bitcoin & Blockchain - Industry Leaders Speak


Bill Gates - Strongest Believer of this Technology




Richard Barrason On Bitcoin


Ex Facebook Founders on Bitcoin & Blockchain Technology