How #serverless computing serves the enterprise

Savvy businesses crave rapid iterative development, reduced IT costs, and strategic use of IT staff for creating differentiated services, not for provisioning and managing back-end compute resources. The answer? Serverless computing.

Serverless computing, an emerging style of application development, eliminates the complexity of dealing with servers at all levels of the technology stack. It provides a platform for rapid change, pay-per-use billing, and management of computing resources.

But wait. Doesn’t this sound like cloud computing? Indeed, serverless computing is a form of cloud computing, but in this case, the cloud provider manages the provisioning of resources dynamically rather than planning capacity in advance, and customers pay for what they use in contrast to buying pre-defined blocks of capacity. This is a more granular, and therefore more cost-effective, approach than traditional cloud computing. Applications appear “serverless” because server management and capacity planning are hidden from the user (developer).

Serverless computing, combined with API-driven design, has drastically reduced development time for distributed development and micro-development teams. Serverless computing uses functions, encapsulated business logic such as a payment function, that are granular and independent, supporting incremental, DevOps-style development. Applications are written at the function level, and the cloud provider manages the function’s underlying operating system, availability, and scaling.

Great for events

Serverless computing lends itself to event-driven activities, especially events that are sporadic or can increase (or decrease) quickly. Serverless computing examples include:

  • IoT — stream processing of data from distributed IoT applications that require multiple, small units of computing power (e.g., transaction order processing, clickstream analysis, data cleansing, metrics generation, log filtering, indexing, social media analysis and IoT device data telemetry)
  • Operations automation — real-time file processing, triggered immediately after a new file is added to storage; scheduled backups; reports and housekeeping tasks
  • Triggered events based on an activity — fulfillment activities initiated when an order is placed, social media data made immediately available to users for querying when the data is posted, a thumbnail generated when a photo is added to storage, data formatted for a data lake when a new database entry is made
  • DevOps automation — event- or schedule-based triggers for continuous integration actions
  • Security — security and operational log analysis on the fly, to take instant protective action


AWS Lambda and Microsoft Azure Functions are leaders in the serverless space. They support Node.js, Python, Java, and C#, along with other popular programming languages. Emerging frameworks are Google Cloud Functions and Oracle Fn, which are in beta.

For those interested in implementing their own on-premises serverless frameworks, there are two early-stage open source projects worth considering: Iron Functions from and Project Fission from Platform9. Apache OpenWhisk is another on-premises serverless solution based on Apache 2 open standards.

Big savings

The serverless model provides significant cost savings — on the order of 60 percent — with considerably reduced administrative effort. This calculation is based on a simple e-commerce application using AWS Lambda (function-as-a-service model, with sub-second billing) versus hosting the application on AWS EC2 instances in a High Availability architecture (hourly billing).

Serverless computing is on the rise as interest and adoption grow. Tools to manage multiple versions of functions as well as complex service integrations are evolving. Serverless frameworks, as well as commercial pre-packaged functions, are becoming popular, though AWS and Azure will continue to dominate the market for the foreseeable future. Watch this space as it evolves.


Web APIs Explained By Selling Goods From Your Farm

CodeAnalogies Blog

If you have been to a farmer’s market or farm stand, then you can understand the concept of an application-programming interface (API).

If you are new to web development, you probably hear the term “API” a lot.

“I can’t wait until that company releases their public API!”

“That company’s API is a confusing mess.”

“Do they have an endpoint for that data in their API?”

Understanding the concept of an application-programmer interface (API) can be pretty difficult if you are not familiar with concepts like SOAP, HTTP and XML.

So, I wanted to find a way to explain the way that web APIs work as a whole so that when you get into the nitty-gritty technical details, you will understand how it all fits together.

In this tutorial, you are the owner of a farm that sells 5 products- chicken, pork, eggs tomatoes and corn.


In order to understand this…

View original post 1,873 more words

#APIs in the Travel Industry

What is an API?

This is one of the issues we have been dealing with, since the first day of this blog. I started uploading articles and opinions on that, as well as tutorials. Dealing with this question again doesn’t feel like repeating myself, but more like I want to revisit it with a fresh approach.

