SlideShare a Scribd company logo
1 of 39
Download to read offline
Сервер
для  самых  маленьких




                 Шурик  Бабаев,  DevPocket
Здравствуйте!




1 из  36            Сервер  для  самых  маленьких
Кто  я?  Откуда  я?

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


                             Шурик Бабаев



2 из  36                     Сервер  для  самых  маленьких
Чем  я  занимаюсь?
                                      (Программирую)
На  чем?
       C++  ⟶  Java,  ObjecNve-­‐C
       (а  еще  C,  JavaScript,  Groovy,  Scala,  ML,  Racket,  Ruby,  ...)
Что?
       Серверы  и  прикладные  приложения
       (hip://TouchDev.ru  и  еще  несколько  проектов)

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




 3 из  36                                                                     Сервер  для  самых  маленьких
План
    • Зачем  нам  сервер?
        
    • Зачем  нам  еще  один  сервер?
        
    • Общие  принципы,  грабли,  плюшки.
        
    • Кто  главный?
        
    • На  чем  писать?
        


4 из  36                      Сервер  для  самых  маленьких
План
    • Зачем  нам  сервер?
        
    • Зачем  нам  еще  один  сервер?
        
    • Общие  принципы,  грабли,  плюшки.
        
    • Кто  главный?
        
    • На  чем  писать?
        


5 из  36                      Сервер  для  самых  маленьких
Оффлайновые  задачи
    • Персональные  приложения
           («никому  не  покажу,  что  я  тут  пишу»)

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

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

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


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




7 из  36         Шурик  Бабаев,  DevPocket
Онлайновые  задачи

    • Персональные  приложения
    • Игры
    • Связь  с  «железками»
    • ...  

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




9 из  36            Шурик  Бабаев,  DevPocket
Существующие  сервисы
            • Кто-­‐то  их  сделал  за  вас  
               (и  некоторые  даже  работают)

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

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



10 из  36                                    Сервер  для  самых  маленьких
11 из  36   Шурик  Бабаев,  DevPocket
Свой  сервис
            • Именно  то,  что  нужно  
              (но  сначала  нужно  это  создать)

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

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



12 из  36                                          Сервер  для  самых  маленьких
Чужие  против  своих




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


13 из  36               Шурик  Бабаев,  DevPocket
Когда  нужен  свой?
      • Обычно,  когда  нагрузка  очень  большая
            (стоимость  сервисов  ≈  стоимость  разработки)

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

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



14 из  36                                     Сервер  для  самых  маленьких
План
     • Зачем  нам  сервер?
         
     • Зачем  нам  еще  один  сервер?
         
     • Общие  принципы,  грабли,  плюшки.
         
     • Кто  главный?
         
     • На  чем  писать?
         


15 из  36                     Сервер  для  самых  маленьких
А  у  нас  уже  есть  один!

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

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

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



16 из  36                                        Сервер  для  самых  маленьких
Один  за  всех
     • HTML
            (плохо  парсится,  совсем  не  вариант)

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

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

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

17 из  36                                        Сервер  для  самых  маленьких
К  чему  стремимся?
      Сервер                                Клиенты



       СУБД    Логика

                        API


                                              HTML




18 из  36                     Сервер  для  самых  маленьких
Каждому  по  интерфейсу

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

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




19 из  36                           Сервер  для  самых  маленьких
План
     • Зачем  нам  сервер?
         
     • Зачем  нам  еще  один  сервер?
         
     • Общие  принципы,  грабли,  плюшки.
         
     • Кто  главный?
         
     • На  чем  писать?
         


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




21 из  36          Шурик  Бабаев,  DevPocket
Обычно  все  не  так
     • Сервер  уже  есть;
     • Написан  сервер  как  попало;
     • Специалист  ушел  в  другую  компанию;
     • Сделать  нужно  быстро;
     • Поддержка  должна  быть  недорогой.

22 из  36                        Сервер  для  самых  маленьких
Протокол
     • XML/JSON
            (хорошая  поддержка  мобильных  платформ)

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

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

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

23 из  36                                       Сервер  для  самых  маленьких
XML/JSON
     • Готовая  поддержка  на  платформах
     • KISS!
            (DOM  часто  недоступен,  XPath  тоже)

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

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

24 из  36                                       Сервер  для  самых  маленьких
Не  WebServices
     • Очень  долго
            (библиотеку  нужно  разрабатывать  с  нуля)

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

     • WebServices  сделан  не  для  этого!
     • Если  есть  лишние  деньги  —  можно☺

25 из  36                                      Сервер  для  самых  маленьких
SAX
<user>
                              <user  
  <name>Шурик</name>
                               name=”Шурик”  
  <coolness>high</coolness>
                               coolness=”high”/>
</user>

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


26 из  36                       Сервер  для  самых  маленьких
SAX
<user>
                              <user  
  <name>Шурик</name>
                               name=”Шурик”  
  <coolness>high</coolness>
                               coolness=”high”/>
</user>

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


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

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

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

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



28 из  36                                       Сервер  для  самых  маленьких
Один  на  один
                    • Запрос,  чтобы  
                      отобразить  текст
                    • Отдельные  —  чтобы  
                      показать  графику
                    • Загружайте  
                      маленькие  картинки


29 из  36             Сервер  для  самых  маленьких
План
      • Зачем  нам  сервер?
          
      • Зачем  нам  еще  один  сервер?
          
      • Общие  принципы,  грабли,  плюшки.
          
      • Кто  главный?
          
      • На  чем  писать?
          

30 из  36                       Сервер  для  самых  маленьких
Курица  или  яйцо?


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




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

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

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

32 из  36                                      Сервер  для  самых  маленьких
План
     • Зачем  нам  сервер?
         
     • Зачем  нам  еще  один  сервер?
         
     • Общие  принципы,  грабли,  плюшки.
         
     • Кто  главный?
         
     • На  чем  писать?
         


33 из  36                      Сервер  для  самых  маленьких
Налево  пойдешь...




34 из  36           Шурик  Бабаев,  DevPocket
Языки,  платформы...


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

35 из  36       Сервер  для  самых  маленьких
Что  не  все-­‐равно
     • HTTPS
            (самый  простой  способ  защиты,  хоть  и  тормозит)

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

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

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

36 из  36                                       Сервер  для  самых  маленьких
Вопросы?
Спасибо!
           Вам  надоедал:
           Шурик  Бабаев
         alex@devpocket.ru
hip://DevPocket.ru  hip://TouchDev.ru

More Related Content

What's hot

Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезныSergey Xek
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?Daniel Podolsky
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Ontico
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...Anastasia Rostova
 
Павел Прищепа. Бббыстрый бэкенд на базе друпал
Павел Прищепа. Бббыстрый бэкенд на базе друпалПавел Прищепа. Бббыстрый бэкенд на базе друпал
Павел Прищепа. Бббыстрый бэкенд на базе друпалKsenia Rogachenko
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Oleg Tsarev
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Ontico
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Ontico
 
Вы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийВы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийFuenteovejuna
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Badoo Development
 
Архитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самАрхитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самSergey Xek
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)Ontico
 
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine "Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine Vladimir Ivanov
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 

