Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
12-факторные приложения
готовимся к масштабу и микросервисам
Денис Потапов
The Twelve-Factor App
12factor.net
bit.ly/12factor-ua
12-факторные приложения
современное веб приложение от heroku
подключение новых разработчиков к проекту
переносимость между...
12-факторные приложения
современное веб приложение от heroku
работа на современных облачных платформах
масштабироваться бе...
I
Кодовая база
Codebase
I. Один репозиторий — множество
развертываний
система контроля версий
приложение — один репозиторий
несколько репозиториев...
I. Один репозиторий — множество
развертываний
II
Зависимости
Dependencies
II. Явные и изолированные зависимости
системные пакеты
пакеты приложения («vendoring»)
зависимости приложения явные
II. Явные и изолированные зависимости
декларация зависимостей
изоляция зависимостей
только совместное использование
даже д...
II. Явные и изолированные зависимости
  декларация изоляция
NodeJS NPM NVM
Ruby Gem Bundler Gem Bundler, RVM
PHP Composer ?
III
Конфигурация
Config
III. Конфигурация — свойства среды
выполнения
Cтрогое разделения конфигурации и кода:
конфигурация меняется между развёрты...
III. Конфигурация — свойства среды
выполнения
Константы в коде
Конфигурационные файлы (config/database.yml):
сохранить в к...
III. Конфигурация — свойства среды
выполнения
Конфигурация в переменных окружения (env vars)
/ / P H P
$ d b H o s t = g e...
III. Конфигурация — свойства среды
выполнения
Группировка конфигураций (development, test, production)
рост количества (st...
IV
Сторонние службы
Backing Services
IV. Локальные и сторонние службы
IV. Локальные и сторонние службы
Код не делает различий между локальными и сторонними
службами
замена локального на сторон...
V
Сборка, релиз, выполнение
Build, release, run
V. Строгое разделение сборки, релиза и
выполнения
V. Строгое разделение сборки, релиза и
выполнения
сборка может быть сложной
нельзя внести изменения в релиз
релизы с идент...
VI
Процессы
Processes
VI. Приложение – набор процессов
не сохраняют внутреннее состояние
(stateless)
не имеют разделяемых данных
(share-nothing)...
VI. Приложение – набор процессов
данные пользователя в БД
упаковка ресурсов
(asset)
на этапе сборки
сессии в хранилище (Me...
VII
Привязка портов
Port binding
VII. Приложение не зависит от сервера
Приложение в контейнере веб-сервера
PHP в Apache HTTPD
Java в Tomcat
VII. Приложение не зависит от сервера
Приложение 12 факторов экспортирует HTTP сервис
объявление зависимости:
Tornado в Py...
VIII
Конкурентность
Concurrency
VIII. Масштаб с помощью процессов
VIII. Масштаб с помощью процессов
процессы — сущности первого класса
различная нагрузка — разные типы процессов
отсутствие...
VIII. Масштаб с помощью процессов
Выполняйте, а не запускайте, процессы
Run not start
контроль выполнения
маршрутизация вы...
IX
Одноразовость
Disposability
IX. Быстрый запуск и корректное
завершение
минимальное время запуска
корректное завершение
устойчивые к падению
IX. Быстрый запуск и корректное
завершение
короткие HTTP запросы
фоновые задачи возвращать в очередь
повторная входимость ...
X
Паритет разработки/работы
Dev/prod parity
X. Приблизьте разработку к
развертыванию
разное время
разные люди
разные инструменты
X. Приблизьте разработку к
развертыванию
одно время
одни люди
одни интсрументы
X. Приблизьте разработку к
развертыванию
X. Приблизьте разработку к
развертыванию
адаптеры (ActiveRecord, Celery)
высокая стоимость несовместимости
простота устано...
XI
Журналирование
Logs
XI. Журнал в stdout
Журнал – это поток событий всех сервисов
Приложение не хранит и не перенаправляет журнал
Журнал без бу...
XI. Журнал в stdout
XI. Журнал в stdout
Индексация и анализ журналов
Splunk, Loggly, Hadoop/Hive
поиск
тренды
оповещения
XII
Процессы администрирования
Admin processes
XII. Процессы администрирования
миграции
консоль
разовые скрипты
XII. Процессы администрирования
Запуск на уровне релиза
кодовая база
конфигурация
зависимости
12-факторные приложения
I. Один репозиторий — множество развертываний
II. Явные и изолированные зависимости
III. Конфигура...
12-факторные приложения
VII. Приложение не зависит от сервера
VIII. Масштаб с помощью процессов
IX. Быстрый запуск и корре...
Вопросы?
Próxima SlideShare
Cargando en…5
×

WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-факторных приложениях — готовимся к масштабу и микросервисам"

596 visualizaciones

Publicado el

03.07.2015 WebCamp:Back-end Developers Day
Upcoming events: goo.gl/I2gJ4H

Денис Потапов (CEO at Qport)
"Простыми словами о 12-факторных приложениях — готовимся к масштабу и микросервисам"

12-факторное приложение — методология разработки и внедрения современных web приложений. Методология разработана и поддерживается популярным облачным PaaS провайдером Heroku. На основании опыта они представили свое видение архитектуры, внедрения и взаимодействия разработчиков, которое обеспечивает:
- горизонтальное масштабирование приложения без изменений в архитектуре и методах разработки;
- минимизацию затрат на системное администрирование и управление оборудованием;
- быстрое развертывание и настройку приложений на разных платформах;
- быстрое включение новых разработчиков и новых технологий в проект;
- упрощение непрерывной интеграции, с помощью сближения среды разработки и запуска.

Подробнее:
http://geekslab.co,
http://webcamp.in.ua/
https://www.facebook.com/GeeksLab.co , https://www.facebook.com/OdessaInnovationWeek
https://www.youtube.com/user/GeeksLabVideo

Publicado en: Tecnología
  • Sé el primero en comentar

WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-факторных приложениях — готовимся к масштабу и микросервисам"

  1. 1. 12-факторные приложения готовимся к масштабу и микросервисам Денис Потапов
  2. 2. The Twelve-Factor App 12factor.net bit.ly/12factor-ua
  3. 3. 12-факторные приложения современное веб приложение от heroku подключение новых разработчиков к проекту переносимость между средами выполнения непрерывное развертывание
  4. 4. 12-факторные приложения современное веб приложение от heroku работа на современных облачных платформах масштабироваться без изменений deis, fortrabbit docker
  5. 5. I Кодовая база Codebase
  6. 6. I. Один репозиторий — множество развертываний система контроля версий приложение — один репозиторий несколько репозиториев — распределенная система общий код — библиотека
  7. 7. I. Один репозиторий — множество развертываний
  8. 8. II Зависимости Dependencies
  9. 9. II. Явные и изолированные зависимости системные пакеты пакеты приложения («vendoring») зависимости приложения явные
  10. 10. II. Явные и изолированные зависимости декларация зависимостей изоляция зависимостей только совместное использование даже для «обычных» пакетов (curl, ImageMagic)
  11. 11. II. Явные и изолированные зависимости   декларация изоляция NodeJS NPM NVM Ruby Gem Bundler Gem Bundler, RVM PHP Composer ?
  12. 12. III Конфигурация Config
  13. 13. III. Конфигурация — свойства среды выполнения Cтрогое разделения конфигурации и кода: конфигурация меняется между развёртывания (БД, сторонние службы, API) код не меняется (маршруты, контроллеры) код можно опубликовать без компроментации
  14. 14. III. Конфигурация — свойства среды выполнения Константы в коде Конфигурационные файлы (config/database.yml): сохранить в коде по ошибке разные форматы и места специфичны для языка и фреймворка
  15. 15. III. Конфигурация — свойства среды выполнения Конфигурация в переменных окружения (env vars) / / P H P $ d b H o s t = g e t e n v ( ' D B _ H O S T ' ) ; / / R u b y E N V [ " M Y _ C O N F I G " ] все настройки собранны в одном месте не зависят от языка
  16. 16. III. Конфигурация — свойства среды выполнения Группировка конфигураций (development, test, production) рост количества (staging, qa) поддержка каждая переменная независима
  17. 17. IV Сторонние службы Backing Services
  18. 18. IV. Локальные и сторонние службы
  19. 19. IV. Локальные и сторонние службы Код не делает различий между локальными и сторонними службами замена локального на сторонний (SMTP, DB) расположение и учетные данные в конфигурации ресурс можно отключать и подключать
  20. 20. V Сборка, релиз, выполнение Build, release, run
  21. 21. V. Строгое разделение сборки, релиза и выполнения
  22. 22. V. Строгое разделение сборки, релиза и выполнения сборка может быть сложной нельзя внести изменения в релиз релизы с идентификатором возможность откатить релиз выполнение должно быть простым
  23. 23. VI Процессы Processes
  24. 24. VI. Приложение – набор процессов не сохраняют внутреннее состояние (stateless) не имеют разделяемых данных (share-nothing) следующий запрос — другому процессу
  25. 25. VI. Приложение – набор процессов данные пользователя в БД упаковка ресурсов (asset) на этапе сборки сессии в хранилище (Memcached, Redis)
  26. 26. VII Привязка портов Port binding
  27. 27. VII. Приложение не зависит от сервера Приложение в контейнере веб-сервера PHP в Apache HTTPD Java в Tomcat
  28. 28. VII. Приложение не зависит от сервера Приложение 12 факторов экспортирует HTTP сервис объявление зависимости: Tornado в Python Thin в Ruby Jetty в Java ReactPHP в PHP может выступать сторонней службой
  29. 29. VIII Конкурентность Concurrency
  30. 30. VIII. Масштаб с помощью процессов
  31. 31. VIII. Масштаб с помощью процессов процессы — сущности первого класса различная нагрузка — разные типы процессов отсутствие разделяемых данных при масштабе
  32. 32. VIII. Масштаб с помощью процессов Выполняйте, а не запускайте, процессы Run not start контроль выполнения маршрутизация вывода реагирование на падение
  33. 33. IX Одноразовость Disposability
  34. 34. IX. Быстрый запуск и корректное завершение минимальное время запуска корректное завершение устойчивые к падению
  35. 35. IX. Быстрый запуск и корректное завершение короткие HTTP запросы фоновые задачи возвращать в очередь повторная входимость (транзакции)
  36. 36. X Паритет разработки/работы Dev/prod parity
  37. 37. X. Приблизьте разработку к развертыванию разное время разные люди разные инструменты
  38. 38. X. Приблизьте разработку к развертыванию одно время одни люди одни интсрументы
  39. 39. X. Приблизьте разработку к развертыванию
  40. 40. X. Приблизьте разработку к развертыванию адаптеры (ActiveRecord, Celery) высокая стоимость несовместимости простота установки сторонних служб (Chef, Puppet, Vagrant …) адаптеры только для портирования
  41. 41. XI Журналирование Logs
  42. 42. XI. Журнал в stdout Журнал – это поток событий всех сервисов Приложение не хранит и не перенаправляет журнал Журнал без буферизации в stdout
  43. 43. XI. Журнал в stdout
  44. 44. XI. Журнал в stdout Индексация и анализ журналов Splunk, Loggly, Hadoop/Hive поиск тренды оповещения
  45. 45. XII Процессы администрирования Admin processes
  46. 46. XII. Процессы администрирования миграции консоль разовые скрипты
  47. 47. XII. Процессы администрирования Запуск на уровне релиза кодовая база конфигурация зависимости
  48. 48. 12-факторные приложения I. Один репозиторий — множество развертываний II. Явные и изолированные зависимости III. Конфигурация — свойства среды выполнения IV. Локальные и сторонние службы V. Строгое разделение сборки, релиза и выполнения VI. Приложение – набор процессов
  49. 49. 12-факторные приложения VII. Приложение не зависит от сервера VIII. Масштаб с помощью процессов IX. Быстрый запуск и корректное завершение X. Приблизьте разработку к развертыванию XI. Журнал в stdout XII. Процессы администрирования
  50. 50. Вопросы?

×