Most of the web services that are being used these days have an API. As much as this word has become common in the field of information technology a lot of people with no technical background have little to no knowledge of what an API actually is. API stands for Application Program Interface and it is a set or collection of standards, routines, and protocols which help in accessing any software application that is web-based. APIs basically govern the communication between two applications or software. Explained simply, APIs can be considered as doors or windows that allow different data messages to go in or out of different web-based services or applications. The rules of these APIs allow them to control the flow of information and communication is completely governed and controlled. API doors will only be open to the software or applications that have the keys to the lock on the door. One thing that must be clarified over here is that an API does not interact with the user in any way. It is just an application to application interaction tool. The user is neither aware of this communication nor can they intervene with it.

APIs in Online Travel Industry:

The online travel agency in the world is a giant and complex web of several channels, networks, and applications working together simultaneously. The communication between these channels and applications is of paramount importance and the entire online travel industry depends on it. The main reason why any traveling company develops an API is that the application of the company is able to interact with other travel companies and suppliers such as hotels and airlines. Both applications are able to send and receive dynamic information to each other and create a system of communication between them. The information that is usually transferred via APIs are the prices and availability of different travel related product such as airline tickets and availability of rooms. Different suppliers of products in the field of traveling such as hotels and airlines also use API to make sure that their products are being viewed by a large audience.

The importance of APIs in the online traveling industry can be understood by its widespread usage. The whole industry is based on a complex and huge system of APIs that connect different applications and websites and make sure that correct information is always available for the users. Different entities in the traveling industry such as distribution system, traction hubs, reservation systems, merchandising platforms etc. are all connected with each other in a systematic manner. The main aim of this interconnectivity is to make sure that the link between supply and demand is always in the most effective and efficient form. This system is very complex mainly because of the fact that the users on different traveling websites are always expecting fast and accurate results in terms of availability and price. Most of the traveling websites are now also supporting several other facilities for their users such as car rentals, parking spots, local event bookings, tours etc. This adds to the burden of the system and new APIs are to be defined to make sure that the application or system is up to date according to these additional factors as well.

If we look at the overall online traveling industry a lot of information is always being sent and received between various different software and websites. Most of this information is in the API call, no matter if the response is in XML, JSON or YAML. APIs make sure that the transfer of this information is done in the correct and most effective way to make sure that the system is running correctly and no wrong information is being conveyed to the users. Following are some of the major travel industry related APIs.



TripAdvisor proudly calls themselves as the “world’s largest travel site”. They have more than 200 million customer reviews and opinions about different travel-related products such as restaurants, hotels, and airlines. The website of the company is the main thing that has attracted so many customers towards it. The website also gives developers the information about the APIs that the company is using. The developers who are eager to build their own travel-related applications can use The TripAdvisor Content API for this purpose. One of the best things about their API is that it even provides the information about the destination of the data that is being transferred to it. TripAdvisor also offers other APIs that can be used for B2B connectivity. The company is constantly at work to farther improve their system and make sure that their customers are always satisfied when they leave the website.

XML Travelgate:

XML Travelgate is a company that performs XML integrations for various travel-related purposes. The main aim of the company is to make sure that those API services are provided to different travel-related programs based on the three basic principles of cost saving, high service level, and extensive product catalog. The company provides their customers with a market leading technology to make sure that they become successful in the field of the online travel industry. The experts that are working for XML Travelgate make sure that the clients they are working for are able to focus more on the actual business than on the technology that is being used to run it. With dozens of highly satisfied clients from all over the world, this is one of the best companies doing XML integrations in the field of the online travel industry.


Sabre is another big name in the online travel and tourism industry. With clients ranging from airlines to car rental companies and hotels to travel agencies, Sabre has the ability to provide with just the right type of traveling solution for your company. Sabre Dev Studio provides developers with a nice and organized platform on which they can easily design and develop any travel related website or web application. Sabre also provides a number of APIs to their clients and their APIs can be used to feature their different traveling related platforms in different new and already existing applications or websites.

Concluding Thoughts

We are reaching the end of our journey into the Travel API Industry review. It remains in this section to summarize some of the key takeaways from the article in order to reinforce the main concepts. In this article, I did not even begin to scratch the industry, and you can definitely find more in the awesome stack network by Kin Lane, who needs no introduction. The idea behind such articles is that we can discuss our thoughts and our incentives in the business even though we may are not experts in that particular domain.