What's hot (17)

Не все базы данных одинаково полезны
Не все базы данных одинаково полезныНе все базы данных одинаково полезны
Не все базы данных одинаково полезны
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
 
Павел Прищепа. Бббыстрый бэкенд на базе друпал
Павел Прищепа. Бббыстрый бэкенд на базе друпалПавел Прищепа. Бббыстрый бэкенд на базе друпал
Павел Прищепа. Бббыстрый бэкенд на базе друпал
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...
 
Вы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья КосмодемьянскийВы решили написать собственное хранилище, Илья Космодемьянский
Вы решили написать собственное хранилище, Илья Космодемьянский
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
 
Архитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самАрхитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай сам
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
 
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine "Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 

Viewers also liked

Учебный сервер ЦИТО
Учебный сервер ЦИТОУчебный сервер ЦИТО
Учебный сервер ЦИТОthecitomedia
 
Интернет Контроль Сервер 2.0
Интернет Контроль Сервер 2.0Интернет Контроль Сервер 2.0
Интернет Контроль Сервер 2.0runastik
 
Терминальный сервер на Linux
Терминальный сервер на LinuxТерминальный сервер на Linux
Терминальный сервер на Linuxredpolly
 
"Сервер компетенций" SHS
"Сервер компетенций" SHS"Сервер компетенций" SHS
"Сервер компетенций" SHSSMART Human Solutions
 
