Wednesday 28 June 2017

Cloudy Judgement - SaaS, Paas and IaaS


While everyone understands cloud computing, most of us do get confused over Saas, Paas and Iaas. There are numerous articles on this topic all over the web, however there are very few which clearly distinguishes the differences between these cloud computing models. This article aims to bring those differences in a easy to understand.

Cloud computing is the umbrella term for various information technology related service which are provided on demand using consumption model.

The most common Cloud computing models are

SaaS: Software as a Service
PaaS: Platform as a Service
IaaS: Infrastructure as a Service


Each of these models has its own intricacies and hybrid cloud models also exists, but today I am going to help you develop an understanding of the high-level differences between SaaS, PaaS, and IaaS.

SaaS: Software as a Service

Email systems like Gmail and Web based Cloud hosted apps like Workday, Salesforce or Concur are examples of SaaS.  Basically, anything that is considered as on-demand software which you can run without elaborate installation or setup is SaaS. In some ways, SaaS is like the well-known thin-client software model. In thin-client model, software sits in the server and web browser is used to access the software in the server. In case of SaaS the software sits in Cloud and accessed via internet/internet using browser or another interface. 
While most SaaS can be run without any installation, some require installation of plugin or interface.

SaaS Examples: Gmail, Quickbooks online, Salesforce, Dropbox, Google Apps, Salesforce etc.

PaaS:  Platform as a Service

PaaS functions at deeper level than SaaS and provides a platform on which software can be developed and deployed. PaaS providers enable the developers by providing a framework in which they can build or customize applications. 
PaaS makes the development, testing and deployment of applications quick, simple and cost-effective.

PaaS Examples: Google App Engine, Red Hat’s Openshift, Apprenda etc.

IaaS : Infrastructure as a service

As we move down the stack as per the below image we see IaaS, Infrastructure as a Service. These are the fundamental building blocks of the cloud services. 
IaaS contains highly automated and scalable computer resources which are coupled with cloud services and network capability. These resources can be self-provisioned, metered and are available on demand for the users. 
Instead of buying hardware outright, users can buy IaaS based on consumption, like electricity, gas or other utilities.

IaaS Examples: Amazon Web Services (AWS), Cisco Metapod, Microsoft Azure, Google Compute Engine (GCE) etc.

The right model to choose:
Choosing the right model depends on the requirement. In case of SaaS there is nothing to setup, users simply access the software / application hosted in the cloud. Also, you have no or very less control over cloud infrastructure. On the other hand, with PaaS, user needs to do some configuration or setup on the provided platform.  PaaS provides a little more control in the predefined environment such as .NET or SQL server.  Or the maximum control over the server resources and other basic building blocks of the application development and hosting IaaS is the right fit. 
However, with more control in IaaS, users also need to take more responsibility.They must take care of major responsibilities such as patching the server as and when needed.
While one may be able to setup applications via SaaS without any IT or software consultant support, it is often dangerous as many fails to implement the security and other critical aspects of the application. It is vital to work with the right consultant who can help with proper model and configurations per the needs. Thanks for stopping by and Have a great day!

   Srivatsan Aravamudan
   General Enquiries:info@psibertech.com.sg
   Sales Enquiries:sales@psibertech.com.sg
   Telephone:+65 62689551
   Fax:+65 62689858
   Business Analyst - Snr Software Consultant.

  Title image inspiration - ez.no 

Wednesday 21 June 2017

Software Outsourcing Hacks (5/7) – Technology Stack


Welcome to yet another article on this series where we discuss about custom software development outsourcing tips and tricks. If you are reading this series for the first time, I suggest you to have a look at the earlier posts 1, 2, 3 and 4 here.


Well before we proceed let me make a disclaimer that I am no way an expert on all the technologies that are available on the windows, web and mobile realm. However, I do understand the outcomes of choosing a technology and have seen first-hand on the various implications on the project outcome over my 14 years of experience.

Choosing a technology stack for a software development project is like choosing a super hero deck to tackle a villain. You want to use the super powers of the hero to combat the limitations of the problem.

There are good reasons why Technology consideration for a business application is vital while outsourcing software development projects. To name a few:

The choice of right technology for the business application ensures better estimates for the project

Provides lesser cost to your end clients and takes shorter time to launch.

Development of the application takes less effort and lesser bugs promotes the overall quality of the project.

Typically, there are at least 4 layers in a web based business applications.

Client Layer: only component in the browser

Web Layer : Web server/ HTTP server

Business Layer : Application Server, including the development platform, frameworks, and server-side programming languages

The Database Layer : Database Server


The advantage of a layered architecture is the separation of concerns, which means that each layer can focus solely on its role. This makes it maintainable and testable. The code is arranged so the data enters the top layer and works its way down each layer until it reaches the bottom, which is usually a database. Along the way, each layer has a specific task, like checking the data for consistency or reformatting the values to keep them consistent.

 
source : Izhaki


The Model-View-Controller (MVC) structure, which is the standard software development approach offered by the popular web frameworks, is a layered architecture. Model layer is just above the database layer, which contains business logic and information about the types of data in the database. At the top is the view layer, which is often CSS, JavaScript, and HTML with dynamic embedded code. In the middle, you have the controller, which has various rules and methods for transforming the data moving between the view and the model.

Often our customers ask us the same question: “what technology stack is best to use?”. I think people are inclined to believe that choosing newer technologies will be synonymous with immediate success, but I assure you that reality is far from that. I have seen a project fail at massive proportion like Titanic, just because a stake holder was hell bent on using a specific technology.