It is obvious that the Travel Industry has greatly been benefited by the new technology of sharing data through APIs. It has scaled the business to a whole new level of experience for the end users. No matter if you are or just a small house that gets rent for Airbnb. You are still part of the ecosystem and APIs is where your clients will look for before eventually reach you out.


When to #OpenSource or Not

If you’re a developer and have no intentions of ever getting paid for writing code, then deciding between open-sourcing your software or not can be a simple decision. However, if you have any intentions to get compensated for your work, then the decision to open-source or not can be a complicated and long-winded debate which has gone on for decades. On the one side, you have the capitalists/conservatives that sell software for a price and their pricing models are relatively simple to understand especially in commercial and non-enterprize environments i.e. you get this product for this price. On the other hand, you have the open-source socialists/liberals/anarchists, advocating for making software “open”, transparent and most of the time offering it for free. However, for anybody that has ever delved into the open-source debate, they will quickly realize that open-source is in fact not that clear and transparent after all.

It’s all good and well to spew out socialist rhetoric about how we should all be more altruistic by volunteering our time and skills to open and transparent software communities, but once we’ve all had our turn at singing kumba-ya, the truth is that in reality there’s no such thing as free lunch. Meaning that although many open-source enthusiasts pitch the idea of so-called free software, the users will still end up paying for it one way or another, be it in some sort of fee, time, energy and/or frustration. The reason being that in the real world, time equals money and money make the world go round. Therefore, any developer working on a “free” and open-source project still needs to pay the bills, put food on the table and at the very least still have money left over to buy a laptop on which to work on. So how do open-source developers get compensated? Open-source projects typically start off as side-line hobby projects, then perhaps moving on to offering paid for versions and/or charging for services.

Over the years I’ve thought about this debate the countless number of times and like most analytical people I’ve searched far and wide for an absolute answer i.e. is open-source good or bad. When I was younger I leaned more towards the open-source point of view and their anarchist/hippie rhetoric about how corporations are evil, money-grubbing establishments designed to create monopolies and control people’s lives. Now that I’ve gotten older, my view has become a bit more conservative. Maybe it’s got something to do with there being a grain of truth in Winston Churchill’s wise words where he said that “any man who is under 30, and is not a liberal, has no heart; and any man who is over 30, and is not a conservative, has no brains.”

