Какую архитектуру клиент-серверного приложения вы посоветуете?
Я только учусь программированию, но учиться хочу сразу на собственном проекте. Хочу убить двух зайцев одним ударом - написать проект и получить профессию, на тот случай есть проект провалится.
Проект довольно "простой" это клиент-серверное приложение для заказа такси.
ТЗ, уже есть. Есть понимание организации логики, осталось реализовать в коде.)
Так как уже начал учить java, часть клиента написал на android, то хотелось бы и сервер писать на java.
Советы нужны практически с нуля. Как настроить сервер на своем компе? В какой среде писать? Какие технологии использовать? И главное как правильно построить архитектуру?
Предположим мне удастся его написать и запустить. Начало будет в маленьком городе и количество клиентов будет не большое. Предположим приложение пройдет обкатку и баги будут исправлены. Тогда, я надеюсь, программу захотят установить в других городах мира и количество клиентов может быстро возрасти.
Нужно ли об этом думать сразу или пока не заморачиваться, а работать над логикой? Если все таки думать об этом сразу, то как правильно поступать?
Нужно будет добавлять сервера и распределять между ними нагрузку? Какую в этом варианте использовать технологию?
Или со временем можно просто увеличивать мощность сервера? Хотя мне такой вариант не очень нравится. Не хотелось бы зависеть от одного сервера.
Или вообще не правильно писать на java и пока я "чайник" хоть для java, хоть для другого языка, учить и писать на другом? Тогда на каком?
Хотелось бы найти найти ментора. Сколько будут стоить такие услуги? Или, быть может, ментор захочет стать соавтором и сособственником приложения? Разжевывать не надо, хочу сам доходить. Но хотелось быстрей выходить из тупиков и главное идти в нужном направлении.
Спасибо за любые советы, кроме советов типа - "мальчик, тебе это не под силу!", "начни с азбуки" и т.д.
Заранее благодарен!
Серверное приложение пишется обычно в виде DAO-Сервисы-Контроллеры. DAO - работает с БД, Сервисы - логика и запросы к DAO, Контроллеры - принимают запросы, отправляют ответы, вызывают сервисы. С клиентом общаться по REST. Чо на мобилке будете творить я не знаю, вообще не шарю чо там в мобилках. Мне нравится Spring, вы можете использовать что-то другое (Play, Java EE). Среда на ваш вкус. IDEA хороша. Сервер выбирайте сами - WildFly (я за него), Glashfish, Tomcat, Jetty и др. Как настроить - го в гугл. Там же почитаете про распределение нагрузки на несколько серверов.
Lombok помогает на Java. Тестирование JUnit или Spoke Framework.
Из БД можно Postgres, но сойдет и Mysql.
Про ментора не знаю, мне хватает коллег по работе.
"Про ментора не знаю" - это хорошее начало!) Думаю мне будет достаточно минут 15-30 вашего времени в день. И то не каждый. Может вас заинтересует сам проект, если я расскажу чем будет отличаться функционал от существующих служб Uber, Яндекс-такси и д.р.
Роман: Да, я про этот Lombok. Извините, но я имел в виду, что не знаю где целенаправленно найти ментора, мои менторы - это мои коллеги. Я сам ещё учусь и могу подсказать лишь направление, в котором копать, и не готов брать на себя ответственность ментора.
Роман: Lombok - это остров рядом с островом Java. Это библиотека, которая не имеет никакого отношения к Idea(которая просто удобная IDE - среда разработки), с помощью аннотаций помогает избежать написания тонны боллерплейт кода, такого как конструкторы, сеттеры и геттеры. Вы документацию прочитайте, тогда станет понятнее.
Ага. Спасибо. попробую чуть позже. Пока надо создать сервер и подконнектить к нему свое приложение андроид. Я на полгода выпадал из темы совсем. Сейчас надо все вспоминать.
Как разберусь с сокетами, получу на сервер и обратно - Helloy world! Тогда попробую разобраться с Ломбоком.