Thursday, November 10, 2011

Week 12 MIST 7500 - Web Services







So what exactly is Web Services?  According to WC3 the definition of Web Services is:

A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.

Sounds rather complex, but when you think about it simply, it's basically one machine talking to another without human intervention over some medium. 




One of the things we have been doing this semester is using Amazon's Web Services (or their Cloud technology).  No longer do we need physical machines to house our apps or databases, we can store all of them on the cloud and they can easily speak to one another through the necessary protocols. 

So what is Big Web Services?

Big web services use XML messages that follow the Simple Object Access Protocol (SOAP) standard, an XML language defining a message architecture and message formats. Such systems often contain a machine-readable description of the operations offered by the service, written in the Web Services Description Language (WSDL), an XML language for defining interfaces syntactically.

SOAP is mostly used for Enterprise applications to integrate wide types and no. of applications and another trend is to integrate with legacy systems, etc. On the Internet side of things — Google is consistent in implementing their web services using SOAP, with the exception of Blogger, which uses XML-RPC.

What is REST?
 
REST defines a set of architectural principles by which you can design Web services that focus on a system's resources, including how resource states are addressed and transferred over HTTP by a wide range of clients written in different languages. If measured by the number of Web services that use it, REST has emerged in the last few years alone as a predominant Web service design model. In fact, REST has had such a large impact on the Web that it has mostly displaced SOAP- and WSDL-based interface design because it's a considerably simpler style to use. 

Differences between the two:

The main advantages of REST web services are:
  • Lightweight – not a lot of extra xml markup
  • Human Readable Results
  • Easy to build – no toolkits required
SOAP also has some advantages:
  • Easy to consume – sometimes
  • Rigid – type checking, adheres to a contract
  • Development tools

For consuming web services, its sometimes a toss up between which is easier. For instance Google’s AdWords web service is really hard to consume, it uses SOAP headers, and a number of other things that make it kind of difficult. On the other hand, Amazon’s REST web service can sometimes be tricky to parse because it can be highly nested, and the result schema can vary quite a bit based on what you search for.

Bottomline:  Choose Wisely!

Thursday, October 27, 2011

Week 10 MIST 7500 - Tech4Seniors

As part of our assignment to develop our own business and create a business model and website for it, I created a company called Tech4Seniors.  Tech4Seniors is a full service IT company that caters to the senior citizens of the Northern Metro Atlanta area.  Services include Computer Setup, On-Site Training, Computer Hardware, SmartPhones, etc.  Our mission is to provide the necessary knowledge and expertise in IT to a demographic that typically is not IT savvy.  The business will start out small with a few customers and little to no operating costs, but as business picks up expansion into more territories and the possibility of hiring additional people will become eminent.  Below is a prototype website for my business.

Tech4Seniors

Week 10 MIST 7500 - Amazon's Cloud Technology

Many years ago, when you heard the name Amazon you automatically thought of "books online".  If you wanted to get books shipped to you for a low price, they were the place to go.  Fast forward several years and Amazon is now a huge success selling almost anything you can possibly imagine in their marketplace.  Much of this success is due to how they run their business.  Some changes to the way they did business several years ago helped make up some of that success.

