Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,230 views

Published on

Published in: Technology
  • Be the first to comment

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

  1. 1. Как превратить приложение в платформу Вадим Крючков (Long) Oversun-Scalaxy
  2. 2. Немного о себе • Руковожу разработкой комплексной панели управления в компании Oversun • l-o-n-g.livejournal.com
  3. 3. Цель доклада На примере Scalaxy API показать как превратить приложение в платформу
  4. 4. О чем будет доклад? • Маркетинговый bullshit в trash • Как построить API: REST vs … • Краткое введение в cloud • Построение API на примере масштабирования в облаке • Плюсы и минусы облаков • Переезд в облако — оно вам надо? • Это все?
  5. 5. Что такое Cloud Computing • Технология обработки данных, в которой программное обеспечение предоставляется пользователю как интернет-сервис • Пользователь имеет доступ к собственным данным, но не должен заботиться об «железной» инфраструктуре • «Не ограниченные» вычислительные ресурсы
  6. 6. Какие бывают облака?
  7. 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. 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. 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. 10. Какие бывают облака? • IaaS (Infrastructure-as-a-Service) • PaaS (Platform-as-a-Service) • SaaS (Software-as-a-Service) • ...aaS (Communication, Workplace) и многие другие — в основном вариации трех базовых
  11. 11. Структура облака CE CPL CW
  12. 12. Структура облака CE CPL CW Панель управления: • Знает все о пользователе • Взаимодействие с пользователем • Биллинг
  13. 13. Структура облака CE CPL CW Cloud Engine: • Знает о «железе» • Управляет объектами облака
  14. 14. Структура облака CE CPL CW Cloud Watch: • Глаза сервиса — система мониторинга • Генератор Event'ов
  15. 15. Структура облака Взаимодействие сервисов CE CPL CW • SOA — принципы: - Архитектура не привязана к какой-то технологии - Независимость системы от платформы, - Независимость от языков программирования, - Сервисы независимы от приложений, с единообразными интерфейсами доступа к ним, - Сервисы - слабо-связанные компоненты • REST (простота общения)
  16. 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. 17. Почему REST? REST vs RPC RPC позволяет использовать небольшое количество сетевых ресурсов с большим количеством методов и сложным протоколом. REST - количество методов и сложность протокола ограничены, следовательно количество отдельных ресурсов должно быть большим. SOAP Плюсы: • Жесткая проверка типов • Имеются специальные средства разработки Минусы: • Большой объем (XML) • Тяжело читаем человеком • Сложней в реализации
  18. 18. CPL - подробно
  19. 19. Как защититься от продвинутого пользователя? 1. Открыть HTML и проанализировать запросы 2. Эмулировать браузер (cURL) Как защититься от умного клиента?
  20. 20. Как защититься от продвинутого пользователя? НИКАК! :)
  21. 21. Как защититься от продвинутого пользователя? Только дружить — превратите приложение в платформу Откройте API
  22. 22. CPL — подробно. v2
  23. 23. Критерии хорошего API • Простота – Понимания – Реализации • Четкое выделение – Сущностей – Событий • Документация
  24. 24. Выделяем сущности Определяем то, с чем работаем: • Account • Project • Instance • Volume • FireWall • ...
  25. 25. Масштабирование в облаке Причины: • CPU (la) • Memory (свободный объем) • Диск (свободный объем / iops) • Network (полоса) Решение?
  26. 26. Вертикальное масштабирование • Слабая зависимость от архитектуры проекта • Ограничение — физический сервер (временно)
  27. 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. 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. 29. Горизонтальное масштабирование • Требования к архитектуре сервиса • Ограничения — практически нет (только архитектурные)
  30. 30. AutoScale • Увеличение ресурсов в реальном времени • Вертикальный: – По времени суток – По достижению критических параметров • Горизонтальный — в ближайшем будущем
  31. 31. Плюсы облака • Масштабирование ресурсов под нагрузку • Отсутствие «железных» проблем • Аппаратная защита от DOS, DDOS • CDN «из коробки» • Экономия $
  32. 32. Минусы облака • Зарубежные сервисы — задержки • Мало у кого есть реальный scale — сложности масштабирования • Scalaxy — этап бета- тестирования :)
  33. 33. Для кого? И для чего? • Не регулярный трафик • Экономия на «железе» • Большие объемы данных • CPU на время • StartUp • Новостные ресурсы • Файловые хранилища • Научные расчеты • Все остальные :)
  34. 34. Это все? Вопросы?

×