• Подойдет ли Java для бекенд-разработки? Можно ли для начала его учить?

    @rustacean137
    Занимаюсь веб разработкой 4+ лет.

    Java - для заработки нормально.

    Думаю стоит изучать в таком порядке:

    1. Основа: структуры данных и алгоритмы. Книга sicp. Книга небольшая, и читается легко. В интернете есть лекции на его основе, как на английском(из MIT) так и на русском.

    2. Основы java, ООП и шаблоны проектирования.

    3. java/spring boot.
      Я бы начал попробовать сделать что то простое.
      Например, вывод списка продуктов из базы данных, тут хватить документации hibrenate/spring.

    4. Затем, можно изучать глубже, что происходить в запросе, стоит углубляться в сети(OSI,безопасность и особенности протокола http), и реляционных БД.
      Думаю именно на таком минимальном проекте изучать будет проще, т.к. у вас будет работающее приложение, и вам остается его разбирать и изучать по частям.

    5. Напишите хотя бы юнит тестов для вашего приложения. Это даст хороший плюс к пониманию процесса.

    6. Можно немного изменить проект и вернуться к пункту 4.
      Например:
      • Приложения теперь должен иметь регистрацию и авторизацию, и авторизованные пользователи могут создавать "Магазинов" и продукты в нем. Т.е. user -> shops -> products.
      • Добавим возможность заказывать.
      • Хорошо бы отделить оплату заказов в микросервис, чтобы критическим функционалом занимался доверенный сотрудник... (Отделим оплату заказов в микросервис, который общается с основным сервисом, например через rabbitmq)
      • Далее, стоит обнаружить узкие места и оптимизировать их. Некоторые вещи лучше в очередь отправить, к примеру если отправка почты занимает много времени, или происходить ошибки во время отправки, то письмо можно отправить в очередь и обработать в другом месте, чтобы отправка почты не влияло на время ответа.

    Здесь не всё, но для начало думаю достаточно, после того как сможете более менее реализовать простые проекты, лучше поискать стажировку.


    Также попробуйте rust, есть отличная книга(а не тысячи книг), который охватывает всех возможностей языка. -> rustbook

    Есть дружелюбный чат на русском:
    Для новичков: https://gitter.im/ruRust/easy
    И для опытных: https://gitter.im/ruRust/general

    Это язык общего назначения, в котором можно и веб сервисы написать(https://rocket.rs/, https://actix.rs/).
    Для изучение отлично подходить, поскольку стандартный инструментарий идёт в комплекте с официальной книгой, и примерами. В книге каждая строчка подробно объясняется. (Выше дал ссылку на русский перевод)


    P/s Если хотите бэкендом заниматься, лучше займитесь только им, пока не чувствуете себя уверенно в нем. Поэтому лучше делайте АПИ, а не полноценное приложение с UI, так проще будет, если всё же хочется UI, то рекомендую брать angular, как наиболее простое решение, с точки зрения бэкенда.
    Ответ написан
    Комментировать
  • Как запустить проект в docker?

    @rustacean137
    Необязательно это сделать через докер.
    Установите несколько версий php.
    В вашем случае, установите `php7.0` из ppa репозиторий:
    sudo add-apt-repository ppa:ondrej/php
    sudo apt update
    sudo apt install php7.0 php7.0-fpm


    Затем настройте свой вебсервер на использование нужной версии. К примеру в nginx, установите `fastgci_pass`:
    # ...
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    # ...
    Ответ написан
    Комментировать