Learning AWS…

There are so many great resources to learn more about AWS solutions and offerings.

I thought this youtube video was an excellent introduction. It maps the traditional architecture to AWS. Check it out:

Here’s FB architecture with traditional terminology
Here’s FB on AWS

AWS has one of the best documentations out there, so for any questions, this is the most reliable resources to go to: https://docs.aws.amazon.com/index.html

This is also a great resource for frameworks and best practices:

AWS Well-Architected Framework

What are your favorite AWS resources for learning or practicing?

Considerations for building better APIs

What is an API?

In the simplest of terms, API is the acronym for Application Programming Interface, which is a software intermediary that allows two applications to talk to each other. In fact, each time you check the weather on your phone, use the Facebook app or send an instant message, you are using an API.

Every time you use one of these applications, the application on your phone is connecting to the Internet and sending data to a server. The server then retrieves that data, interprets it, performs the necessary actions and sends it back to your phone. The application then interprets that data and presents you with the information you wanted in a human, readable format.

What an API really does, however, is provide a layer of security. Because you are making succinct and explicit calls, your phone’s data is never fully exposed to the server, and likewise the server is never fully exposed to your phone. Instead, each communicates with small packets of data, sharing only that which is necessary—kind of like you ordering food from a drive-through window. You tell the server what you would like to eat, they tell you what they need in return and then, in the end, you get your meal.

Excerpt from “Undisturbed REST”

Type of APIs

Six Key Constraints to REST

  • True Client-Server Inter-dependencies
  • Stateless: States should be stored on the Client, not Server
  • Proper Management of Cache on the Client
  • Uniform Interface; in a single language, independent of the architectural back-end of either
  • Layered System with loosely coupled modules
  • Code on Demand / Smart Applications

For more information on the different constraints, you can read Dr. Fielding’s full dissertation online at:
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
.

Consider these while planning your API:

  • Design for great user experience
  • Clear Understanding and Definition of the Audience/Users of your API
  • Clear Understanding and Definition of the Actions of your API
  • Review of how your API and application will interact with Existing Services
  • Security of your API
  • Avoid hard coded resources or actions
  • Maintenance and Versioning of your API
  • Documentation & Support of your API
  • Monitor the usage and performance of your API
  • Promotion and Socialize of your API
  • Build a community
  • Continue to improve
Understanding the Audience/Users and Actions
Spec Comparison

For more information about APIs, also check out ProgrammableWeb.com

To be continued…