Amazon considers themselves to be a technology company that just happens to do retail.  Everything at Amazon is driven by technology stacks.  Originally they had teams of developers that were kept small to drive down the need for meetings.  They kept teams to around 8 - 10 people (enough people for two pizzas as Dr. Werner Vogel (Amazon's CTO) put it).  This proved to be a success early on, but eventually some productivity was lost and they had to do a deep dive into analysis to try and figure out what was causing this decline.  It turns out that their teams were spending about 70% of their time managing their infrastructure.  Amazon gave their developers the freedom to use whatever programs they wanted to use in their development, at first a blessing but it turns out it caused this infrastructure nightmare that spawned this decline in productivity.  Dr. Vogel wanted to relieve this burden so he came up with the idea of Amazon Web Services or Amazon's "Cloud".  The cloud would allow all of the programs and services to be housed and managed separately so the engineers could use what they needed and not have to worry about managing any of the infrastructure.  This proved to be a success from Amazon, and so they made this technology available to other businesses as well. 

So what makes the cloud so successful for both Amazon and other businesses that utilize it's features?  Below is an outline of the key features or benefits of using the cloud:
  • Designed for Flexibility - gave their developers the freedom to use the programs of their choice.  Wanted to avoid lock-in.
  • Designed for On-Demand - resources were made available when needed
  • Designed for Automation - all things in the cloud needed to be automated to keep productivity up
  • Designed for Elasticity - must be able to scale up and scale down
  • Designed for Failure - if you plan for the worst, you'll be prepared for it
  • Designed for Utility Pricing - customer's decide what pricing they are willing to pay
  • Break Transparency - creating of regions to avoid latency
  • Decompose into simplest form - break everything into smaller pieces
  • Designed with security in mind - from the ground up
  • Don't do it alone - invite the third parties to create the larger catalogs
  • Focus on what doesn't change - customer's always want low prices!
  • Let your customers benefit - pass your increased revenue into savings for your customers
  • Continuously innovate - be ahead of the game
So all of this infrastructure work is done by the cloud keeping the developers focused on what they do best...developing.   Amazon came up with these key features to make the cloud an attractive option for other companies to utilize.  They followed a model that most companies could easily adopt. 

The jury is really still out on whether or not cloud computing will really take off, but for now it seems to be working well for Amazon and some other early adopters.  My guess is that it may not completely steer companies away from conventional methods, but it will certainly become a viable option for most.

Thursday, September 29, 2011

Week 7 MIST 7500 - API's

You may not know it, but you probably utilize APIs on a daily or weekly basis.  Much of API's are behind the scenes, so the typical user doesn't even know what's going on when they use a certain app or go to a particular webpage.  This particular post will focus on what API's are, some of the key advantages and disadvantage, and then we'll go over a case study for Neflix and discuss the evolution of their API strategy.

So what is an API?

An application programming interface (API) is a particular set of rules ('code') and specifications that software programs can follow to communicate with each other. It serves as an interface between different software programs and facilitates their interaction, similar to the way the user interface facilitates interaction between humans and computers.  A program's API defines the proper way for a developer to request services from that program. 

Why are API's necessary?

Josh Walker of Forrester Research Inc. says that "Building applications with no APIs is like building a house with no doors."  API's allow that necessary communication between applications.  As an application mature's, the need or likelihood of another developer needing to tap into that particular program increases.  Having available API's makes your application more market friendly.  If a company wants to use your application with another in house application then having that API available is critical, otherwise they could be tempted to find another vendor that will provide that API support.

API example

An example of a simple API is the Google Map Image API.  This API allows you to incorporate maps as images on your website.  You can feed certain parameters like size, zoom level, location, and path points.  It's very helpful for people that want specific location maps on their websites.  Google has other API's that allow more functionality, but with more functionality you have more complexity.  So depending on what you need, you can find an API that works for you.

API Advantages
  • Add features to your site without having to code them
  • Get more exposure for your application
  • Possibility of additional revenue (some API's must be purchased)
  • More integration with other applications

API Disadvantages
  • Security issues
  • Can be difficult for developers to learn
  • Sometimes not officially documented
  • API's are sometimes kept secret or are not known
  • Can change rapidly
  • Bandwidth issues (too many API calls)
  • Overexposure (too much of your code is open)
Neflix Case Study

To reach a wider audience, Neflix has API's that they have made available and have become successful in generating additional revenue and creating more of a brand presence.

1000 Flowers - Their first attempt at API's was to make it available to the masses.  The more exposure they got, the better.  They incorporated a prize of $1 million to the development team that could generate a 10% increase in success with their Recomendations Algorithm.  After 3 years, they were finally able to achieve that.  They felt that while the had lots of innovation with this method, they wanted to go a different route

Hundred of Devices - Netflix had a goal of getting their service on 100 different devices (other than the PC).  Instead of having companies like Sony and Microsoft write their own programs (which took up to a year and a half) the made their API available to these companies.  This not only got their service on more devices (over 200 when it was done) but it increased revenue streams for them and did it quickly.

Tons of Tests - Now their focus has shifted to testing their API's in other ways to generate new mediums and new methods...namely the mobile environment.  They are constantly updating their API's every two weeks to be more flexible and meet demand.  Neflix just released an update that will allow any phone running Android 1.5 or higher to utilize it's app.  Now they have more customers who will be able to view their content and possibly more new customer's now that their phone is supported.

Netflix has discovered a few key points during the evolution of their API Strategy:

  • Developing an API strategy is a jorney not just a single project
  • Be prepared to evolve to the business environment
  • Netflix chose speed over scale and decided to develop their API's to develop their core business instead of focusing on APIs to develop new side business
So in conclusion, there is a great need for APIs and while there is some risk in utilizing them I think the benefits difinitely outweigh those risks.