SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Как превратить
приложение в платформу
             Вадим Крючков (Long)
                  Oversun-Scalaxy
Немного о себе


• Руковожу разработкой
  комплексной панели
  управления в компании
  Oversun
• l-o-n-g.livejournal.com
Цель доклада


На примере Scalaxy API
показать как превратить
приложение в платформу
О чем будет доклад?

• Маркетинговый bullshit в trash
• Как построить API: REST vs …
• Краткое введение в cloud
• Построение API на примере
  масштабирования в облаке
• Плюсы и минусы облаков
• Переезд в облако — оно вам надо?
• Это все?
Что такое Cloud Computing


• Технология обработки данных, в которой программное
обеспечение предоставляется пользователю как
интернет-сервис


• Пользователь имеет доступ к собственным данным, но
не должен заботиться об «железной» инфраструктуре

• «Не ограниченные» вычислительные ресурсы
Какие бывают облака?
Какие бывают облака?

• IaaS (Infrastructure-as-a-Service)
  предоставить пользователю некую инфраструктуру в виде
  сервиса (VPS+хранилище)
  Amazon (EC2=Elastic Compute Cloud, S3=Simple Storage
  Service), GoGrid, Gandi
• PaaS (Platform-as-a-Service)
• SaaS (Software-as-a-Service)
• ...aaS (Communication, Workplace)
Какие бывают облака?

• IaaS (Infrastructure-as-a-Service)
• PaaS (Platform-as-a-Service)
  предоставление какой-либо платформы (для
  разработки ПО или хостинга веб-приложений)
  AppEngine (Google), Mosso, Apatana Cloud, Azure и др.
• SaaS (Software-as-a-Service)
• ...aaS (Communication, Workplace)
Какие бывают облака?

• IaaS (Infrastructure-as-a-Service)
• PaaS (Platform-as-a-Service)
• SaaS (Software-as-a-Service)
  использование какого-то конкретного ПО, например,
  корпоративные системы, в виде сервиса по подписке
  Google Docs, MobileMe (Apple), LotusLive (IBM)
• ...aaS (Communication, Workplace)
Какие бывают облака?

•   IaaS (Infrastructure-as-a-Service)
•   PaaS (Platform-as-a-Service)
•   SaaS (Software-as-a-Service)
•   ...aaS (Communication, Workplace)
    и многие другие — в основном вариации трех
    базовых
Структура облака


      CE

CPL        CW
Структура облака


                 CE

      CPL                CW


Панель управления:
• Знает все о пользователе
• Взаимодействие с пользователем
• Биллинг
Структура облака


                CE

     CPL                CW


Cloud Engine:
• Знает о «железе»
• Управляет объектами облака
Структура облака


               CE

    CPL               CW


Cloud Watch:
• Глаза сервиса — система мониторинга
• Генератор Event'ов
Структура облака
                               Взаимодействие сервисов


                        CE

          CPL                       CW
• SOA — принципы:
- Архитектура не привязана к какой-то технологии
- Независимость системы от платформы,
- Независимость от языков программирования,
- Сервисы независимы от приложений, с единообразными
  интерфейсами доступа к ним,
- Сервисы - слабо-связанные компоненты
• REST (простота общения)
REST — с чем его едят
                                               REpresentational State Transfer
• подход к архитектуре сетевых протоколов, описан в 2000 году
Ройем Филдингом
• сетевой ресурс должен поддерживать операции - GET, PUT, POST и
DELETE
• данные передаются в виде стандартных форматов (HTML, XML,
JSON)
• не зависит от сетевого уровня
• не сохраняет состояний между запросами (на практике накладно)
• позволяет легко масштабироваться и добавлять новые свойства
Ссылки:
• Roy Fielding - Architectural Styles and the Design of Network-based Software Architectures
• Джон Фландерс - Введение в службы RESTful с использованием WCF
Почему REST?
REST vs RPC
RPC позволяет использовать небольшое количество сетевых ресурсов с большим
количеством методов и сложным протоколом. REST - количество методов и
сложность протокола ограничены, следовательно количество отдельных ресурсов
должно быть большим.

SOAP
Плюсы:
• Жесткая проверка типов
• Имеются специальные средства разработки
Минусы:
• Большой объем (XML)
• Тяжело читаем человеком
• Сложней в реализации
CPL - подробно
Как защититься от
            продвинутого пользователя?


1. Открыть HTML и проанализировать запросы
2. Эмулировать браузер (cURL)


   Как защититься от умного клиента?
