Building Integrations with Serverless in an Event-Driven Architecture

Sagar Neeli
Jetty Product & Engineering
3 min readDec 2, 2021

Introduction

In today’s highly integrated world, engineers are constantly building solutions that allow users to interact through multiple software platforms. The simplest example is a share button — different users may want to share through LinkedIn, Facebook, Instagram, or just by copying a link. More complex examples are things like password managers: users want to save and retrieve passwords on every device (e.g. smartphone, tablet, desktop) or browser (e.g. Chrome, Safari, IE) that is available to them. The same user may be using multiple different platforms.

Given this rising trend in integrated software and the complexity that brings, how do you architect a general solution that can work for many different platforms?

Well at Jetty, we do exactly that!

We follow a very generalized approach to manage our integrations with several real estate partners. Our partners use third-party property management software platforms (aka PMS) to manage residents at their rental properties, and we have built a scalable solution that can interact with these platforms and sync all the relevant information within Jetty in an efficient manner. Doing so helps us to:

  1. Track residents moving in or out of partner properties,
  2. Track residents purchasing policies through Jetty Deposit or signing up for Jetty Rent, and
  3. Communicating information back to the partner’s property management portal so that partners can see what is happening within their system.

High-level architecture

We leverage Amazon Web Services (AWS) to manage our infrastructure needs, use the serverless architecture to run most of our services in the cloud, and follow an event-driven pattern to communicate between Partner’s PMS and services within Jetty.

Using such a system enables us to build integrations faster with less duplication among different property management systems. It also allows us to constantly propagate the changes that happen within Jetty across all the partner integrations.

How does it work?

Serverless Integrations at Jetty

We have several events that are triggered daily; some occur when any changes in resident data are detected in the partner PMS — these are called PMS Triggered Events. The rest occur when changes in data are detected within our system — these are called Jetty Triggered Events.

PMS Triggered Events invoke a set of Step Functions that run for every partner. These step-functions connect to a partner’s PMS programmatically using their API and pull all the necessary information to store it within Jetty’s database.

For example, “When property managers go to their property management platform to add new residents or update existing residents’ information, like an email address or phone number, the information is synced with Jetty using the step functions. We can then use this information to confirm that a user can purchase a Jetty Deposit policy.”

Jetty Triggered Events invoke a shared lambda function that consolidates resident data across different PMS’ and stores it within our database using internal services. It standardizes the data so that we can sync it to the respective Property Management systems.

For example: “If a Jetty policy gets purchased by a resident under a Partner property, the related policy information is uploaded back to the partner PMS.”

What are the advantages of this approach?

  • Shared components mean a PMS-agnostic feature can be built once and applied to all PMS integrations.
  • We can scale our system to integrate with different partners and apply the same logic to pull resident data.
  • It makes testing easier by isolating Jetty functionality from the specific implementation within a PMS
  • We can isolate services that communicate with a specific PMS.
  • It standardizes the access patterns with the API and limits updates from many places at once.
  • We can build robust shared components that can be scaled effectively.

Concluding thoughts

Building a solution to interact with multiple software platforms and communicate necessary information in a unified fashion has not always been easy. This is how we approach the problem today, and it’s just one of the many exciting challenges we are solving at Jetty. Our solution demonstrates how we manage and scale a highly integrated process into a maintainable system that creates business value by addressing user needs.

I hope that was helpful; if you found any of this interesting you should check out our careers page!

--

--