Описание
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
Быстрая разработка и дистрибуция приложения с помощью контейнеров. Современный способ обновления и доставки функционала до конечного потребителя (клиента).
1 и 2) Профессиональное мышление при создании проектов (Java/Kotlin)
ЗАЧЕМ: в первую очередь вам нужно разложить по полочкам основы ООП (+GRASP/SOLID) с применением одного из языков Java/Kotlin (на выбор). Тогда ваши знания будут НЕ обрывочные, а системные. Нужно сразу заложить в голове “мышление программиста” и вы любой проект будете создавать профессионально (а не просто “лишь бы работало”).
СПОСОБ: понять всю теорию и порешать задачи с применением ООП, SOLID, GRASP. Уровень задач будет повышаться по мере изучения тем. Нужно не просто набивать руку на синтаксисе, а сразу делать это с “правильным мышлением”
ЕСЛИ ПРОПУСТИТЬ: Многие думают, что хорошо знают эти темы (хотя по факту знают процентов 50-60) и сразу “прыгают” дальше. Это большая ошибка, вам придется вернуться обратно и снова потратить время.
3) Базы данных, проектирование таблиц, SQL, оптимизация
ЗАЧЕМ: В любом приложении используются данные и вы должны уметь создавать структуру на какой-либо СУБД (PostgreSQL, MySQL и пр.) – работа с таблицами, планирование связей, загрузки тестовых данных и многое другое. Также должны уметь оптимизировать и анализировать “узкие места”, из-за чего БД может работать медленно.
СПОСОБ: С нуля создадите структуру таблиц, связи, триггеры, ключи, SQL запросы и многое другое. Если БД сразу делать правильно – то и проект (код) будет работать верно.
ЕСЛИ ПРОПУСТИТЬ: Не сможете работать с БД и будете способны создавать только простые приложения (например, консольные, без SQL запросов)
4) Основы работы с ORM Hibernate
ЗАЧЕМ: чтобы автоматизировать запросы в БД и обработку результатов. Hibernate – один из самых популярных Java – фреймворков. На протяжении многих лет его используют почти во всех веб проектах. Сегодня его должен знать любой новичок.
СПОСОБ: Желательно изучать Hibernate отдельно от всего остального. А потом уже совмещать с другими технологиями (Spring и др). Поэтому вы примените Hibernate на “голой” Java – это проще для новичков.
ЕСЛИ ПРОПУСТИТЬ: Сможете создавать большие приложения только с применением чистого SQL, а это сильно снизит скорость разработки. Почти все большие проекты используют ORM Hibernate
5) RESTful сервисы на SpringBoot (backend)
ЗАЧЕМ: современные приложения чаще всего предоставляют веб сервисы (backend), которые используются любыми клиентами. Spring – самый популярный Java фреймворк – он помогает создавать RESTful сервисы (API) быстро и без ошибок, по защищенному каналу HTTPS
СПОСОБ: создадите с нуля RESTful сервисы на SpringBoot, которые будут обращаться к БД и реализовывать функционал “Планировщик задач” (эту БД вы делали в пред. пунктах)
ЕСЛИ ПРОПУСТИТЬ: не сможете двигаться дальше в сторону микросервисов и всего самого интересного, ведь новые технологии основаны на SpringBoot RESTful
6) Микросервисы на Spring Cloud + Gateway
ЗАЧЕМ: сейчас все приложения переходят от монолита к микросервисам – так легче масштабироваться, обновлять ПО и т.д. Для этого в Spring Cloud существуют готовые библиотеки и решения. Вам нужно лишь правильно их использовать
СПОСОБ: На основе RESTful сервисов для “Планировщика задач” (монолит) – будете делить его на микросвервисы c применением всех технологий.
ЕСЛИ ПРОПУСТИТЬ: это по сути самая главная часть для backend приложений. Если пропустите – не сможете создавать современные распределенные приложения
7) Безопасность и пользователи на OAuth2 + KeyCloak
ЗАЧЕМ: Чтобы с вашими микросервисами могли работать только “правильные” клиенты, кто прошел аутентификацию, авторизацию – можно использовать готовые решения. Сможете хранить пользователей, их роли и многое другое.
СПОСОБ: Создадите свой сервер авторизации Keycloak и проведете интеграцию с микросервисами – чтобы запросы выполнялись от конкретных пользователей.
ЕСЛИ ПРОПУСТИТЬ: не сможете обезопасить свое приложение и запросы смогут выполнять кто угодно.
8 и 9) Frontend приложения на React и Angular
ЗАЧЕМ: Чтобы создавать современные интерактивные приложения на готовых JavaScript-фреймворках – которые будут авторизовываться и вызывать защищенные микросервисы
СПОСОБ: Создадите несколько реализаций клиентского приложения (Планировщик задач) – на JS фреймворках
ЕСЛИ ПРОПУСТИТЬ: приложение останется без UI – не будет кнопок, окон и пр. – можно будет вызывать только RESTful сервисы напрямую
10) Упаковка и распространение через контейнеры
ЗАЧЕМ: Мало создать приложение – нужно еще правильно его упаковать и доставить до конечного потребителя. Для этого существует механизм “контейнеров”. Так работают все современные компании.
СПОСОБ: Научитесь упаковывать предыдущие приложения – чтобы они разворачивались сразу с БД, настройками и пр.
ЕСЛИ ПРОПУСТИТЬ: не сможете по-правильному доставлять приложения, сможете только “по-старинке” – вручную настраивать все по-отдельности
11) Правильное и быстрое обновление функционала
ЗАЧЕМ: Чтобы клиенты не ждали ваших обновлений “по полгода” и вы могли автоматически обновлять части приложения каждый день хоть по несколько раз – причем делать это быстро и прозрачно.
СПОСОБ: Механизмы для DevOps и принципов CI/CD, Jenkins, GitHub Actions и многое другое.
ЕСЛИ ПРОПУСТИТЬ: придется обновлять все вручную, а это занимает много времени и неэффективно.
12) Основы работы в Git/GitHub + командная разработка
ЗАЧЕМ: Чтобы быстро и легко освоиться в крупной компании – вы должны уметь работать в Git и выполнять совместные действия в команде, знать весь цикл разработки.
СПОСОБ: Сможете участвовать в команде над простыми и сложными проектами (с другими читателями и клиентами) – чтобы затем работать в компании. Тимлид будет давать вам обратную связь и добавлять задачи в GitHub
Отзывы
Отзывов пока нет.