Как защититься от
продвинутого пользователя?




  НИКАК! :)
Как защититься от
     продвинутого пользователя?


Только дружить — превратите
  приложение в платформу

       Откройте API
CPL — подробно. v2
Критерии хорошего API

• Простота
  – Понимания
  – Реализации
• Четкое выделение
  – Сущностей
  – Событий
• Документация
Выделяем сущности

    Определяем то, с чем работаем:
•   Account
•   Project
•   Instance
•   Volume
•   FireWall
•    ...
Масштабирование в облаке

Причины:
• CPU (la)
• Memory (свободный
  объем)
• Диск (свободный
  объем / iops)
• Network (полоса)
     Решение?
Вертикальное
масштабирование
 • Слабая
   зависимость от
   архитектуры
   проекта
 • Ограничение —
   физический
   сервер
   (временно)
Создание инстанса
      Запрос:                                 Ответ:
POST /api/instance/ HTTP/1.1                  HTTP/1.1 200 OK
Cookie:                                       Server: nginx/0.6.35
PHPSESSID=2c9177dfbbce6268f3693646e6846f38;   Date: Wed, 07 Oct 2009 14:34:58 GMT
path=/
                                              Content-Type: application/json; charset=utf-8
Content-Type: application/x-www-form-         Connection: keep-alive
urlencoded
                                              X-Powered-By: PHP/5.3.0
User-Agent: http4e/1.6.1
                                              Expires: Thu, 19 Nov 1981 08:52:00 GMT
Host: 127.0.0.1
Content-Length: 242                           {
{"instance":                                      "result": {"instance": {
          {                                         "name": "Тестовый инстанс",
           "name":"Тестовый инстанс",              "id": 4,
                                                   "loadAVG": 0,
           "slots":2,
                                                   "status": 0,
           "ip":                                   "ip": {
              {                                         "private": ["192.168.0.3"],
               "private":["192.168.0.3"],               "public": ["217.29.52.254"]
               "public":["217.29.52.254"]          },
                                                   "slots": 2,
              }
                                                   "idProject": 48
          },
                                                  }},
    "idProject":48                                "errors": []
}                                             }
Масштабирование инстанса
    Запрос:                       Ответ:
PUT /api/instance/4/ HTTP/1.1     HTTP/1.1 200 OK
                                  Server: nginx/0.6.35
Cookie:                           Date: Wed, 07 Oct 2009 16:02:02 GMT
PHPSESSID=2c9177dfbbce6268f3693   Content-Type: application/json; charset=utf-8
646e6846f38; path=/               Connection: keep-alive
                                  X-Powered-By: PHP/5.3.0
Content-Type: application/x-      Expires: Thu, 19 Nov 1981 08:52:00 GMT
www-form-urlencoded               Pragma: no-cache
                                  Cache-Control: no-cache
User-Agent: http4e/1.6.1
                                  {
Host: 127.0.0.1
                                      "result": {"instance": {
Content-Length: 105                     "name": "Тестовый инстанс",
                                        "id": 4,
                                        "loadAVG": 0,
{"instance":                            "status": 2,
                                        "ip": {
    {                                     "private": ["192.168.0.3"],
                                          "public": ["217.29.52.254"]
        "slots":"10"                    },
    },                                  "slots": 10,
                                        "idProject": 48
    "idProject":"48"                  }},
                                      "errors": []
}
                                  }
Горизонтальное
масштабирование

• Требования к
  архитектуре
  сервиса
• Ограничения —
  практически нет
  (только
  архитектурные)
AutoScale

• Увеличение ресурсов в
  реальном времени
• Вертикальный:
  – По времени суток
  – По достижению
    критических параметров
• Горизонтальный — в
  ближайшем будущем
Плюсы облака

• Масштабирование
  ресурсов под нагрузку
• Отсутствие «железных»
  проблем
• Аппаратная защита от
  DOS, DDOS
• CDN «из коробки»
• Экономия $
Минусы облака

• Зарубежные
  сервисы —
  задержки
• Мало у кого есть
  реальный scale —
  сложности
  масштабирования
• Scalaxy — этап бета-
  тестирования :)
Для кого? И для чего?

•   Не регулярный трафик
•   Экономия на «железе»
•   Большие объемы данных
•   CPU на время


•   StartUp
•   Новостные ресурсы
•   Файловые хранилища
•   Научные расчеты
•   Все остальные :)
Это все?




Вопросы?

Mais conteúdo relacionado

