How we built Enclaves: Egress Networking
How we built our Enclaves primitive, we dig into our redesign of Enclaves egress networking with iptables.
Note: This blog post is adapted from a presentation originally given at the DevRel Meetup. You can view the original presentation here.
Encryption is complicated. It can be difficult for even the most experienced developers to integrate encryption into their applications. When we launched our platform, we quickly saw the challenges our users faced in understanding how to use our products. Early users struggled to grasp the use cases, integration process, and where our product fit into their tech stack. Some of them mistook us for a compliance tool or misunderstood specific features.
Taking inspiration from one of our north-star companies, we started exploring 'Collison Installations' a hands-on approach where Stripe's founders directly installed and integrated Stripe on users' computers. This allowed us to gather feedback, identify barriers, and gain insights into the developer's stack. While this approach worked great, the COVID-19 pandemic disrupted all methods of in-person support and forced us to find innovative ways to engage with developers remotely.
In the spirit of “Don’t Repeat Yourself,” we asked ourselves, why replicate an experience on a new platform when we already had one that was working? Our internal team already communicated through Slack, so why not extend the same approach to our users? Utilizing Slack Connect, we integrated top-down and bottom-up distribution channels into Slack, creating a support method we call the 'Remote Stripe Install.' Let's consider the experience of Richard Rodger, host of the DevRel Meetup and Evervault user. Richard integrated our products three months ago and encountered an issue deploying one of his functions. When he posted a message about the problem into our shared Slack channel, an Evervault engineer responded and fixed the issue within five minutes, allowing Richard to continue his integration process without disruption. While this level of support may not be scalable, it aligns with the advice of Y Combinator's Paul Graham: "Do things that don't scale." Small companies can gain a competitive advantage by taking on tasks that larger organizations may find too costly or challenging. Exceptional developer support can be a differentiator that larger companies often struggle to achieve.
At Evervault, we have automated our entire customer interaction system to streamline the support process. Our sales team operates in a rotation similar to support agents. They respond to messages from our customers using emojis, which are then sorted by Slack bots into specific channels based on their nature. Messages marked with the 'eyes' emoji are directed to an engineering support channel, while non-engineering issues are sent to the relevant private internal channel. Drawing from the expertise of our employees who have previously worked at Slack, we use a specific organizational system for our Slack channels, facilitating scalability and ease of use.
Our engineers undergo an on-call rotation every 12-14 weeks, temporarily stepping away from their product team to focus on support. When an on-call engineer can immediately address a question, they do so. Otherwise, they consult the person responsible for the relevant product to ensure accurate and efficient assistance.
Having shared Slack channels with customers has brought about several benefits, including:
We've observed a notable difference between communication in Slack and Discord. In public forums, developers tend to be more reserved, withholding details about their frameworks and configurations. However, within private Slack channels, they are more open and willing to provide valuable information on their architecture. By fostering an environment of trust and confidentiality, private Slack channels empower developers to contribute their expertise and actively participate in the continuous improvement of our offerings. Our Discord serves as more of a community, while Slack is a support channel.
When invited to a private Slack channel, some developers may mistakenly assume it's an upsell for an enterprise product, often a premium support tier SLA offering from other companies. We make sure to emphasize that at Evervault, our private Slack channels are designed to provide personalized support to individual engineers regardless of whether they are solo entrepreneurs or members of a 50-person team.
Our journey to building and scaling Engineer-to-Engineer support at Evervault has been a transformative experience. By leveraging the shared Slack channels, we have bridged the gap between our team and developers, providing fast and effective support throughout the product integration.
At Evervault, we firmly believe building strong relationships with developers and providing unparalleled support is paramount for our success. As we continue to grow and evolve, we are committed to refining our Engineer-to-Engineer support model, trying new approaches that enable us to deliver exceptional experiences and empower developers to build with confidence. We’d love to hear more about what you’re doing to support developers in having a better experience using your products — let us know what you’ve found useful.