I recently decided that I want to build a complete project instead of only experimenting locally. Before I start, I'm trying to understand a few practical concepts: how to host the project, how to create endpoints so a client application can communicate with the server, and how to deploy updates when the program changes. I've mostly worked on my own machine so far. Would Designing Data-Intensive Applications help me learn these topics, or should I start with something more beginner-friendly?
3 Answers
The topics you listed are foundational rather than advanced distributed-systems topics. A good learning path would be: learn one language well, build a small application with a few endpoints, connect a basic client, store data, and deploy it. For updates, you usually build a new version and redeploy it; mobile apps may also require users to install a new client version, while server updates can often happen without users installing anything. You can learn the details gradually as your project grows.
For these questions, pick a framework such as Django, Flask, or Spring Boot and work through its quick-start guide. You’ll see how routes and endpoints are defined, how a client sends requests, and how the server responds. Begin by running everything locally, then deploy the same project to a simple hosting service. Once that works, look into version control, deployment pipelines, graceful server shutdowns, and how database or application changes are rolled out safely.
Designing Data-Intensive Applications is an excellent book, but it focuses on the theory and architecture behind large-scale distributed systems. It probably won’t teach you how to create your first endpoint, deploy a small app, or publish updates. Start with one programming language and a web framework, then follow a beginner tutorial that builds a client, server, and database. After that, learn the basics of a hosting provider and deployment workflows. DDIA will make more sense once you have some practical experience.

That helps a lot. I was mainly trying to prepare before making avoidable mistakes, but it sounds like I should focus on building something first and study the deeper concepts afterward.