ASK HN: Advanced API Development, Advice Needed

I've played with python and flask a lot, but I've never developed a truly scalable API. I would like to know what are the actual API practices, languages or frameworks used at API companies like Stripe, ScaleAI or Plaid.

Where I can learn more? any books?

Thanks

9 points | by vabahe7646 1167 days ago

7 comments

  • segmondy 1166 days ago
    Scalable API is not about the language or framework. It's about system design. If you wish to scale, you have to know how to design to scale. So research and read up about system design, it comes down to knowing how to cache, how to use queues to take off load off your API, deciding on async and sync operations, understanding distributed systems, how to split work and data across systems. Understanding when to use NoSQL. On practices, good software engineering practices apply irrespective of if it's an API or desktop software. On frameworks usually don't, especially to ORMs. Most frameworks are heavy, but if you must, then use what's battle tested and avoid the new shiny things.

    Books - designing data intensive applications, any good book on queueing theory. Blogs - I believe are the best, Netflix, Facebook, Google, Uber, any of the big companies that share how they build their systems, you will pick up plenty of knowledge. Some talks from conferences, like Qcon & Strangeloop, Oreilly Arch.

    • potta_coffee 1166 days ago
      +1 for Designing Data Intensive Applications, it's a phenomenal book that's helpful if you've never scaled before.
  • clusterhacks 1166 days ago
    I enjoyed the Amundsenn book mentioned by irene_t and the collection+json specification, but found that my API consumers ignored the links in the collection+json response in favor of hardcoding URLs in their consuming apps.

    Although my swing at RESTful API development wasn't particularly successful I do like the book. It helped me think more about the HTTP protocol and the well-defined nature of HTTP response codes.

    I HIGHLY recommend the Clojure liberator library with its decision-graph model - it made my API development so much easier to reason about and maintain with respect to the HTTP response codes. I actually found just looking at the decision graph to clarify some of my thoughts and questions on HTTP-based API design.

  • atmosx 1165 days ago
    I would start from here: https://cloud.google.com/apis/design

    Flask is most likely fine for your use case. Keeping in mind that premature optimization is the fastest way known to the engineering folk to kill a project swiftly.

  • ryanchants 1165 days ago
    I picked this up recently, but haven't started working through it yet: https://www.manning.com/books/api-design-patterns
  • irene_t 1167 days ago
    Hey, check out this book, should be helpful https://www.amazon.com/RESTful-Web-APIs-Services-Changing/dp...
  • farenganick 1167 days ago