Mais procurados

Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Ontico
 
Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Cisco Russia
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Ontico
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Ontico
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Ontico
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Ontico
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOntico
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Ontico
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Дмитрий Стогов
Дмитрий СтоговДмитрий Стогов
Дмитрий СтоговCodeFest
 
Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptTimur Shemsedinov
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Ontico
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
 

Mais procurados (20)

Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
 
Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Дмитрий Стогов
Дмитрий СтоговДмитрий Стогов
Дмитрий Стогов
 
Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScript
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Major mistakes in site moving
Major mistakes in site movingMajor mistakes in site moving
Major mistakes in site moving
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 

Destaque

Построение гибкого процесса разработки (4-5 курсы)
Построение гибкого процесса разработки (4-5 курсы)Построение гибкого процесса разработки (4-5 курсы)
Построение гибкого процесса разработки (4-5 курсы)Timur Rakhmatillaev
 
Облачная инфраструктура Amazon We
Облачная инфраструктура Amazon WeОблачная инфраструктура Amazon We
Облачная инфраструктура Amazon WeLeonid Vygovskiy
 
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)Ontico
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумоеTimur Rakhmatillaev
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
 
RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)
RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)
RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)Ontico
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
 
Your hero images need you: Save the day with HTTP2 image loading / Tobias Bal...
Your hero images need you: Save the day with HTTP2 image loading / Tobias Bal...Your hero images need you: Save the day with HTTP2 image loading / Tobias Bal...
Your hero images need you: Save the day with HTTP2 image loading / Tobias Bal...Ontico
 
ReSharper 8.0 или магия продуктивной разработки
ReSharper 8.0 или магия продуктивной разработкиReSharper 8.0 или магия продуктивной разработки
ReSharper 8.0 или магия продуктивной разработкиTimur Rakhmatillaev
 
Опыт переноса в облако услуги «Service Desk»
Опыт переноса в облако услуги «Service Desk»Опыт переноса в облако услуги «Service Desk»
Опыт переноса в облако услуги «Service Desk»КРОК
 
Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Ontico
 
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)Ontico
 
ВСЯ КНИГА ЦЕЛИКОМ (март 2010)
ВСЯ КНИГА ЦЕЛИКОМ (март 2010)ВСЯ КНИГА ЦЕЛИКОМ (март 2010)
ВСЯ КНИГА ЦЕЛИКОМ (март 2010)RussianServiceBook
 
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)Ontico
 
Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)
Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)
Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)Ontico
 

Destaque (20)

Fluent OpenXML - Foxby
Fluent OpenXML - FoxbyFluent OpenXML - Foxby
Fluent OpenXML - Foxby
 
Построение гибкого процесса разработки (4-5 курсы)
Построение гибкого процесса разработки (4-5 курсы)Построение гибкого процесса разработки (4-5 курсы)
Построение гибкого процесса разработки (4-5 курсы)
 
Outsourcing Saas
Outsourcing SaasOutsourcing Saas
Outsourcing Saas
 
Облачная инфраструктура Amazon We
Облачная инфраструктура Amazon WeОблачная инфраструктура Amazon We
Облачная инфраструктура Amazon We
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
NPAPI
NPAPINPAPI
NPAPI
 
Orion Two MKK 09-04-2015
Orion Two MKK 09-04-2015Orion Two MKK 09-04-2015
Orion Two MKK 09-04-2015
 
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумое
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
 
RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)
RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)
RTB в телевизоре и на улицах / Михаил Мельников (IPONWEB)
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 
Your hero images need you: Save the day with HTTP2 image loading / Tobias Bal...
Your hero images need you: Save the day with HTTP2 image loading / Tobias Bal...Your hero images need you: Save the day with HTTP2 image loading / Tobias Bal...
Your hero images need you: Save the day with HTTP2 image loading / Tobias Bal...
 
ReSharper 8.0 или магия продуктивной разработки
ReSharper 8.0 или магия продуктивной разработкиReSharper 8.0 или магия продуктивной разработки
ReSharper 8.0 или магия продуктивной разработки
 
Опыт переноса в облако услуги «Service Desk»
Опыт переноса в облако услуги «Service Desk»Опыт переноса в облако услуги «Service Desk»
Опыт переноса в облако услуги «Service Desk»
 
Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)
 
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
Измеряем энергопотребление с помощью Arduino / Алексей Лавренюк (Яндекс)
 