Beware! Avoid These Presentation Storytelling Mistakes
Beware! Avoid These Presentation Storytelling MistakesBeware! Avoid These Presentation Storytelling Mistakes
Beware! Avoid These Presentation Storytelling MistakesEthos3
 
Секреты презентации. Как сделать презентацию для спикера?
Секреты презентации. Как сделать презентацию для спикера?Секреты презентации. Как сделать презентацию для спикера?
Секреты презентации. Как сделать презентацию для спикера?Inspired presentation
 
Что такое аналитика в маркетинге, зачем она нужна, и как ее готовить
Что такое аналитика в маркетинге, зачем она нужна, и как ее готовитьЧто такое аналитика в маркетинге, зачем она нужна, и как ее готовить
Что такое аналитика в маркетинге, зачем она нужна, и как ее готовитьMindbox
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

Viewers also liked (10)

Учебный сервер ЦИТО
Учебный сервер ЦИТОУчебный сервер ЦИТО
Учебный сервер ЦИТО
 
Интернет Контроль Сервер
Интернет Контроль СерверИнтернет Контроль Сервер
Интернет Контроль Сервер
 
Интернет Контроль Сервер 2.0
Интернет Контроль Сервер 2.0Интернет Контроль Сервер 2.0
Интернет Контроль Сервер 2.0
 
Корпоративный сервер на базе GNU/Linux
Корпоративный сервер на базе GNU/LinuxКорпоративный сервер на базе GNU/Linux
Корпоративный сервер на базе GNU/Linux
 
Терминальный сервер на Linux
Терминальный сервер на LinuxТерминальный сервер на Linux
Терминальный сервер на Linux
 
"Сервер компетенций" SHS
"Сервер компетенций" SHS"Сервер компетенций" SHS
"Сервер компетенций" SHS
 
Beware! Avoid These Presentation Storytelling Mistakes
Beware! Avoid These Presentation Storytelling MistakesBeware! Avoid These Presentation Storytelling Mistakes
Beware! Avoid These Presentation Storytelling Mistakes
 
Секреты презентации. Как сделать презентацию для спикера?
Секреты презентации. Как сделать презентацию для спикера?Секреты презентации. Как сделать презентацию для спикера?
Секреты презентации. Как сделать презентацию для спикера?
 
Что такое аналитика в маркетинге, зачем она нужна, и как ее готовить
Что такое аналитика в маркетинге, зачем она нужна, и как ее готовитьЧто такое аналитика в маркетинге, зачем она нужна, и как ее готовить
Что такое аналитика в маркетинге, зачем она нужна, и как ее готовить
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

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

Дорога к микросервисной архитектуре
Дорога к микросервисной архитектуреДорога к микросервисной архитектуре
Дорога к микросервисной архитектуреCodeFest
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей Калинец"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей КалинецFwdays
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Алексей Романчук «Реактивное программирование»
Алексей Романчук «Реактивное программирование»Алексей Романчук «Реактивное программирование»
Алексей Романчук «Реактивное программирование»DevDay
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиYuriy Vasiyarov
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricksSveta Bozhko
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Ontico
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsDaniel Podolsky
 
Mihail Korepanov
Mihail KorepanovMihail Korepanov
Mihail Korepanovyaevents
 
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Yandex
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Tanya Denisyuk
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 

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

Дорога к микросервисной архитектуре
Дорога к микросервисной архитектуреДорога к микросервисной архитектуре
Дорога к микросервисной архитектуре
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей Калинец"Разрушаем .NET мифы" Сергей Калинец
"Разрушаем .NET мифы" Сергей Калинец
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Алексей Романчук «Реактивное программирование»
Алексей Романчук «Реактивное программирование»Алексей Романчук «Реактивное программирование»
Алексей Романчук «Реактивное программирование»
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработки
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
Mihail Korepanov
Mihail KorepanovMihail Korepanov
Mihail Korepanov
 
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
Little Service in 2h
Little Service in 2hLittle Service in 2h
Little Service in 2h
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 

More from CodeFest

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита ПрокоповCodeFest
 
Денис Баталов
Денис БаталовДенис Баталов
Денис БаталовCodeFest
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена ГальцинаCodeFest
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр КалашниковCodeFest
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина ИвановаCodeFest
 
Marko Berković
Marko BerkovićMarko Berković
Marko BerkovićCodeFest
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис КортуновCodeFest
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр ЗиминCodeFest
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей ИгнатовCodeFest
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай КрапивныйCodeFest
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим СмирновCodeFest
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene GroeschkeCodeFest
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван БондаренкоCodeFest
 
Mete Atamel
Mete AtamelMete Atamel
Mete AtamelCodeFest
 

More from CodeFest (20)

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита Прокопов
 
Денис Баталов
Денис БаталовДенис Баталов
Денис Баталов
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена Гальцина
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр Калашников
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина Иванова
 
Marko Berković
Marko BerkovićMarko Berković
Marko Berković
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис Кортунов
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр Зимин
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей Игнатов
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим Смирнов
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван Бондаренко
 
Mete Atamel
Mete AtamelMete Atamel
Mete Atamel
 

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

  • 1. Сервер для  самых  маленьких Шурик  Бабаев,  DevPocket
  • 2. Здравствуйте! 1 из  36 Сервер  для  самых  маленьких
  • 3. Кто  я?  Откуда  я? ДевПокет, Санкт-Петербург Шурик Бабаев 2 из  36 Сервер  для  самых  маленьких
  • 4. Чем  я  занимаюсь? (Программирую) На  чем? C++  ⟶  Java,  ObjecNve-­‐C (а  еще  C,  JavaScript,  Groovy,  Scala,  ML,  Racket,  Ruby,  ...) Что? Серверы  и  прикладные  приложения (hip://TouchDev.ru  и  еще  несколько  проектов) Некоторые  мобильные  приложения: 3 из  36 Сервер  для  самых  маленьких
  • 5. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?   4 из  36 Сервер  для  самых  маленьких
  • 6. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?   5 из  36 Сервер  для  самых  маленьких
  • 7. Оффлайновые  задачи • Персональные  приложения («никому  не  покажу,  что  я  тут  пишу») • Игры («ни  с  кем  играть  не  хочу,  сам  буду») • Связь  с  «железками» («управление  персональным  танком») • ...  и  все? (не  совсем,  но  сильно  больше  не  наковыряешь) 6 из  36 Сервер  для  самых  маленьких
  • 8. Оффлайн 7 из  36 Шурик  Бабаев,  DevPocket
  • 9. Онлайновые  задачи • Персональные  приложения • Игры • Связь  с  «железками» • ...   8 из  36 Сервер  для  самых  маленьких
  • 10. Онлайн 9 из  36 Шурик  Бабаев,  DevPocket
  • 11. Существующие  сервисы • Кто-­‐то  их  сделал  за  вас   (и  некоторые  даже  работают) • Не  нужно  поддерживать   (но  нужно  писать  багрепорты) • Готовый  API (удобный  ли?  интересный  вопрос) 10 из  36 Сервер  для  самых  маленьких
  • 12. 11 из  36 Шурик  Бабаев,  DevPocket
  • 13. Свой  сервис • Именно  то,  что  нужно   (но  сначала  нужно  это  создать) • Правильный  API (что  очень  сильно  сказывается  на  самом  приложении) • Проще  развивать (но  поддержка  стоит  денег) 12 из  36 Сервер  для  самых  маленьких
  • 14. Чужие  против  своих деньги гибкость 13 из  36 Шурик  Бабаев,  DevPocket
  • 15. Когда  нужен  свой? • Обычно,  когда  нагрузка  очень  большая (стоимость  сервисов  ≈  стоимость  разработки) • Нужны  уникальные  фичи (вы  первые,  кто  додумался) • Соображения  безопасности (или  специфические  требования  к  ней) 14 из  36 Сервер  для  самых  маленьких
  • 16. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?   15 из  36 Сервер  для  самых  маленьких
  • 17. А  у  нас  уже  есть  один! • обслуживает  web-­‐страницы (быстро,  модно,  красиво) • AJAX (почему  бы  им  тоже  не  воспользоваться?) • Ведь  два  сервера  поддерживать  нужно! (а  вот  про  это  поподробнее...) 16 из  36 Сервер  для  самых  маленьких
  • 18. Один  за  всех • HTML (плохо  парсится,  совсем  не  вариант) • XHTML/XML (парсится  хорошо,  но  зачем  нам  представление?) • JSON (завязан  на  структуру  страниц,  а  не  мобильных  экранов) Можно?  Да.  Но  мобильная  разработка будет  сложнее  в  разы. 17 из  36 Сервер  для  самых  маленьких
  • 19. К  чему  стремимся? Сервер Клиенты СУБД Логика API HTML 18 из  36 Сервер  для  самых  маленьких
  • 20. Каждому  по  интерфейсу Ничего  нового,  простите,  просто   грамотное  планирование или  рефакторинг 19 из  36 Сервер  для  самых  маленьких
  • 21. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?   20 из  36 Сервер  для  самых  маленьких
  • 22. Картинка 21 из  36 Шурик  Бабаев,  DevPocket
  • 23. Обычно  все  не  так • Сервер  уже  есть; • Написан  сервер  как  попало; • Специалист  ушел  в  другую  компанию; • Сделать  нужно  быстро; • Поддержка  должна  быть  недорогой. 22 из  36 Сервер  для  самых  маленьких
  • 24. Протокол • XML/JSON (хорошая  поддержка  мобильных  платформ) • Не  WebServices/другой  RPC (можно,  но  стандартной  поддержки  нет) • Внимание!  XML  —  парсится  SAX’ом (атрибуты  —  удобнее,  чем  подтэги) • Мобильный  интернет  —  медленный (один  экран  —  один  запрос) 23 из  36 Сервер  для  самых  маленьких
  • 25. XML/JSON • Готовая  поддержка  на  платформах • KISS! (DOM  часто  недоступен,  XPath  тоже) • Только  для  данных (интерфейс  должен  быть  нативный) • Только  для  данных 24 из  36 Сервер  для  самых  маленьких
  • 26. Не  WebServices • Очень  долго (библиотеку  нужно  разрабатывать  с  нуля) • Излишне  длинно (протокол  многословный) • WebServices  сделан  не  для  этого! • Если  есть  лишние  деньги  —  можно☺ 25 из  36 Сервер  для  самых  маленьких
  • 27. SAX <user> <user   <name>Шурик</name> name=”Шурик”   <coolness>high</coolness> coolness=”high”/> </user> • Требует  более   • Легко! сложного  парсера 26 из  36 Сервер  для  самых  маленьких
  • 28. SAX <user> <user   <name>Шурик</name> name=”Шурик”   <coolness>high</coolness> coolness=”high”/> </user> • Требует  более   • Легко! сложного  парсера 27 из  36 Сервер  для  самых  маленьких
  • 29. Один  на  один • Мобильный  интернет  медленный (особенно  если  двигаться) • Пользователь  хочет  сейчас! (дольше  10  секунд  —  долго) • Один  экран  —  один  запрос (один  на  каркас,  остальное  по  экранам) 28 из  36 Сервер  для  самых  маленьких
  • 30. Один  на  один • Запрос,  чтобы   отобразить  текст • Отдельные  —  чтобы   показать  графику • Загружайте   маленькие  картинки 29 из  36 Сервер  для  самых  маленьких
  • 31. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?   30 из  36 Сервер  для  самых  маленьких
  • 32. Курица  или  яйцо? • тут  картинка  нада 31 из  36 Сервер  для  самых  маленьких
  • 33. Опыт • Договориться  о  протоколе (выше  сказано,  как  будет  правильно) • Реализовать  кусочек (чтобы  наступить  на  пару  граблей  и  учесть  их) • Протестировать  и  поправить • Повторить  по  необходимости 32 из  36 Сервер  для  самых  маленьких
  • 34. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?   33 из  36 Сервер  для  самых  маленьких
  • 35. Налево  пойдешь... 34 из  36 Шурик  Бабаев,  DevPocket
  • 36. Языки,  платформы... Для  мобильного  клиента всё  равно 35 из  36 Сервер  для  самых  маленьких
  • 37. Что  не  все-­‐равно • HTTPS (самый  простой  способ  защиты,  хоть  и  тормозит) • REST (полезные  практики,  упрощающие  жизнь) • кросс-­‐серверное  взаимодействие   (для  inApp  Purchase,  например) • KeepAlive,  Pipelining,  etc. (у  мобильных  клиентов  —  медленный  интернет) 36 из  36 Сервер  для  самых  маленьких
  • 39. Спасибо! Вам  надоедал: Шурик  Бабаев alex@devpocket.ru hip://DevPocket.ru  hip://TouchDev.ru