- Регистрация
- 09.04.2020
- Сообщения
- 353 752
- Реакции
- 32 508
- Монеты
- 1 191
- Оплачено
- 0
- Баллы
- 0
- #SkladchinaVip
- #1
[Javabegin] FullStack разработчик веб проектов [Тимур Батыршинов]
- Ссылка на картинку
-
Пройдите путь с нуля до fullstack программиста (backend + frontend) с поддержкой на каждом шаге. Вы сразу начнете создавать один большой проект и добавлять все более сложный функционал (Java, Spring, Hibernate, PostgreSQL, React, OAuth2, Docker).
FULLSTACK разработчик:
В разных компаниях могут по-разному трактовать это понятие, но общее одно - минимально вы должны уметь:
1) создавать серверную часть на микросервисах (backend) - Java/Kotlin/Spring Cloud
2) создавать клиентскую часть (frontend) - React/Angular
3) использовать инструменты аутентификации (OAuth2, OpenID)
4) собирать и распространять свой проект в контейнерах (Kubernetes, Docker)
5) правильно обновлять приложение с помощью DevOps, CI/DI
Cегодня компании хотят получить готового самодостаточного программиста, который уже многое умеет.
Проходит то время, когда с вами будут идти за ручку с нуля и обучать за счет компании.
Время - деньги! Особенно сейчас.
Если вы придете подготовленным и с опытом разработки на современных инструментах - ваши шансы повышаются в сотни раз. Вы уже должны быть достаточно опытным
Должно быть хотя бы 1-2 проекта в портфолио
Какие технологии использовать? Ведь их очень много
Нужно выбрать какой-то один стек и хорошо его выучить. Остальное - чуть позже по необходимости.
Желательно изучать технологии, которые давно себя зарекомендовали и будут "на коне" еще долгое время.
Современные системы чаще всего построены по этим принципам:
а) Микросервисная архитектура для backend (вместо "монолита")
Весь функционал приложения заключаются в веб сервисы (API). Сервисы могут находиться в разных приложениях (не как раньше - в одном, "монолит"). Один и тот же сервис может использоваться разными приложениями. Создаете один раз - используете всегда. Между сервисами и клиентом существует "экран" или "адаптер", который распределяет все входящий запросы. Сервисы могут находиться на разных серверах и быть не связаны между собой. Технологии: Spring, Swagger
б) RESTful сервисы для backend
RESTful - самый простой и быстрый способ обмена данными. Простой в использовании и создании (по сравнению с SOAP). Вы создаете один раз нужный сервис и используете в разных приложениях. За всеми запросами наблюдает общий "адаптер". Технологии: Spring, Swagger
в) Безопасность отделена от приложения
Вы не "вшиваете" внутрь своего приложения функционал безопасности, а делегируете его в отдельный узел (на другом сервере), который имеет свое API и все могут им пользоваться. В самом приложении вы только настраиваете роли и доступы. Технологии: OAuth2, OpenID и некоторые другие.
г) Фреймворки JavaScript для клиентского UI
Современные и отзывчивые веб/мобильные приложения делают на JS фреймворках: React, Angular, Vue.js. Ушли в прошлое тяжеловесные стеки типа JavaEE, JSF и пр. Сейчас "на коне" ajax вызовы, которые отправляют запрос в RESTful-сервис, получают ответ и тут же обновляют только нужную часть страницы. И все это с данными аутентификации/авторизации, по безопасному HTTPS каналу.
д) Сборка и дистрибуция проекта
Чтобы ваше приложение можно было быстро запустить - вам нужно будет правильно его собрать и настроить. Это все - в автоматическом режиме ("нажимаем одну кнопку"). Вручную собирать весь стек технологий - это медленно и неэффективно, "прошлый век". Технологии: Kubernetes, Docker.
е) Единое хранилище кода
Система контроля версий, куда вся команда "сливает" свой код. У вас всегда будет актуальная версия проекта. Это тоже стандарт в любой крупной компании (с очень древних времен). Не важно, какие технологии вы используете - всегда нужно будет хранить все коды не только у себя на компьютере, но и в удаленном репозитории.
Все эти принципы вы будете применять в данном обучении:
1) Java/Kotlin
Это язык, который будет востребован еще долгое время. Если выучите Java, в будущем сможете легко одолеть и Kotlin. Один язык плавно перетекает в другой. Но сначала желательно хорошо понять Java. На этих языках вы будете создавать микросервисы и весь функционал бэкенд. Java почти всегда находится на 1-3 месте по индексу TIOBE
2) PostgreSQL
Популярная бесплатная база данных с большим функционалом. В последние годы вырвалась в лидеры. Во многих случаях имеет выигрыш в производительности перед MySQL, типов данных, гибкости настроек. Многие хостинги, например Heroku, имеют поддержку этой БД в бесплатном тарифе - это говорит о том, что они уже сделали выбор. Раньше в фаворе был MySQL.
3) Spring/Hibernate
Самые популярные фреймворки, которые облегчают разработчику backend приложений. С помощью них вы сможете быстро организовать нужные веб сервисы и выполнить запросы в БД. Spring дает возможность настроить микросервисы с общим "экраном", подключить безопасность, OAuth2 и многое другое. Можно сказать, что это один большой и функциональный комбайн. Spring является самым популярным Java/Kotlin фреймворком.
4) Angular/React/TypeScript
Для того, чтобы создать клиентский интерфейс - вы можете использовать либо React, либо Angular (также еще есть популярный Vue.js). В любом случае вам нужно будет выучить язык TypeScript (что легко сделать, если вы знаете Java). В итоге вы сможете создавать любые UI: веб, мобильные (iOS, Android), desktop - пишете один раз код и собираете под разные платформы. Самым популярным в данный момент является React.
React с момента появления - всегда на первом месте среди JS UI фреймворков - благодаря его простоте и функциональности.
5) IntelliJ IDEA
Хоть эта среда разработки и платная, но она все еще используется чаще всего во всех крупных компаниях. Поэтому вам нужно обязательно иметь опыт работы с ней. Можете попробовать trial версию (Ultimate, WebStorm) или получить бесплатную лицензию на email студента (родственника). Либо поискать другие варианты в интернете ("if you know what i mean") . Кстати, есть хороший бесплатный аналог VSCode от Microsoft - именно для веб приложений.
6) Git/GitHub
Для того, чтобы вы могли успешно работать в командах - вам необходимо хотя бы на минимальном уровне знать и уметь работать с Git/GitHub. Вы будете выполнять доработки, заливать изменения, получать чужие изменения себе - "вариться в общем соку" с другими учениками. Без знания версионности кода - вам будет сильно сложнее (даже для личных проектов)
7) Docker
Программное обеспечение с открытым исходным кодом, применяемое для разработки, тестирования, доставки и запуска веб-приложений в средах с поддержкой контейнеризации. Он нужен для более эффективного использование системы и ресурсов, быстрого развертывания готовых программных продуктов, а также для их масштабирования и переноса в другие среды с гарантированным сохранением стабильной работы
8) Bootstrap
Открытый и бесплатный HTML, CSS и JS фреймворк, который используется веб-разработчиками для быстрой вёрстки адаптивных дизайнов сайтов и веб-приложений. Вы сможете создавать на нем один и тот же проект под разные устройства.
Почему этому больше никто не учит? Почему никто не обучает системным знаниям?
Недавно поймал себя на мысли, что изучая различные тренинги/курсы, нигде не встречал подобную программу - когда тебя за руку могут провести с от начала и до конца и сделать fullstack разработчиком.
Везде только обрывки проектов или несвязанные темы. Собрать все воедино невозможно.
Поэтому я решил создать такую программу - вы пройдете путь fullstack от начала и до конца, изучите все технологии на одном большом проекте.
Затем сможете устроиться в компанию, т.к. будете знать как работают современные системы (или если вы уже менеджер или аналитик -- сможете лучше управлять своими разработчиками)
КАКИЕ ТЕХНОЛОГИИ FULLSTACK ПРОЙДЕТЕ?
1) Основы Java/Kotlin, профессиональный код на ООП
В начале вы будете создавать только консольные приложения. Важно пройти все основные задачи, чтобы я убедился, что у вас уже есть фундамент ООП, коллекции, синтаксис. Если захотите - можем сделать доп. проекты на Java UI (Swing, JavaFX) - это по желанию.
2) Проектирование базы данных на PostgreSQL
Здесь вы с нуля создадите базу данных, которую затем будете использовать в итоговом проекте. На основе этой БД пройдем все необходимые темы: связи таблиц, ключи, ограничения, SQL запросы, метаданные и многое другое. Это минимум, что должен знать любой начинающий программист.
3) Создание серверного проекта (RESTful backend)
Основная серверная часть, которая будет иметь RESTful сервисы и обращаться к созданной ранее базе данных. Здесь пока также нет никакого UI, а только тестирование веб сервисов с помощью Postman/ARC/браузер. Таким образом вы создаете API вашего приложения.
4) Безопасность и работа с пользователями на OAuth2
Это отдельная категория проекта, которая не зависит от других. Здесь вы создадите и настроите сервер авторизации с нужными пользователями, ролями и пр. Затем этим сервером будет пользоваться ваш backend, чтобы получать ключи для выполнения запросов. Так работают все крупные компании (Google, Facebook)
5) Клиентский Web UI с мобильной версткой - React/Angular
Возможно самая интересная часть, потому что тут появляется внешний вид, который вы будете создавать с нуля и затем выполнять запросы на backend, получать данные, обновлять нужные части страниц. За это отвечают технологии React или Angular (сможете выбрать любую из них). Пример итогового приложения онлайн можно посмотреть тут
6) Совместная работа с репозиториями Git/GitHub
Как правильно совместно дорабатывать проект, участие в коллективе, основные команды для правильного хранения кода, отправка кода на рецензию и многое другое. Если вы с этими знаниями придете в компанию - это будет ключевой особенностью. Cможете сразу браться за рабочие проекты, а не тратить время на Git/GitHub.
7) Микросервисы на Spring Cloud (Gateway, Config, Eureka)
Новый подход к разработке крупных проектов (в противовес старому подходу, который называют "монолит" - единое приложение) В микросервисах вы разбиваете весь функционал на микро-приложения, которые работают в общей шине (Spring Cloud) и взаимодействуют между собой. Сейчас это самая популярная архитектура для создания крупных приложений с большим функционалом.
8) Сервер для создания архитектуры "message broker"
Асинхронное взхаимодействие между системами или микросервисами. Позволяет реализовать любые задачи, где требуется обмен данным с гарантированной доставкой. Сейчас пользуется большой популярностью среди распределенных систем (особенно в Spring Cloud)
9) Совместная работа с репозиториями Git/GitHub
Быстрая разработка и дистрибуция приложения с помощью контейнеров. Современный способ обновления и доставки функционала до конечного потребителя (клиента).
FULLSTACK разработчик:
В разных компаниях могут по-разному трактовать это понятие, но общее одно - минимально вы должны уметь:
1) создавать серверную часть на микросервисах (backend) - Java/Kotlin/Spring Cloud
2) создавать клиентскую часть (frontend) - React/Angular
3) использовать инструменты аутентификации (OAuth2, OpenID)
4) собирать и распространять свой проект в контейнерах (Kubernetes, Docker)
5) правильно обновлять приложение с помощью DevOps, CI/DI
Cегодня компании хотят получить готового самодостаточного программиста, который уже многое умеет.
Проходит то время, когда с вами будут идти за ручку с нуля и обучать за счет компании.
Время - деньги! Особенно сейчас.
Если вы придете подготовленным и с опытом разработки на современных инструментах - ваши шансы повышаются в сотни раз. Вы уже должны быть достаточно опытным
Должно быть хотя бы 1-2 проекта в портфолио
Какие технологии использовать? Ведь их очень много
Нужно выбрать какой-то один стек и хорошо его выучить. Остальное - чуть позже по необходимости.
Желательно изучать технологии, которые давно себя зарекомендовали и будут "на коне" еще долгое время.
Современные системы чаще всего построены по этим принципам:
а) Микросервисная архитектура для backend (вместо "монолита")
Весь функционал приложения заключаются в веб сервисы (API). Сервисы могут находиться в разных приложениях (не как раньше - в одном, "монолит"). Один и тот же сервис может использоваться разными приложениями. Создаете один раз - используете всегда. Между сервисами и клиентом существует "экран" или "адаптер", который распределяет все входящий запросы. Сервисы могут находиться на разных серверах и быть не связаны между собой. Технологии: Spring, Swagger
б) RESTful сервисы для backend
RESTful - самый простой и быстрый способ обмена данными. Простой в использовании и создании (по сравнению с SOAP). Вы создаете один раз нужный сервис и используете в разных приложениях. За всеми запросами наблюдает общий "адаптер". Технологии: Spring, Swagger
в) Безопасность отделена от приложения
Вы не "вшиваете" внутрь своего приложения функционал безопасности, а делегируете его в отдельный узел (на другом сервере), который имеет свое API и все могут им пользоваться. В самом приложении вы только настраиваете роли и доступы. Технологии: OAuth2, OpenID и некоторые другие.
г) Фреймворки JavaScript для клиентского UI
Современные и отзывчивые веб/мобильные приложения делают на JS фреймворках: React, Angular, Vue.js. Ушли в прошлое тяжеловесные стеки типа JavaEE, JSF и пр. Сейчас "на коне" ajax вызовы, которые отправляют запрос в RESTful-сервис, получают ответ и тут же обновляют только нужную часть страницы. И все это с данными аутентификации/авторизации, по безопасному HTTPS каналу.
д) Сборка и дистрибуция проекта
Чтобы ваше приложение можно было быстро запустить - вам нужно будет правильно его собрать и настроить. Это все - в автоматическом режиме ("нажимаем одну кнопку"). Вручную собирать весь стек технологий - это медленно и неэффективно, "прошлый век". Технологии: Kubernetes, Docker.
е) Единое хранилище кода
Система контроля версий, куда вся команда "сливает" свой код. У вас всегда будет актуальная версия проекта. Это тоже стандарт в любой крупной компании (с очень древних времен). Не важно, какие технологии вы используете - всегда нужно будет хранить все коды не только у себя на компьютере, но и в удаленном репозитории.
Все эти принципы вы будете применять в данном обучении:
1) Java/Kotlin
Это язык, который будет востребован еще долгое время. Если выучите Java, в будущем сможете легко одолеть и Kotlin. Один язык плавно перетекает в другой. Но сначала желательно хорошо понять Java. На этих языках вы будете создавать микросервисы и весь функционал бэкенд. Java почти всегда находится на 1-3 месте по индексу TIOBE
2) PostgreSQL
Популярная бесплатная база данных с большим функционалом. В последние годы вырвалась в лидеры. Во многих случаях имеет выигрыш в производительности перед MySQL, типов данных, гибкости настроек. Многие хостинги, например Heroku, имеют поддержку этой БД в бесплатном тарифе - это говорит о том, что они уже сделали выбор. Раньше в фаворе был MySQL.
3) Spring/Hibernate
Самые популярные фреймворки, которые облегчают разработчику backend приложений. С помощью них вы сможете быстро организовать нужные веб сервисы и выполнить запросы в БД. Spring дает возможность настроить микросервисы с общим "экраном", подключить безопасность, OAuth2 и многое другое. Можно сказать, что это один большой и функциональный комбайн. Spring является самым популярным Java/Kotlin фреймворком.
4) Angular/React/TypeScript
Для того, чтобы создать клиентский интерфейс - вы можете использовать либо React, либо Angular (также еще есть популярный Vue.js). В любом случае вам нужно будет выучить язык TypeScript (что легко сделать, если вы знаете Java). В итоге вы сможете создавать любые UI: веб, мобильные (iOS, Android), desktop - пишете один раз код и собираете под разные платформы. Самым популярным в данный момент является React.
React с момента появления - всегда на первом месте среди JS UI фреймворков - благодаря его простоте и функциональности.
5) IntelliJ IDEA
Хоть эта среда разработки и платная, но она все еще используется чаще всего во всех крупных компаниях. Поэтому вам нужно обязательно иметь опыт работы с ней. Можете попробовать trial версию (Ultimate, WebStorm) или получить бесплатную лицензию на email студента (родственника). Либо поискать другие варианты в интернете ("if you know what i mean") . Кстати, есть хороший бесплатный аналог VSCode от Microsoft - именно для веб приложений.
6) Git/GitHub
Для того, чтобы вы могли успешно работать в командах - вам необходимо хотя бы на минимальном уровне знать и уметь работать с Git/GitHub. Вы будете выполнять доработки, заливать изменения, получать чужие изменения себе - "вариться в общем соку" с другими учениками. Без знания версионности кода - вам будет сильно сложнее (даже для личных проектов)
7) Docker
Программное обеспечение с открытым исходным кодом, применяемое для разработки, тестирования, доставки и запуска веб-приложений в средах с поддержкой контейнеризации. Он нужен для более эффективного использование системы и ресурсов, быстрого развертывания готовых программных продуктов, а также для их масштабирования и переноса в другие среды с гарантированным сохранением стабильной работы
8) Bootstrap
Открытый и бесплатный HTML, CSS и JS фреймворк, который используется веб-разработчиками для быстрой вёрстки адаптивных дизайнов сайтов и веб-приложений. Вы сможете создавать на нем один и тот же проект под разные устройства.
Почему этому больше никто не учит? Почему никто не обучает системным знаниям?
Недавно поймал себя на мысли, что изучая различные тренинги/курсы, нигде не встречал подобную программу - когда тебя за руку могут провести с от начала и до конца и сделать fullstack разработчиком.
Везде только обрывки проектов или несвязанные темы. Собрать все воедино невозможно.
Поэтому я решил создать такую программу - вы пройдете путь fullstack от начала и до конца, изучите все технологии на одном большом проекте.
Затем сможете устроиться в компанию, т.к. будете знать как работают современные системы (или если вы уже менеджер или аналитик -- сможете лучше управлять своими разработчиками)
КАКИЕ ТЕХНОЛОГИИ FULLSTACK ПРОЙДЕТЕ?
1) Основы Java/Kotlin, профессиональный код на ООП
В начале вы будете создавать только консольные приложения. Важно пройти все основные задачи, чтобы я убедился, что у вас уже есть фундамент ООП, коллекции, синтаксис. Если захотите - можем сделать доп. проекты на Java UI (Swing, JavaFX) - это по желанию.
2) Проектирование базы данных на PostgreSQL
Здесь вы с нуля создадите базу данных, которую затем будете использовать в итоговом проекте. На основе этой БД пройдем все необходимые темы: связи таблиц, ключи, ограничения, SQL запросы, метаданные и многое другое. Это минимум, что должен знать любой начинающий программист.
3) Создание серверного проекта (RESTful backend)
Основная серверная часть, которая будет иметь RESTful сервисы и обращаться к созданной ранее базе данных. Здесь пока также нет никакого UI, а только тестирование веб сервисов с помощью Postman/ARC/браузер. Таким образом вы создаете API вашего приложения.
4) Безопасность и работа с пользователями на OAuth2
Это отдельная категория проекта, которая не зависит от других. Здесь вы создадите и настроите сервер авторизации с нужными пользователями, ролями и пр. Затем этим сервером будет пользоваться ваш backend, чтобы получать ключи для выполнения запросов. Так работают все крупные компании (Google, Facebook)
5) Клиентский Web UI с мобильной версткой - React/Angular
Возможно самая интересная часть, потому что тут появляется внешний вид, который вы будете создавать с нуля и затем выполнять запросы на backend, получать данные, обновлять нужные части страниц. За это отвечают технологии React или Angular (сможете выбрать любую из них). Пример итогового приложения онлайн можно посмотреть тут
6) Совместная работа с репозиториями Git/GitHub
Как правильно совместно дорабатывать проект, участие в коллективе, основные команды для правильного хранения кода, отправка кода на рецензию и многое другое. Если вы с этими знаниями придете в компанию - это будет ключевой особенностью. Cможете сразу браться за рабочие проекты, а не тратить время на Git/GitHub.
7) Микросервисы на Spring Cloud (Gateway, Config, Eureka)
Новый подход к разработке крупных проектов (в противовес старому подходу, который называют "монолит" - единое приложение) В микросервисах вы разбиваете весь функционал на микро-приложения, которые работают в общей шине (Spring Cloud) и взаимодействуют между собой. Сейчас это самая популярная архитектура для создания крупных приложений с большим функционалом.
8) Сервер для создания архитектуры "message broker"
Асинхронное взхаимодействие между системами или микросервисами. Позволяет реализовать любые задачи, где требуется обмен данным с гарантированной доставкой. Сейчас пользуется большой популярностью среди распределенных систем (особенно в Spring Cloud)
9) Совместная работа с репозиториями Git/GitHub
Быстрая разработка и дистрибуция приложения с помощью контейнеров. Современный способ обновления и доставки функционала до конечного потребителя (клиента).
Зарегистрируйтесь
, чтобы посмотреть скрытый авторский контент.