ВСЯ КНИГА ЦЕЛИКОМ (март 2010)
ВСЯ КНИГА ЦЕЛИКОМ (март 2010)ВСЯ КНИГА ЦЕЛИКОМ (март 2010)
ВСЯ КНИГА ЦЕЛИКОМ (март 2010)
 
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
Anti-fraud solutions in RTB / Вадим Антонюк (IPONWEB)
 
Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)
Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)
Применяем стандарты кодирования NASA к JavaScript / Денис Радин (Liberty Global)
 

Semelhante a Как превратить приложение в платформу

Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Ontico
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"FDConf
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаAlexei Smolyanov
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Alexey Bokov
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusCisco Russia
 
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)Ontico
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиBusiness incubator HSE
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомAlexander Titov
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...DevDay
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис ГлазковMail.ru Group
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28MoscowJS
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBStepan Stolyarov
 

Semelhante a Как превратить приложение в платформу (20)

Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчика
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
Sivko
SivkoSivko
Sivko
 
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков«Пиринговый веб на JavaScript», Денис Глазков
«Пиринговый веб на JavaScript», Денис Глазков
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
 
Отличие NGFW и UTM
Отличие NGFW и UTMОтличие NGFW и UTM
Отличие NGFW и UTM
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDB
 

Как превратить приложение в платформу

  • 1. Как превратить приложение в платформу Вадим Крючков (Long) Oversun-Scalaxy
  • 2. Немного о себе • Руковожу разработкой комплексной панели управления в компании Oversun • l-o-n-g.livejournal.com
  • 3. Цель доклада На примере Scalaxy API показать как превратить приложение в платформу
  • 4. О чем будет доклад? • Маркетинговый bullshit в trash • Как построить API: REST vs … • Краткое введение в cloud • Построение API на примере масштабирования в облаке • Плюсы и минусы облаков • Переезд в облако — оно вам надо? • Это все?
  • 5. Что такое Cloud Computing • Технология обработки данных, в которой программное обеспечение предоставляется пользователю как интернет-сервис • Пользователь имеет доступ к собственным данным, но не должен заботиться об «железной» инфраструктуре • «Не ограниченные» вычислительные ресурсы
  • 7. Какие бывают облака? • IaaS (Infrastructure-as-a-Service) предоставить пользователю некую инфраструктуру в виде сервиса (VPS+хранилище) Amazon (EC2=Elastic Compute Cloud, S3=Simple Storage Service), GoGrid, Gandi • PaaS (Platform-as-a-Service) • SaaS (Software-as-a-Service) • ...aaS (Communication, Workplace)
  • 8. Какие бывают облака? • IaaS (Infrastructure-as-a-Service) • PaaS (Platform-as-a-Service) предоставление какой-либо платформы (для разработки ПО или хостинга веб-приложений) AppEngine (Google), Mosso, Apatana Cloud, Azure и др. • SaaS (Software-as-a-Service) • ...aaS (Communication, Workplace)
  • 9. Какие бывают облака? • IaaS (Infrastructure-as-a-Service) • PaaS (Platform-as-a-Service) • SaaS (Software-as-a-Service) использование какого-то конкретного ПО, например, корпоративные системы, в виде сервиса по подписке Google Docs, MobileMe (Apple), LotusLive (IBM) • ...aaS (Communication, Workplace)
  • 10. Какие бывают облака? • IaaS (Infrastructure-as-a-Service) • PaaS (Platform-as-a-Service) • SaaS (Software-as-a-Service) • ...aaS (Communication, Workplace) и многие другие — в основном вариации трех базовых
  • 12. Структура облака CE CPL CW Панель управления: • Знает все о пользователе • Взаимодействие с пользователем • Биллинг
  • 13. Структура облака CE CPL CW Cloud Engine: • Знает о «железе» • Управляет объектами облака
  • 14. Структура облака CE CPL CW Cloud Watch: • Глаза сервиса — система мониторинга • Генератор Event'ов
  • 15. Структура облака Взаимодействие сервисов CE CPL CW • SOA — принципы: - Архитектура не привязана к какой-то технологии - Независимость системы от платформы, - Независимость от языков программирования, - Сервисы независимы от приложений, с единообразными интерфейсами доступа к ним, - Сервисы - слабо-связанные компоненты • REST (простота общения)
  • 16. REST — с чем его едят REpresentational State Transfer • подход к архитектуре сетевых протоколов, описан в 2000 году Ройем Филдингом • сетевой ресурс должен поддерживать операции - GET, PUT, POST и DELETE • данные передаются в виде стандартных форматов (HTML, XML, JSON) • не зависит от сетевого уровня • не сохраняет состояний между запросами (на практике накладно) • позволяет легко масштабироваться и добавлять новые свойства Ссылки: • Roy Fielding - Architectural Styles and the Design of Network-based Software Architectures • Джон Фландерс - Введение в службы RESTful с использованием WCF
  • 17. Почему REST? REST vs RPC RPC позволяет использовать небольшое количество сетевых ресурсов с большим количеством методов и сложным протоколом. REST - количество методов и сложность протокола ограничены, следовательно количество отдельных ресурсов должно быть большим. SOAP Плюсы: • Жесткая проверка типов • Имеются специальные средства разработки Минусы: • Большой объем (XML) • Тяжело читаем человеком • Сложней в реализации
  • 19. Как защититься от продвинутого пользователя? 1. Открыть HTML и проанализировать запросы 2. Эмулировать браузер (cURL) Как защититься от умного клиента?
  • 20. Как защититься от продвинутого пользователя? НИКАК! :)
  • 21. Как защититься от продвинутого пользователя? Только дружить — превратите приложение в платформу Откройте API
  • 23. Критерии хорошего API • Простота – Понимания – Реализации • Четкое выделение – Сущностей – Событий • Документация
  • 24. Выделяем сущности Определяем то, с чем работаем: • Account • Project • Instance • Volume • FireWall • ...
  • 25. Масштабирование в облаке Причины: • CPU (la) • Memory (свободный объем) • Диск (свободный объем / iops) • Network (полоса) Решение?
  • 26. Вертикальное масштабирование • Слабая зависимость от архитектуры проекта • Ограничение — физический сервер (временно)
  • 27. Создание инстанса Запрос: Ответ: POST /api/instance/ HTTP/1.1 HTTP/1.1 200 OK Cookie: Server: nginx/0.6.35 PHPSESSID=2c9177dfbbce6268f3693646e6846f38; Date: Wed, 07 Oct 2009 14:34:58 GMT path=/ Content-Type: application/json; charset=utf-8 Content-Type: application/x-www-form- Connection: keep-alive urlencoded X-Powered-By: PHP/5.3.0 User-Agent: http4e/1.6.1 Expires: Thu, 19 Nov 1981 08:52:00 GMT Host: 127.0.0.1 Content-Length: 242 { {"instance": "result": {"instance": { { "name": "Тестовый инстанс", "name":"Тестовый инстанс", "id": 4, "loadAVG": 0, "slots":2, "status": 0, "ip": "ip": { { "private": ["192.168.0.3"], "private":["192.168.0.3"], "public": ["217.29.52.254"] "public":["217.29.52.254"] }, "slots": 2, } "idProject": 48 }, }}, "idProject":48 "errors": [] } }
  • 28. Масштабирование инстанса Запрос: Ответ: PUT /api/instance/4/ HTTP/1.1 HTTP/1.1 200 OK Server: nginx/0.6.35 Cookie: Date: Wed, 07 Oct 2009 16:02:02 GMT PHPSESSID=2c9177dfbbce6268f3693 Content-Type: application/json; charset=utf-8 646e6846f38; path=/ Connection: keep-alive X-Powered-By: PHP/5.3.0 Content-Type: application/x- Expires: Thu, 19 Nov 1981 08:52:00 GMT www-form-urlencoded Pragma: no-cache Cache-Control: no-cache User-Agent: http4e/1.6.1 { Host: 127.0.0.1 "result": {"instance": { Content-Length: 105 "name": "Тестовый инстанс", "id": 4, "loadAVG": 0, {"instance": "status": 2, "ip": { { "private": ["192.168.0.3"], "public": ["217.29.52.254"] "slots":"10" }, }, "slots": 10, "idProject": 48 "idProject":"48" }}, "errors": [] } }
  • 29. Горизонтальное масштабирование • Требования к архитектуре сервиса • Ограничения — практически нет (только архитектурные)
  • 30. AutoScale • Увеличение ресурсов в реальном времени • Вертикальный: – По времени суток – По достижению критических параметров • Горизонтальный — в ближайшем будущем
  • 31. Плюсы облака • Масштабирование ресурсов под нагрузку • Отсутствие «железных» проблем • Аппаратная защита от DOS, DDOS • CDN «из коробки» • Экономия $
  • 32. Минусы облака • Зарубежные сервисы — задержки • Мало у кого есть реальный scale — сложности масштабирования • Scalaxy — этап бета- тестирования :)
  • 33. Для кого? И для чего? • Не регулярный трафик • Экономия на «железе» • Большие объемы данных • CPU на время • StartUp • Новостные ресурсы • Файловые хранилища • Научные расчеты • Все остальные :)