Technologies to invest in early as a CTO

1 min read

Startups move fast and iterate to find product market fit. In doing so, there is less focus on developing foundational systems. Technical leaders focusing on common systems like framework/language, database, cloud vendor and CI/CD.

Seeing Uber’s tech stack growth over the last 8 years, here are my observations to supercharge your tech stack down the line. Adding these systems as an after-thought is extremely expensive

Tracing

With distributed systems and micro-services, the call graph data for your systems are extremely critical to debug failures, latencies and dependencies between systems. Integrating this across various tech stack as an after thought is a large undertaking. Baking tracing into your development framework from day one will give you the advantage of using it when the day comes.

Look at systems like jaegertracing.io, zipkin.io and vendor agnostic spec like opentelemetry.io

Tenancy

Every incoming request can be for a production or a test user. It could also be customer A vs customer B. Investing upfront to help your systems distinguish between different tenants at an individual RPC request will give you a super power down the line.

Having tenancy will help you with product isolation within a specific cohort using tenancy, experimentation, testing, intelligent routing, reliability by scaling specific tenants larger than the other, and more. Typically tenancy gets injected into the tracing information.

Dynamic Routing

Once you have a tenancy, in order to achieve the various benefits discussed above, you will need a service mesh that is dynamic and programmable. Make the systems like HAproxy, nginx or other proxies deployable with configuration or use a programable service proxy like www.envoyproxy.io

The outcome of all the above will be easier tracing, isolation, debuggability, and testing allowing your teams to innovate at a breakneck pace post MVP.