So here’s my attempt at an absolute answer as to when to open-source and when not to:

  • How most open-source projects start off: as the saying goes, “necessity is the mother of all inventions”. By that token, most open-source projects start out from a need/problem that someone has. A developer may want to achieve something that they cannot do with commercial software that is available or they just don’t have the money to purchase commercial software that can perform the given task. While developing this new app for their own needs, it suddenly dawns on the developer that other people may have the same need/problem that their new app can solve. At this point, the developer begins to think about how they could possibly get others to use this new app and possibly capitalize on it. After careful consideration they realise that there’s more to selling software than simply putting a price tag on it i.e. a company needs to be set up, marketing needs to be done, payments need to be captured, orders and invoices need to be created, taxes need to be paid and amongst many other things, all sorts of people need to be hired e.g. marketing, sales, finance, support etc. Starting and managing a company requires a lot of work and responsibility. Due to the fact that a decent amount of capital is required, it also involves a huge amount of risk i.e. it’s not always easy to predict whether or not a software product will be a hit or not. So as opposed to going through that whole nightmare, our friendly developer decides to rather just upload his code to a popular open-source repository that all his friends can access. If nothing else, it will look good on their resume.
  • If the software is a hit: if there proves to be a substantial demand for the software, the developer may begin thinking about capitalizing on it. At this point, the developer will probably be stuck between a rock and a hard place. If he closes down the open-source repository and begins to charge for the software he’s fear is that the users will just continue using the latest open-source version available and never purchase any new versions. Even if there are some people willing to pay for the software, the problem is that the developer will never be able to sell it to enterprise customers because no large company will agree to adopt a product that is being supported by a single individual i.e. it would just be too risky for the company. So it’s a bit of a chicken and egg scenario i.e. you need to generate revenue to hire more people, but customers are hesitant to commit to a one-man show. On the other hand, if he keeps the open-source repository available, then there is no way to make money on it. To get out of this dilemma, most developers in this situation either begin selling services or offering paid for upgraded versions with additional features.
  • Charging for services approach: most open-source developers will write the code for free to develop the software, but if users need any help with specific feature requests, installations, advice or any consulting services, they will be charged an hourly rate or are sold a 1/3 year Service Level Agreement. As a bit of a realist, it is at this point that I start questioning the incentives put in place for this type of revenue stream. I ask myself, what incentives do open-source developers have to produce quality software that is an easy install and use when their primary revenue stream comes from selling services? If charging for services is your only revenue stream on an open-source project, then there is a clear conflict of interest in this approach and I would advise against it. Reason being that what users want is software that is easy to install, configure and use, while at the same time the developers are well aware that the easier the software is to configure and use, the fewer services they will sell. So what you end up with, is open-source software that is counterintuitive and users are constantly left with more questions than answers. In this kind game with these kinds of incentives in place, there is not much that is open and transparent to the users i.e. the software and code are available and free for anybody to use, but nobody knows how to set it up and use it. You may be of the opinion that it doesn’t matter whether there’s a conflict of interest or not, as long as you’re making some money off of your efforts. However, my argument would be that users are not stupid, they always know when there is a conflict of interest and sooner or later they will start posing questions. This approach also creates confusion that results in users asking why you’re doing some work for free while charging for other work. This is where open-source can lack transparency. With the above said, there are some more negative side effects with this approach:
    • Minimal documentation: the whole point of writing documentation is to make it easier for users to understand the process of installing, configuring and using a given piece of software. Given the fact that many open-source software is offered for free, the developers have almost no incentives to write comprehensive documentation i.e. the more difficult it is for a user to get up and running and troubleshoot issues themselves, the more services the developers can sell. What you naturally end up with is open-source software that often has little to no documentation aside from a simple two-page quick start guide. The counter-argument from open-source developers is that “the code is the documentation, just look at the code”. But if we cross over from the delusional hippie world into the real world, we realize that most users are not coders and therefore having the code adds zero value to their lives. Even as a coder myself, if I’m interested in using someone else’s software I will neither have the time nor the interest in doing support on other people’s products. Personally, I just want to be able to click install, use the software and move on with my life because I have enough of my own code to deal with, without having to deal with other people’s broken code.
    • Lower quality of open-source software: in terms of quality, the argument made by open-source purists is that their software is of much higher quality than that of proprietary software. According to them, this is due to the fact that open-source communities are larger and there are more people testing, spotting bugs and fixing them as opposed to small teams that develop proprietary software. This is based on Linus Torvalds’ law that “given enough eyeballs, all bugs are shallow”. That does indeed sound plausible, but on the other hand, it seems to me like a bit of a contradiction to the many open-source companies that rely on services as their primary revenue stream. If the quality of open-source software is so incredibly high, then how do they make their money on services i.e. if there are no bugs to fix, the apps are easy to use and everything just works, then what kind of services are these developers selling to pay the bills? Developers creating proprietary software, on the other hand, have every incentive to write high-quality code and create intuitive user interfaces, because if they don’t, then nobody will buy their software.
  • Paid for upgraded versions approach: an alternative to only offering services is to develop additional features into the open-source software and offer those features at a premium i.e. offering a “free” open-source community version as well as a paid for version with additional features that are enticing enough that make users want to spend money. Open-source can be fantastic when you want to lower your risk while at the same time increase the user adoption rate of your software. By open-sourcing your software you can start a project without having to take on the risk of starting a company, investing capital etc. and if there proves to be a high enough demand for your software, you can then take it to the next level by offering additional features and charging for them. This is the only time I would see open-source as good idea i.e. assuming that you actually want be compensated for your work.

In summary, before open-sourcing your software you should consider the number of features that you have in mind and whether or not there will ultimately be a demand for those features on the market. There are many apps that can be incredibly useful, but beyond their basic features, there are a limited number of additional features that can be developed and incorporated into future paid for versions. A great example would an SDK (Software Development Kit) to interface with third-party application or hardware: there are only so many features you can add to such an SDK. This kind of software with limited useful features should either be open-sourced without any intention of ever making money or it should never be open-sourced, but rather be released and sold as proprietary software right from the start.


