CodeFest 2013. Бабаев А. — Сервер для самых маленьких

Preview:

Citation preview

Сервердля  самых  маленьких

Шурик  Бабаев,  DevPocket

Сервер  для  самых  маленькихиз  361

Здравствуйте!

Сервер  для  самых  маленькихиз  362

Кто  я?  Откуда  я?

ДевПокет, Санкт-Петербург

Шурик Бабаев

Сервер  для  самых  маленькихиз  36

На  чем?

C++  ⟶  Java,  ObjecNve-­‐C(а  еще  C,  JavaScript,  Groovy,  Scala,  ML,  Racket,  Ruby,  ...)

Что?Серверы  и  прикладные  приложения(hip://TouchDev.ru  и  еще  несколько  проектов)

Некоторые  мобильные  приложения:

3

Чем  я  занимаюсь?(Программирую)

Сервер  для  самых  маленькихиз  36

Общие  принципы,  грабли,  плюшки.

4

План

•  

•  

•  

•  

•  

Зачем  нам  сервер?

Зачем  нам  еще  один  сервер?

На  чем  писать?

Кто  главный?

Сервер  для  самых  маленькихиз  36

Общие  принципы,  грабли,  плюшки.

5

План

•  

•  

•  

•  

•  

Зачем  нам  сервер?Зачем  нам  еще  один  сервер?

На  чем  писать?

Кто  главный?

Сервер  для  самых  маленькихиз  366

Оффлайновые  задачи• Персональные  приложения

(«никому  не  покажу,  что  я  тут  пишу»)

• Игры(«ни  с  кем  играть  не  хочу,  сам  буду»)

• Связь  с  «железками»(«управление  персональным  танком»)

• ...  и  все?(не  совсем,  но  сильно  больше  не  наковыряешь)

Шурик  Бабаев,  DevPocketиз  36

Оффлайн

7

Сервер  для  самых  маленькихиз  368

Онлайновые  задачи

•Персональные  приложения

• Игры

• Связь  с  «железками»

• ...  

Шурик  Бабаев,  DevPocketиз  36

Онлайн

9

Сервер  для  самых  маленькихиз  3610

Существующие  сервисы

• Кто-­‐то  их  сделал  за  вас  (и  некоторые  даже  работают)

• Не  нужно  поддерживать  (но  нужно  писать  багрепорты)

• Готовый  API(удобный  ли?  интересный  вопрос)

Шурик  Бабаев,  DevPocketиз  3611

Сервер  для  самых  маленькихиз  3612

Свой  сервис

• Именно  то,  что  нужно  (но  сначала  нужно  это  создать)

• Правильный  API(что  очень  сильно  сказывается  на  самом  приложении)

• Проще  развивать(но  поддержка  стоит  денег)

Шурик  Бабаев,  DevPocketиз  36

Чужие  против  своих

13

гибкостьденьги

Сервер  для  самых  маленькихиз  3614

Когда  нужен  свой?

• Обычно,  когда  нагрузка  очень  большая(стоимость  сервисов  ≈  стоимость  разработки)

• Нужны  уникальные  фичи(вы  первые,  кто  додумался)

• Соображения  безопасности(или  специфические  требования  к  ней)

Сервер  для  самых  маленькихиз  36

•  

•  

•  

•  

•  

15

План

Общие  принципы,  грабли,  плюшки.

Зачем  нам  сервер?

Зачем  нам  еще  один  сервер?

На  чем  писать?

Кто  главный?

Сервер  для  самых  маленькихиз  3616

А  у  нас  уже  есть  один!

• обслуживает  web-­‐страницы(быстро,  модно,  красиво)

• AJAX(почему  бы  им  тоже  не  воспользоваться?)

• Ведь  два  сервера  поддерживать  нужно!(а  вот  про  это  поподробнее...)

Сервер  для  самых  маленькихиз  3617

Один  за  всех

• HTML(плохо  парсится,  совсем  не  вариант)

• XHTML/XML(парсится  хорошо,  но  зачем  нам  представление?)

• JSON(завязан  на  структуру  страниц,  а  не  мобильных  экранов)

Можно?  Да.  Но  мобильная  разработкабудет  сложнее  в  разы.

Сервер  для  самых  маленькихиз  3618

К  чему  стремимся?

СУБД Логика

API

КлиентыСервер

HTML

Сервер  для  самых  маленькихиз  3619

Каждому  по  интерфейсу

Ничего  нового,  простите,  просто  грамотное  планирование

или  рефакторинг

Сервер  для  самых  маленькихиз  3620

План

•  

•  

•  

•  

•  

Общие  принципы,  грабли,  плюшки.

Зачем  нам  сервер?

Зачем  нам  еще  один  сервер?

На  чем  писать?

Кто  главный?

Шурик  Бабаев,  DevPocketиз  36

Картинка

21

Сервер  для  самых  маленькихиз  3622

Обычно  все  не  так

• Сервер  уже  есть;

• Написан  сервер  как  попало;

• Специалист  ушел  в  другую  компанию;

• Сделать  нужно  быстро;

• Поддержка  должна  быть  недорогой.

Сервер  для  самых  маленькихиз  3623

Протокол

• XML/JSON(хорошая  поддержка  мобильных  платформ)

• Не  WebServices/другой  RPC(можно,  но  стандартной  поддержки  нет)

• Внимание!  XML  —  парсится  SAX’ом(атрибуты  —  удобнее,  чем  подтэги)

• Мобильный  интернет  —  медленный(один  экран  —  один  запрос)

Сервер  для  самых  маленькихиз  3624

XML/JSON

• Готовая  поддержка  на  платформах

• KISS!(DOM  часто  недоступен,  XPath  тоже)

• Только  для  данных(интерфейс  должен  быть  нативный)

• Только  для  данных

Сервер  для  самых  маленькихиз  3625

Не  WebServices

• Очень  долго(библиотеку  нужно  разрабатывать  с  нуля)

• Излишне  длинно(протокол  многословный)

• WebServices  сделан  не  для  этого!

• Если  есть  лишние  деньги  —  можно☺

Сервер  для  самых  маленькихиз  3626

SAX

<user><name>Шурик</name><coolness>high</coolness>

</user>

<user  name=”Шурик”  coolness=”high”/>

• Требует  более  сложного  парсера

• Легко!

Сервер  для  самых  маленькихиз  3627

SAX

<user><name>Шурик</name><coolness>high</coolness>

</user>

<user  name=”Шурик”  coolness=”high”/>

• Требует  более  сложного  парсера

• Легко!

Сервер  для  самых  маленькихиз  3628

Один  на  один

• Мобильный  интернет  медленный(особенно  если  двигаться)

• Пользователь  хочет  сейчас!(дольше  10  секунд  —  долго)

• Один  экран  —  один  запрос(один  на  каркас,  остальное  по  экранам)

Сервер  для  самых  маленькихиз  3629

Один  на  один

• Запрос,  чтобы  отобразить  текст

• Отдельные  —  чтобы  показать  графику

• Загружайте  маленькие  картинки

Сервер  для  самых  маленькихиз  36

•  

•  

•  

•  

•  

30

План

Общие  принципы,  грабли,  плюшки.

Зачем  нам  сервер?

Зачем  нам  еще  один  сервер?

На  чем  писать?

Кто  главный?

Сервер  для  самых  маленькихиз  3631

Курица  или  яйцо?

• тут  картинка  нада

Сервер  для  самых  маленькихиз  3632

Опыт

• Договориться  о  протоколе(выше  сказано,  как  будет  правильно)

• Реализовать  кусочек(чтобы  наступить  на  пару  граблей  и  учесть  их)

• Протестировать  и  поправить

• Повторить  по  необходимости

Сервер  для  самых  маленькихиз  3633

План

Общие  принципы,  грабли,  плюшки.

•  

•  

•  

•  

•  

Зачем  нам  сервер?

Зачем  нам  еще  один  сервер?

На  чем  писать?Кто  главный?

Шурик  Бабаев,  DevPocketиз  36

Налево  пойдешь...

34

Сервер  для  самых  маленькихиз  3635

Языки,  платформы...

Для  мобильного  клиентавсё  равно

Сервер  для  самых  маленькихиз  3636

Что  не  все-­‐равно

•HTTPS(самый  простой  способ  защиты,  хоть  и  тормозит)

• REST(полезные  практики,  упрощающие  жизнь)

• кросс-­‐серверное  взаимодействие  (для  inApp  Purchase,  например)

• KeepAlive,  Pipelining,  etc.(у  мобильных  клиентов  —  медленный  интернет)

Вопросы?

Спасибо!Вам  надоедал:Шурик  Бабаев

alex@devpocket.ruhip://DevPocket.ru  hip://TouchDev.ru

Recommended