DoorDash: Migrating From Python to Kotlin for Our Backend Services

This page summarizes the projects mentioned and recommended in the original post on /r/programming

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • benchmarks

    Some benchmarks of different languages

    Also cool to note that Kotlin is one of the fastest GC'd languages, up there with D and Nim. Surprising considering the JVM.

  • python_backend_template

    Discontinued Quickly create and deploy AWS stacks using CDK.

    In general I think well written Python avoids the problems DoorDash faced. I've created a GitHub template so all my products start in a clean way: https://github.com/hbrooks/python_backend_template

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • gomacro

    Interactive Go interpreter and debugger with REPL, Eval, generics and Lisp-like macros

    For our use (debugging and running small scripts to update data), gomacro should work well enough, despite being an "almost complete" Go interpreter. This isn't the same as the Python REPL which uses entirely the same code to run, but it should be up to the task.

  • Kategory

    Λrrow - Functional companion to Kotlin's Standard Library (by arrow-kt)

    If you need to handle stuff like that, use Arrow.

  • Rope

    a python refactoring library

    Both PyCharm and the Python Language Server will use type hints to help in refactoring. PLS uses https://github.com/python-rope/rope/blob/master/docs/overview.rst#type-hinting

  • typeguard

    Run-time type checker for Python

    typeguard

  • beartype

    Unbearably fast near-real-time hybrid runtime-static type-checking in pure Python.

    beartype

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • mypyc

    Compile type annotated Python to fast C extensions

    I'm also more excited to see where mypyc goes.

  • Quasar

    Fibers, Channels and Actors for the JVM (by puniverse)

    I'd say because of Erlang. Loom's architect was building a bytecode-modifying (with a javaagent) lib named Quasar before he joined Oracle. The project page mentions a news titled "Introductory blog post: Erlang (and Go) in Clojure (and Java), Lightweight Threads, Channels and Actors for the JVM." in May 2, 2013.

  • react-wasm-github-api-demo

    A demo application to serve as a template for your Rust & React needs. With a sample GraphQL backend.

    I'm not sure what your use case is, and anyway, mine's very different, but I do have a working implementation running in my wasm-template (that's a web client, but the GraphQL stuff is all in Rust. Look into the backend folder.)

  • SDKMan

    The SDKMAN! Command Line Interface

    You don't seem to have much knowledge about either Java or Kotlin. Oracle's JDK is not the most used today by a large margin. The main distribution of Java is OpenJDK... but there are many companies that distribute customized openJDK buillds, like Azul, BellSoft, SAP, Amazon, and even Microsoft itself (all are free to use, with different paid support plans for those who need it). If you want to try any of these builds, it takes one command once you install SDKMAN!:

  • cargo-update

    A cargo subcommand for checking and applying updates to installed executables

    So while it may take a while for some, it's already absolutely fine for me to compile my projects in a few seconds or a minute. I install all my related tooling via cargo install and update it via cargo install-update -a ( https://github.com/nabijaczleweli/cargo-update ) so I frequently/daily build different Rust projects and I'm quite ok with the compilation times.

  • vector

    A high-performance observability data pipeline.

    FWIW, we implement both a GraphQL server and client in Vector -- here's the GraphQL client code: https://github.com/timberio/vector/tree/master/lib/vector-api-client

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts