Today we are deploying an upgraded CORE infrastructure on our sandbox. In addition to solving some scaling challenges we faced, the new system adds some exciting features that I’ll talk about here, with many more to come.
Last year Synapse partnered with more than a hundred developers to process over a billion dollars in ACH, verify half a billion identities, and open millions of accounts. This taught us some meaningful lessons about building scalable software, and we applied those lessons by making the following improvements to our core infrastructure:
Micro-services + Orchestration:
We have more than 50 micro-services, that cover everything from verifying identities to creating accounts. Instead of deploying each micro-service on its own VM as we scale, we decided to containerize our applications and deploy our apps using orchestration layers.
Moving to this model allows us to rapidly prototype and deploy new apps to scale.
Most orchestration layers these days have built in load balancing, basic health checks and automated failure recovery. As a result, all of our apps (large or small) are highly available by default, which translates to increased uptime for all the services.
Increased Asynchronous processing (Faster response times):
All developers love faster response times, so as we built our new CORE, we focused on increasing asynchronous processing. We now process the bare minimum on the main thread and the majority of the logic asynchronously, resulting in substantially reduced response times. I’ll elaborate on this in a separate blog post in the near future.
Continuous Integration and Delivery:
As we double down on micro-services, we want to increase the frequency of releasing fixes and launching new features. With the new CI/CD model, our engineers will be able to push code to production at their own pace. This means faster implementation/response times on your feature requests.
Our ledger used to store currency as a float. This was a challenge in that it caused precision problems in the ledger and required batched rounding operations. In the new system the base unit will be centi which means we can now store balances & transaction amounts in cents instead of dollars for dollar currencies.
In addition to the above mentioned infrastructure improvements, we have also added some much needed features to the API:
OAuth Key Scopes:
OAuth keys can now be issued for specific scopes. For example, a developer can issue an OAuth key that allows the user to “create a transaction” only. [API Link]
Improved Users POST:
Developers can now create a user and add their KYC info all within a single POST API call. No need to POST and then PATCH. [API Link]
Login in OAuth Calls:
Now developers can supply username and password to generate OAuth keys as well. This feature was previously only available in v3.0 APIs. [API Link]
No Fingerprints needed in non-OAuth calls:
Once an OAuth key is generated the developer does not need to continue to supply the user’s device fingerprint with every API call to authenticate the user. The OAuth key alone is sufficient.
Timeline in Nodes:
Now nodes have a timeline object as well (just like transactions). This adds a level of much needed transparency on the node permission process. If the node was locked due to incorrect micro deposit attempts, for high risk or other reasons, developers will be able to see this in the timeline object. [API Link]
More Sandbox Test Values:
We have added more test values on sandbox. These include test values for all document types, as well as more permutations of test values for bank logins. [API Link]
We are thrilled about this release and hope you’ll agree that it offers developers a better product and builds the foundation for shorter development life cycles for future releases.
PS: Everything is backwards compatible, so existing clients don’t have to worry about changing anything. We do, however, recommend running your integration tests on our sandbox environment. If anything breaks, please don’t hesitate to reach out to us at email@example.com.