An open API service indexing awesome lists of open source software.

https://github.com/djeada/backend-engineers-guide

This repository is a collection I've put together, focusing on various backend engineering topics. It's a place where you can find information on API design, databases, deployment, distributed computing, networking, performance optimization, security, and even more specialized areas.
https://github.com/djeada/backend-engineers-guide

Last synced: 10 months ago
JSON representation

This repository is a collection I've put together, focusing on various backend engineering topics. It's a place where you can find information on API design, databases, deployment, distributed computing, networking, performance optimization, security, and even more specialized areas.

Awesome Lists containing this project

README

          

# Backend Engineer's Guide

This repository is a collection I've put together, focusing on various backend engineering topics. It's a place where you can find information on API design, databases, deployment, distributed computing, networking, performance optimization, security, and even more specialized areas. Each topic is broken down into a Markdown file, found in the notes directory. Here, I've tried my best to provide detailed notes, explanations, and examples.

I try to keep these notes updated and expanded regularly, aiming to provide up-to-date, relevant information. Of course, if you have any contributions or suggestions, they're more than welcome. We're all learning together, after all.

## Getting Started

To begin, clone the repository to your local machine and navigate to the "notes" directory to access each topic's Markdown file.

```
git clone https://github.com/your_username/Backend-Engineers-Guide.git
cd Backend-Engineers-Guide/notes
```

## Notes

### API Design

| Topic | Notes |
| ----------------------------- | --------------------------------------------------------------------------------------------------------- |
| Overview | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/01_api_design/01_overview.md) |
| REST | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/01_api_design/02_rest.md) |
| GraphQL | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/01_api_design/03_graphql.md) |
| gRPC | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/01_api_design/04_grpc.md) |
| Stateful vs Stateless Applications | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/01_api_design/05_state_management.md) |
| Encoding and Data Transmission | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/01_api_design/06_data_transmission.md) |

### Network Communications

| Topic | Notes |
| ----------------------------- | --------------------------------------------------------------------------------------------------------- |
| Real-time Communication Methods | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/02_network_communications/01_overview.md) |
| TCP vs UDP | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/02_network_communications/02_tcp_and_udp.md) |
| HTTP Protocol | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/02_network_communications/03_http_protocol.md) |
| WebSockets | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/02_communication_protocols/04_web_sockets.md) |
| Performance Metrics | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/02_network_communications/05_metrics_and_analysis.md) |

### Web Servers

| Topic | Notes |
| ----------------------------- | --------------------------------------------------------------------------------------------------------- |
| Web Server Overview | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/03_server_technologies/01_web_server_overview.md) |
| Static and Dynamic Content | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/03_server_technologies/02_static_dynamic_content.md) |
| Tomcat | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/03_server_technologies/03_tomcat.md) |
| Apache | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/03_server_technologies/04_apache.md) |
| Nginx | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/03_server_technologies/05_nginx.md) |
| Forward Proxies | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/03_server_technologies/06_forward_proxies.md) |
| Reverse Proxies | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/03_server_technologies/07_reverse_proxies.md) |
| Load Balancing | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/03_server_technologies/08_load_balancing.md) |

### Databases

| Topic | Notes |
| ------------------------ | ----------------------------------------------------------------------------------------------------- |
| Types of Databases | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/04_databases/01_types_of_databases.md) |
| Transactions | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/04_databases/02_transactions.md) |
| Indexes | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/04_databases/03_indexes.md) |
| Isolation Levels | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/04_databases/04_isolation_levels.md) |
| Data Warehousing | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/04_databases/05_data_warehousing.md) |
| Replication | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/04_databases/06_replication.md) |

### Caching

| Topic | Notes |
| ------------------------ | ------------------------------------------------------------------------------------------- |
| Caching Strategies and Techniques | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/05_caching/01_caching_strategies_and_techniques.md) |
| Redis | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/05_caching/01_redis.md) |

### Data Processing

| Topic | Notes |
| ------------------------ | ------------------------------------------------------------------------------------------- |
| Pub Sub vs Queue | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/06_data_processing/01_pub_sub_vs_queue.md) |
| Messaging System Integration | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/06_data_processing/02_messaging_system_integration.md) |
| Batch Processing | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/06_data_processing/03_batch_processing.md) |
| Stream Processing | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/06_data_processing/04_stream_processing.md) |

### Security

| Topic | Notes |
| ------------------------ | --------------------------------------------------------------------------------------- |
| Protobuf | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/07_data_formats/01_protocol_buffers.md) |
| XML | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/07_data_formats/02_xml.md) |
| JSON | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/07_data_formats/03_json.md) |
| YAML | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/07_data_formats/04_yaml.md) |

### Security

| Topic | Notes |
| ------------------------ | --------------------------------------------------------------------------------------- |
| Auth | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/08_security/01_auth.md) |
| TLS | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/08_security/02_tls.md) |
| Security Vulnerabilities in Backend | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/08_security/03_security_vulnerabilities.md) |
| Security Best Practices and Measures | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/08_security/04_security_best_practices_and_measures.md) |
| Third-Party Cookies Vulnerabilities | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/08_security/05_third_party_cookies_vulnerabilities.md) |

### Deployment

| Topic | Notes |
| ------------------------ | ---------------------------------------------------------------------------------------------- |
| CentOS Digital Ocean | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/09_deployment/01_centos_digital_ocean.md) |
| Static Python Website | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/09_deployment/02_static_python_website_netlify.md) |

### Distributed Systems

| Topic | Notes |
| ------------------------ | ----------------------------------------------------------------------------------------- |
| Coordination Services | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/10_distributed_systems/01_coordination_services.md) |
| Gossip Protocol | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/10_distributed_systems/02_gossip_protocol.md) |
| Linearizability | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/10_distributed_systems/03_linearizability.md) |
| Concurrent Writes | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/10_distributed_systems/04_concurrent_writes.md) |
| Operational Transform | [](https://github.com/djeada/Backend-Engineers-Guide/blob/main/notes/10_distributed_systems/05_operational_transform.md) |

## Refrences

Here are some recommended resources for learning more about backend engineering:

* [Node.js API Design](https://www.cs.unb.ca/~bremner/teaching/cs2613/books/nodejs-api/)
* [RESTful API Designing guidelines](https://restfulapi.net/)
* [Database Systems Concepts](https://www.db-book.com/)
* [Distributed Systems for Fun and Profit](http://book.mixu.net/distsys/)
* [Google Cloud Platform Documentation](https://cloud.google.com/docs)
* [AWS Documentation](https://aws.amazon.com/documentation/)
* [Nginx Documentation](https://nginx.org/en/docs/)
* [The Twelve-Factor App](https://12factor.net/)

## Contributing
We welcome contributions to this guide! If you would like to contribute, please create a pull request. For major changes, please open an issue first to discuss what you would like to change.

## License
[MIT](https://choosealicense.com/licenses/mit/)