How to QA an AWS Kinesis Integration
Q&A with Devesh Singh, Data Quality Engineer @ Personal Capital
We sat down with Devesh Singh to hear about a recent initiative he participated in to adopt AWS Kinesis into the PCap tech stack:
Can you describe how Personal Capital uses Kinesis?
Primarily we use Kinesis for processing app data in real-time — where previously we had a lag between an event occurring and our backend software handling events. So we can collect many different events related to a user’s activity related to our application, their profile or their finances and then generate powerful insights and messages to help them gain more clarity and confidence about their financial life.
Switching over to Kinesis was a big undertaking for us with plenty of risks, so it was essential to involve QA in verifying that our infrastructural changes didn’t break anything!
What type of events does Personal Capital process in real-time?
Many, but here are a few examples:
- Events occurring in our web and mobile applications
- Events relating to our new initiative to encourage our customers to refer their friends
- Events relating to users adding/editing/removing their financial accounts for tracking their net worth
How does Personal Capital verify whether our integrations with AWS Kinesis work as expected?
Primarily we’ve been focused on end-to-end testing.
For example, we’ve got a set of rules that say that if a sequence of events occur in our data stream, then a specific action should be taken.
So in a staging environment, I would perform the series of actions in the dashboard that are expected to trigger an action.
Since we stream our Kinesis events into a persistent data store, we can verify that the events have been logged and that the action has been performed (in our record of completed actions).
This makes it much easier to perform this type of end-to-end testing.
What’s the most challenging aspect of QAing integrations with AWS?
Definitely the most challenging part is that it requires a deep understanding of AWS internals.
We often have to surface data that is opaque and hard to access from our AWS database servers.
We’ll share more as we leverage different AWS services!