ооооочень обширная тема. прям вот так... ссылку. очень сложно.
можно начать с так называемой трехзвенная архитектуры:
1. Модель. Хранения данных. Реляционные данные. Не реляционные базы данных, ака - No SQL. транзакции, нормирование данных. OLAP vs OLTP, шардирование. индексы. и тд и тд
2. Сервер - серверный язык программирование. Паттерны Объектно ориентированного программирования. функциональное программирование. Интеграционные шины. Сеть (OSI уровни). http, rest, soap, rpc. веб серверы. реверс прокси. балансеры. кешы (L4-L7). горизонтальное vs вертикальное масштабирование.
3. Клиент - веб браузер. JS - дефакто стандарт. как работает браузер, по сути он выступает Операционной Системой.
4. Линукс. Среда выполнения кода для бэка.
4.1 Контейниризация. Докер.
5. Безопасность. JWT, oauth, openID, ldap, ssl и тд
от проекта к проекту, есть знания, практика, которую набираешь только опытом.
1. как оценивать задачу, в сроках, в футболках, в планетах и тд
2. как работать с командой, согласованность, merge requests, код стайл, линтеры
3. тесты
4. как делать рефакторинг? как его продать менеджеру? правило бой скаута - оставь файл после себя лучше чем было и тд.
———————————————————————-
материалы. просто рандом полезного для себя:
1. знания по computer science нужны. Подборка из топовых бесплатных курсов, чтобы можно получить степень в Computer Science:
https://github.com/ForrestKnight/open-source-cs2. Еще один путь, как получить степень в Computer Science самому -
https://github.com/ossu/computer-science3. Книга про паттерны в Java EE, кто-то скажет что устарело, но есть знания которые все еще полезны, выборочно по изучать можно -
https://habr.com/ru/company/piter/blog/269141/4. JVM сама по себе очень интересная платформа, там есть и Garbage Collector, и компиляторы разные. по листать и найти что-то интересное для себя -
https://github.com/deephacks/awesome-jvm#readme5. Java мощный язык и инструмент, ознакомиться, и найти что-то интересное для себя -
https://github.com/akullpp/awesome-java#readme6. Курс по java и около того -
https://github.com/rybalkinsd/atom7. Дизайн паттерны реализованные на Java -
https://github.com/iluwatar/java-design-patterns8. Подборка интересных выступлении в области Computer Science -
https://github.com/JanVanRyswyck/awesome-talks#readme9. Joel Spolsky в целом пишет много чего интересного в формате эссе, один из тех что понравился мне, для вдохновения -
https://www.joelonsoftware.com/2006/09/07/a-field-guide-to-developers-2/10. Популярный Roadmap, про Web -
https://github.com/kamranahmedse/developer-roadmap11. Нравится С++? отличная специализация по С++ из 5 больших курсов -
https://www.coursera.org/specializations/c-plus-plus-modern-development12. курсы по вебу -
https://www.theodinproject.com/13. еще курсы -
https://hackr.io/14. коллекция полезного видео про Java -
https://habr.com/ru/company/golovachcourses/blog/215275/15. про Fullstack -
https://fullstackopen.com/en/——————————————————————————
а если интересно не только веб, но как делаются "серьезные" и большие системы:
1. White Paper про Google File System -
http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf2. MapReduce -
http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf3. А если хочется узнать про распределенные системы, то определенно стоит изучить парадигмы Bigtable - Bigtable:A DistributedStorageSystemforStructuredData -
http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/chang06bigtable.pdf——————————————————————-
очень интересная статья про жизнь продукта на проде. так как продукт/проект - это не только написание кода.
https://queue.acm.org/detail.cfm?id=2353017———————————————————————
как получить знания? как улучшить свои знания? как углубить свои знания? один из способов, это попробовать создать самому.
https://github.com/danistefanovic/build-your-own-x———————————————————————
как говорил в начале, это очень большая тема. и я даже 1% не затронул. каждый может уйти в глубину куда-то далеко-далеко...