Upload
vadim-kruchkov
View
1.007
Download
0
Embed Size (px)
Citation preview
Как превратить приложение в платформу
Вадим Крючков (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)
и многие другие — в основном вариации трех базовых
Структура облака
CPL
CE
CW
Структура облака
CPL
CE
CW
Панель управления:• Знает все о пользователе • Взаимодействие с пользователем• Биллинг
Структура облака
CPL
CE
CW
Cloud Engine:• Знает о «железе»• Управляет объектами облака
Структура облака
CPL
CE
CW
Cloud Watch:• Глаза сервиса — система мониторинга• Генератор Event'ов
Структура облака
CPL
CE
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 RPCRPC позволяет использовать небольшое количество сетевых ресурсов с большим количеством методов и сложным протоколом. 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.1Cookie: PHPSESSID=2c9177dfbbce6268f3693646e6846f38; path=/Content-Type: application/x-www-form-urlencodedUser-Agent: http4e/1.6.1Host: 127.0.0.1Content-Length: 242{"instance": { "name":"Тестовый инстанс", "slots":2, "ip": { "private":["192.168.0.3"], "public":["217.29.52.254"] } }, "idProject":48 }
HTTP/1.1 200 OKServer: nginx/0.6.35Date: Wed, 07 Oct 2009 14:34:58 GMTContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Powered-By: PHP/5.3.0Expires: Thu, 19 Nov 1981 08:52:00 GMT
{ "result": {"instance": { "name": "Тестовый инстанс", "id": 4, "loadAVG": 0, "status": 0, "ip": { "private": ["192.168.0.3"], "public": ["217.29.52.254"] }, "slots": 2, "idProject": 48 }}, "errors": []}
Запрос: Ответ:
Масштабирование инстанса
PUT /api/instance/4/ HTTP/1.1Cookie: PHPSESSID=2c9177dfbbce6268f3693646e6846f38; path=/Content-Type: application/x-www-form-urlencodedUser-Agent: http4e/1.6.1Host: 127.0.0.1Content-Length: 105
{"instance": { "slots":"10" }, "idProject":"48"}
HTTP/1.1 200 OKServer: nginx/0.6.35Date: Wed, 07 Oct 2009 16:02:02 GMTContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Powered-By: PHP/5.3.0Expires: Thu, 19 Nov 1981 08:52:00 GMTPragma: no-cacheCache-Control: no-cache
{ "result": {"instance": { "name": "Тестовый инстанс", "id": 4, "loadAVG": 0, "status": 2, "ip": { "private": ["192.168.0.3"], "public": ["217.29.52.254"] }, "slots": 10, "idProject": 48 }}, "errors": []}
Запрос: Ответ:
Горизонтальноемасштабирование
• Требования к архитектуре сервиса
• Ограничения — практически нет (только архитектурные)
AutoScale
• Увеличение ресурсов в реальном времени
• Вертикальный:– По времени суток
– По достижению критических параметров
• Горизонтальный — в ближайшем будущем
Плюсы облака
• Масштабирование ресурсов под нагрузку
• Отсутствие «железных» проблем
• Аппаратная защита от DOS, DDOS
• CDN «из коробки»• Экономия $
Минусы облака
• Зарубежные сервисы — задержки
• Мало у кого есть реальный scale — сложности масштабирования
• Scalaxy — этап бета-тестирования :)
Для кого? И для чего?
• Не регулярный трафик
• Экономия на «железе»
• Большие объемы данных
• CPU на время
• StartUp
• Новостные ресурсы
• Файловые хранилища
• Научные расчеты
• Все остальные :)
Это все?
Вопросы?