FaaS, iPaaS and Jamstack — The best technologies for web integrations in 2021
Integrations have been a staple in the IT industry for eons. Even in the shorter timeframe of online and web applications, systems integrations have been a common item in implementation project agendas for decades. Integrations are the workhorse that make the world go round, tirelessly passing data from one system to another.
Your holiday shopping order details, for example, get passed from the merchant to the payment provider and back, only to be passed onwards to the fulfilment partner. The fulfilment partner checks warehouse stock details and eventually sends a message to the selected courier for delivery of the goods. The courier integrates to messaging services to let you know about the whereabouts of your parcel through an app or maybe through a telecom provider via SMS. Once delivery is successful, a message is passed back to the merchant to let them know the transaction is complete.
The whole is greater than the sum of its parts
Even without getting into details of the subprocesses or the complexity of handling returns (shipping the goods back, getting your credit card refunded, etc.) it is easy to see that as a whole, the mundane task of ordering a pair of Moon Boots is quite complex. So much so that it I think it is safe to argue that the world is now too complex for any one of us to fully understand. In a sense machines have taken over.
Because of all of the above, a working integration is something people are reluctant to change. This is why the world continues to rely on humble integrations from the days of yore. A Perl script processing CSV files sent via FTP was how we partied in 1999 and the after party continues to this day. But every party must come to an end and when it does, there are kisses, promises and waves goodbye. Well, maybe not for this bash.
Integrations are essentially the necessary evil that in itself is not impressive, but as a component of something large it enables making the seemingly impossible possible. Ibexa DXP is often used to provide the customer-facing layer in complex online web services and applications where integrations play a crucial role. This is why it is imperative for us to keep up to date on the latest trends in the market.
If you do have the luxury of kicking off a new integration project from a clean sheet in 2021 there are some interesting options now on the market. Let's take a quick look at three contemporary integration technologies: FaaS, iPaaS and the Jamstack
Functions for serverless integrations
The concept of FaaS is not that far from the traditional web hotel. You upload your code somewhere and the provider manages everything for you. Web hotels are often sold at a fixed price and don't often provide the Service-Level Agreements (SLAs) suitable for enterprise-grade business-critical services that integrations tend to be. The major cloud giants on the other hand provide high availability from data centers across the planet for near infinite scalability at pricing that scales linearly by usage.
In addition to pure computing resources AWS, Azure and GCP all provide other services like databases, queue service, artificial intelligence services and more. Integrating to these services from any given cloud vendor is easy, and if you've made a strategic choice of going with one provider it is also clear from a management perspective. You get one bill for all the services and resources used each month.
If you don't want to bind yourself to a single vendor there are also more open alternatives available. OpenFaaS is a cloud-agnostic platform for running functions on any infrastructure. You can subscribe to OpenFaaS as a fully managed solution similar to the offerings from Amazon, Google or Microsoft, but you can also host it yourself on either cloud infrastructure or even on-premises. Self-hosting does take away a lot of the appeal of FaaS, so I would be weary of going for it without a very good reason.
iPaaS enables low-code integrations
Integration Platform as a Service (iPaaS) is a subscription to a low-code development platform focused on integrations. These are fully fledged development environments complete with some ready-built functionalities and a visual interface for building integrations without ever laying eyes on the syntax of the raw computer code created.
Cloud-based integrations are an emerging trend in IT and there are some established products already on the market. Dell Boomi, Informatica and Workato are prominent iPaaS players and traditional vendors like Microsoft are also in the market with their Azure Integration Services offering. Unlike the lower-level FaaS approach, iPaaS products provide a complete package that can be deployed as a single solution that can be managed and monitored via a unified dashboard. This is a compelling promise.
iPaaS may be a contemporary technology, but it does have options for connecting to legacy components. For example, you can have periodical checking for changes to XML files on a file server and trigger processing them automatically. This means that deploying a new iPaaS service to your business can be done gradually, even if the environment you are working in has a long history behind it. Big ships turn slowly.
One big advantage of iPaaS for businesses is the ecosystem of prebuilt connectors to popular online services. This makes a lot of common integration cases like, say moving data from a Google Sheets document to Salesforce is trivial. Get some API keys, do a quick flow using a visual editor and boom, you're done. Easy connectivity is a competitive advantage for vendors, so it is in their own interest to provide best-in-class connectivity out of the box. Customers can sit back and enjoy the benefits.
The browser is now an integration platform
I'm quite sure including Jamstack in the list of integration technologies will rise some eyebrows, hopefully even sparking some souls to read this post. This is similar to the tongue in cheek proclamation of the iFrame being the leading enterprise integration technology in 2013. At that time the iFrame was commonly used to include snippets of websites from other apps. This worked (and still does), even though it had limitations.
The browser then executes the given resources and makes calls to remote APIs as the user uses the application. The client has taken the role of the integration platform, merging data from multiple sources and creating a user experience from them. To a limited degree this has been possible before, but what has made it relevant today is the proliferation of publicly available APIs on the web such as Headless CMSes, commerce platforms, ERPs, CRMs and other back office systems for businesses.
In the past, integrations were a pure play for the server side, and client side integrations on the web are still not suitable for everything. With the client running the program code you ultimately should not trust any input or output from there, since functionality and data of the application can be freely manipulated. Seemingly innocent and naive mistakes could have significant implications in this context.
Consider a B2B eCommerce solution where prices vary based on the user. Prices are provided by an ERP backend based on the user's assigned business account. The commerce solution managing the transactional process (add to cart, complete order, etc.) is unaware of the prices. In a client-side integration, pricing data would be sent to and managed by the client and passed forward to the commerce system. Trust is placed on the client, where the user could alter the pricing to be anything they want.
In the above example you could make the transaction secure by making the commerce system verify the pricing from the ERP with trust, but verify policy. But this would make the simplicity of a client only integration a moot point, since you would need to have both client and server side integrations within your implementation.
Mix and match FaaS, iPaaS and Jamstack
Ultimately there is no one size fits all in systems integrations. Sometimes the best choice is to use one technology, sometimes a mix of all of them. If you're launching a fairly simple B2C site with content and commerce, probably Jamstack is a great option to integrate a Headless CMS and Commerce API to provide a fluid user experience.
If you're looking to manage and integrate dataflows behind the scenes, using an iPaaS might be the perfect solution to adopt gradually or when starting from scratch. FaaS could be an ideal way of modernizing a tried and tested legacy integration for more capacity and reliability by porting an ancient self-hosted Perl script to Python.
A use case where combining all three could be an architecture where back office data flows are managed by an iPaaS, a simple FaaS would be used as a gateway for merging a number of backend APIs to a trustworthy single API for a Jamstack front end to consume and interact without worries about malicious code on the client.
Integrations are a strategic business decision
Integrations are, above all, a strategic choice. Because of the complexities and risks involved, implemented and functioning integrations are likely to be around for years — even if they are not that great. Make sure you have some wiggle room to switch vendors if needed. For example, with FaaS there is a risk of vendor lock as the proprietary solutions have made the portability of implementations questionable.
But in the recent times there has been some changes towards a more open environment in cloud computing, with AWS giving a nod to multicloud. Amazon also recently enabled Lambda to run containers making it feasible to migrate functions running on Deno from Amazon to Google Cloud Run. And maybe the next big thing.