Web API Design Part Three: Core Concepts

A nice and simple intro to the basic concepts of REST as they were originally introduced a decade ago. I truly like this approach since it doesn’t go into any implementation details.

How To Train Your Java

Episode 88

Two months ago, we started with motivations behind web APIs and looked at their design from UX point of view. The important conclusion was, that API and its ecosystem is to developers what GUI is to regular web applications users. A month ago, we looked from the scientific point of view at the properties of a modern web systems architectural style, REST, through the lenses of Roy Fielding’s famous Ph.D. dissertation.


Having those foundations, today we are going to get our hands dirty and talk about how to actually get the work done. Today we will talk about resources and representations, naming, relations, HTTP methods, collections, functions and sanity checks.


REST web API is built around exposing representations of resources being part of our system. The distinction is important: resource is some piece of data stored on our system or accessed ad hoc from somewhere else. It…

View original post 1,380 more words

Uniform Interfaces in a Nutshell

The uniform interface constraint defines the interface between clients and servers. It simplifies and decouples the architecture, which enables each part to evolve independently. The four guiding principles of the uniform interface are:


Individual resources are identified in requests using URIs as resource identifiers. The resources themselves are conceptually separate from the representations that are returned to the client. For example, the server does not send its database, but rather, some HTML, XML or JSON that represents some database records expressed, for instance, in Finnish and encoded in UTF-8, depending on the details of the request and the server implementation.

Manipulation of Resources Through Representations

When a client holds a representation of a resource, including any metadata attached, it has enough information to modify or delete the resource on the server, provided it has permission to do so.

Self-descriptive Messages

Each message includes enough information to describe how to process the message. For example, which parser to invoke may be specified by an Internet media type (previously known as a MIME type). Responses also explicitly indicate their cache-ability.

Hypermedia as the Engine of Application State (HATEOAS)

Clients deliver state via body contents, query-string parameters, request headers and the requested URI (the resource name). Services deliver the state to clients via body content, response codes, and response headers. This is technically referred-to as hypermedia (or hyperlinks within hypertext).

Aside from the description above, HATEOS also means that, where necessary, links are contained in the returned body (or headers) to supply the URI for retrieval of the object itself or related objects. We’ll talk about this in more detail later.

The uniform interface that any REST services must provide is fundamental to its design.


The dependency hell in software development



Most software projects depend on other software packages to provide its functionality. Actually, the bigger your software project, the more likely is that you end up having a large number of dependencies either internally between different parts of your code or externally with third-party libraries.

The goal of adding a new dependency to your code is to avoid reinventing the wheel. If there is code already available that does what you want, normally you would prefer to re-use it (there are exceptions, though) rather than investing your time in re-writing new code to solve the same task. On the other hand, once your software project has matured over time and is ready for production it may end up being a dependency for other software projects as well.

Grouping off-the-shelf functions into software packages and defining dependencies between them has been traditionally at the core of software development. It…

View original post 1,949 more words

Advantages of Cloud Computing

We live in a modern, fast-paced world where people want to have all things to be instant. Through the internet, it makes our work faster and convenient. For example, you can have remote access to your files and applications using the internet and it frees you from using storage devices like flash drives. Whereas in the past, people would run applications or programs from software downloaded on a physical computer or server in their building. With cloud computing, it grants people to access to the same kinds of applications through the use of internet.


According to a set of reporters tackling cloud computing, cloud computing is a concept that works hand in hand with mobile computing in order to truly achieve computing on the go. This basically grants users or consumers to have remote access to data, applications, and storage for convenience and frees them from physical hardware needs.


In other words, it is a delivery system that delivers computing. Examples of cloud computing include most of Google’s services like Gmail, Google Calendar, Evernote, Google Maps and so on. For me, cloud computing is a big help, especially that I am a busy person and I can access my files anytime and anywhere. This is a great use either for business or personal means. Cloud Computing is mainly categorized into three services including, software as a service (SaaS), infrastructure as a service (IaaS) and platform as a service (PaaS). Key characteristics of Cloud Computing are on-demand network access, scalability, greater security, measured service, and flexibility. The reporters also shared their reasons why there are several people who move to cloud computing. They mentioned a lot of benefits including unlimited storage capacity, device independence, increased efficiency, increased data reliability, lower computer cost, easier collaboration, etc,. Despite a number of benefits, there are also its disadvantages including it requires a constant internet connection, does not work well with a low-speed internet connection and has possibilities of data being lost or not secured.