The question which technology to use, largely depends on minimum viability of the project. How scalable you think it would be and its long-time maintainability. 

However, here are a few common stacks which can provide you an idea of what to choose for front end and back end.

LAMP: Linux/Apache/MySQL/PHP

I think this one is the earliest stacks to get traction. The LAMP stack is made up of all free, open-source software components that work especially well for dynamic web sites and applications.

MEAN: MongoDB/Express.js/AngularJS/Node.js


MEAN is a more like a modern stack as compared to Lamp stack. It’s entirely JavaScript-powered, too. It includes: the MongoDB database, the leading JSON-powered NoSQL database that offers more flexibility than a relational SQL databases. If you like to know more about going Mongodb or MySQL you can read here. You may choose to use MySQL instead of MongoDB if you wish to.

Ruby Stack: Ruby/Ruby on Rails/RVM (Ruby Virtual Machine)/MySQL/Apache/PHP


The Ruby Stack comes ready-to-run, with a complete development environment for Ruby on Rails, with its most popular “gems” making building applications fast and easy.


Conclusion

In conclusion choice of stacks whether it is based on personal values or on company policy does have significant impact on the business application being developed. It also affects the cost of the outsourcing, the availability of resources for support and long-time maintenance of the project. Choosing a right technology stack is simply a matter of thinking ahead, but with changing times it is very difficult to make assumptions. Therefore, we need to consider market trends more closely and the adaptation cycle. As I said in the beginning Its like choosing your super hero, what hero you want to use depends on the villain( problem) you want to solve. Talk to your software development consultant / vendor to know what technology stack would be perfect for your next business application development. Thanks for stopping by and have a great day!


   Srivatsan Aravamudan

   General Enquiries:info@psibertech.com.sg
   Sales Enquiries:sales@psibertech.com.sg
   Telephone:+65 62689551
   Fax:+65 62689858
   Business Analyst - Snr Software Consultant.

  LinkedIn

Tuesday 20 June 2017

MongoDB Vs MySQL : STORAGE WARS



Data storage enthusiasts have varied opinions when it comes to MySQL vs MongoDB. Although MySQL and MongoDB represents two sides of the argument concerning data storage, they both are open source products distributed under a version of the GNU GPL. The only difference is while MySQL is tried and tested relational databased MongoDB is non-relational or No SQL database.

To understand the arguments, we need to under the basic difference i.e. the relational and non-relational database. Relational database has been here for quite some time and works well with relational data sets such as the intersection point defined by Venn diagram. For example, one may use the famous select statement to find those students who have scored more than 80% from all the sections on a specific subject in the last two years.

On the other hand, non-relational database encompasses a wide variety of different database technologies that were developed in response to the demands presented in building modern applications. Data is stored in Key-value pairs, rather than the traditional table. For example

Student_name Stephanie Chan

Student_gender Female

Student_Total_Percentag 82%

As you can see in NoSQL database, the field and its value are stored as one record and enables faster retrieval. NoSQL databases are good at scaling and poor at data integrity while Relational Databases tends to perform poorly over huge volume of data yet good with data integrity. 


Imagine Amazon, Google or other popular sites, they prefer quick response and availability to security and integrity. That doesn’t mean one is better than the other. What NoSQL / MongoDB did was address the scalability need which has not met by relational databases such as MySQL. 

souce:developer.com

MongoDB, the document-oriented and open source database stores documents with the help of dynamic schemas, unlike the relational databases that make use of rows and tables for storing the document. While it is still new in the data storage industry when compared to other traditional databases, like MySQL, it has drawn a good attention for its ability to calculate MapReduce and distributed key value store.

MySQL is a relational database originally developed by MySQL AB, now owned by Oracle. MySQL is mostly used in to store data for web applications, typically as part of the popular LAMP stack (Linux, Apache, MySQL, PHP/ Python/ Perl). MySQL has over the years added various features so that it is today a full-featured RDBMS. In addition to the standard features such as tables, indexes, stored procedures it also offers updatable views, triggers, cursors, query caching, partitioned tables and clustering.

Source:Gitbook


Conclusion:

When compared to relational databases, NoSQL/ MongoDB databases are more scalable and provide superior performance, and their data model addresses several issues that the relational model is not designed to address:

  • Large volumes of rapidly changing structured, semi-structured, and unstructured data
  • Agile sprints, quick schema iteration, and frequent code pushes
  • Object-oriented programming that is easy to use and flexible
  • Geographically distributed scale-out architecture instead of expensive, monolithic architecture
The important aspect is to keep in mind that a non-relational database is not better than a relational one. If the database in question has a lot of relations and normalization, it might make little sense to use something like MongoDB. It's all about finding the right tool for the project. 

Source:Hackernoon
Instead of jumping into MongoDB just because it’s on the edge rather than the actual need for the project would be an unwise decision. If you have questions regarding Database Management, Data warehousing, Data migration or simply wondering whether to choose MySQL or MongoDB, please contact us here. Thank you for stopping by and have a fantastic day!


   Srivatsan Aravamudan

   General Enquiries:info@psibertech.com.sg
   Sales Enquiries:sales@psibertech.com.sg
   Telephone:+65 62689551
   Fax:+65 62689858
   Business Analyst - Snr Software Consultant.

  LinkedIn

Related Posts Plugin for WordPress, Blogger...

Share Buttons