Ask HN: What are must-know concepts for back end development?
There are a number of concepts that are worth learning about at a high-level if you want to learn about building large-scale projects. Most modern/large companies use some/all of the following to build their backends:<p>- Load balancers<p>- Web servers<p>- Caches (eg. Redis, memcached)<p>- Databases (relational, non-relational, document)<p>- Search datastores (eg. Elasticsearch, Solr)<p>- Log/event/message processors (eg. Kafka)<p>- Task queues/task processing libraries<p>- Periodic jobs (eg. cron)<p>If you dig into any of these there's a ton to learn, especially around looking into the underlying technologies used to build these higher-level systems.<p>There are also more conceptual things that are part of building/maintaining backend systems. These are a bit fuzzier, but I would say are also as important as the specific technologies used:<p>- Reliability<p>- Monitoring<p>- Observability<p>- Error/failure handling<p>- Migration strategies<p>- Data normalization/denormalization<p>- Horizontal vs. vertical scalability<p>This is by no means a complete list, but these terms are enough to get you in the right ballpark of ideas and start learning. I think highscalability.com is a great place to read about how other companies have built backend systems to solve specific problems. They have a massive list of quality articles written about various backend systems at scale.