Cloud Computing is one of the most popular breakthroughs in IT today. The “cloud” represents one of the most significant shifts that computing has gone through. I think that although cloud computing is lacking a bit in some aspects and needs improvement it is a new model and architecture so it still has an opportunity for future research and expansion.

Nowadays, it is clear that cloud computing has revolutionized how technology is obtained, used and managed. And all of this has changed how organizations budget and pay for technology services.

Cloud Computing has given us the ability to reconfigure quickly our environments to be able to adapt them to changing business requirements. We can run cost-effective services that can scale up and down depending on usage or business demands and, all of this, using pay-per-use billing. Making unnecessary huge upfront infrastructure expenses for enterprises, and balancing the possibilities of being a big enterprise or a new one.



There are multiple and diverse advantages, and most of them depend on the enterprises, the business and the needs they have. But, there are six of them that tend to appear in every case:

Variable vs. Capital Expense

Instead of having to invest in data centers and servers before knowing how they are going to be used, they can be paid when you consume computing resources and paid only for how much you consume.

Economies of Scale

By, using cloud computing, we can achieve a lower variable cost that we would get on our own. Cloud providers like AWS can aggregate hundreds of thousands of customers in the cloud, achieving higher economies of scale, which translates in lower prices.

Stop Guessing Capacity

When we make a capacity decision prior to deploying an application, we usually end up either setting expensive idle resources or dealing with limited capacity. With cloud computing, there is no more need for guessing. The cloud allows us to access as much or as little as we need to cover our business needs and to scale up or down as required without advanced planning, within minutes.

Increase Speed and Agility

Deploy new resources to cover new business cases or implementation of prototypes and POCs to experiment now can be achieved with a few clicks provisioning new resources in a simple, easy and fast way usually reducing costs and time and allowing companies to adapt or explore.

Focus on Business Differentiators

Cloud computing allows enterprises to focus on their business priorities, instead of on the heavy lifting of racking, stacking and powering servers. This allows enterprises to focus on projects that differentiate their businesses.

Go Global in Minutes

With cloud computing enterprises can easily deploy their applications to multiple locations around the world. This allows providing redundancy and lower latencies. This is not any more reserved just for the largest enterprises. Cloud computing has democratized this ability


Learning ~ HTTP/2 World

RT’s Knowledge World

What is HTTP?

  • Hyper Text Transfer Protocol
  • Protocol to transfer of data from a web server to web browser – in many forms/format to communicate with each other over the Internet.
  • Standard for transforming documents on World Wide Web (RFC 2616)

Different methods to transfer the data from client to server

methods**An idempotent HTTP method is an HTTP method that can be called many times without different outcomes. It would not matter if the method is called only once, or ten times over. The result should be the same. It essentially means that the result of a successfully performed request is independent of the number of times it is executed. For example, in arithmetic, adding zero to a number is idempotent operation.

Below is Example of Get method

headersBelow is complete HTTP request and response flow

HTTP_StepsClick to Get complete HTTP reference document  – Headers/Messages/Security/Status

We can transfer almost all…

View original post 421 more words

Is Serverless for you ?

Vijay's thoughts on all things big and small

One of the more recent architecture choices we can play with is the idea of serverless aka FaaS (Function as a Service). Thankfully, it is not hyped like say Machine Learning is. But nevertheless, it is widely misunderstood – often leading to bad design choices. I am just going to list a few questions I have been asked often (or I have asked fellow techies) , and give my point of view on those. I will try to keep this at a level where it makes sense for people who are not full time technologists .

pexels-photo-132037.jpegAre there really no servers?

To begin with the name serverless itself is quite misleading. Your code does not execute in vapor – it still needs servers. From a developer point of view – you choose a provider to handle a lot of things servers do (but not everything) , and you can focus…

View original post 971 more words