SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Слоистая
 архитектура

    и   Yii
Алексей Спиридонов
     CityPatrol
Этапы развития в 2ГИС
От 2х сайтов к 12 сервисам и 3м проектам за 3 года

                                   2012



2009
Инфраструктура
Yii Framework в 2ГИС:

 ● maps.2gis.ru
 ● flamp.ru
 ● api.2gis.ru как совокупность сервисов
      ○ catalog.api
      ○ ads.api
      ○ stat.api
      ○ service.api
      ○ transport.api
      ○ partner.api
      ○ и т.д.

 ● go.2gis.ru
 ● и т.д.
Критерии качества системы


● Производительность

● Непрерывное развитие

● Стабильность

● Переиспользование функционала
Что такое слоистая архитектура?




              ?
Что такое слоистая архитектура?
Что такое слоистая архитектура?
Что такое слоистая архитектура?
Что такое слоистая архитектура?


● Есть четко определенные функциональные зоны
● Зоны образуют вертикальную иерархию
● Каждая зона несет какую то определенную
  ответственность
● Нижние зоны ничего не знают про верхние


Каждая такая зона - это слой архитектуры
Муки выбора подхода




               VS




    :(                :)
Компоненты фреймворка


● Приложение (CApplication)

● Модуль (CWebModule)

● MVC Контроллер (CController)

● Расширение (CApplicationComponent)
Меняем паттерн приложения
     M+V+C
      ● модель
      ● представление
      ● контроллер


     заменяем на
     E+V+C
      ● Extension
      ● представление
      ● конроллер
Идеальный Extension:

● изолирован, а значит заменим и поддается
  тестированию
● удобно конфигурируется в main.php
● имеет стабильный зафиксированный интерфейс
● возвращает чистые данные, а не объекты
● реализует некую часть / объект предметной области
● имеем свое собственное хранилище данных
Типичные Extensions

Extension 1 :
 ● Своя база данных
 ● ActiveRecord       Extension 2 :
                       ● враппер вокруг сервиса
                          ○ AMQP
                          ○ GeoIP
                          ○ Thrift сервис
 Extension 3:
  ● врапер вокруг
    библиотеки
                      Extension 4:
                       ● враппер к rest сервису
Изолируем функционал в слоях
на всех уровнях:

 ● классы
 ● расширения
 ● сервисы
 ● приложения
Эволюция функциональных блоков происходит
безболезненно

  Поиск гео-объекта по названию.
  от 1 класса на PHP
  к распределенному сервису на C++
  без переписывания кода приложения
Простое и легкое управление нагрузкой и надежностью:

 ● Разделение функционала по серверам становится
   задачей изменения конфигов.
 ● Мониторинг нагрузки и поиск проблемных мест.

 ● Управление требованиями к надежности. Отказ одного
   функционального блока не затрагивает всю систему.
Масштабирование данных:

 ● Слабая связанность данных.
 ● Масштабирование хранища данных за счет
   разделения данных по разным базам становится
   элементарным.
Проблемы (Последний слайд)


● Проблема сложности системы
● Проблема изменения интерфейсов
● Как предотвращать восходящие зависимости

● Как разворачивать этот клубок на сервера
● Разделение ответственности за компоненты




                           Если превысим время, просьба
                           ведущему прервать, и вынести
                           обсуждение в курилку...
Алексей Спиридонов,
ООО CityPatrol, Москва


spiridonov@citypatrol.ru

Contenu connexe

Similaire à Слоистая архитектура

Clean architecture on Android
Clean architecture on AndroidClean architecture on Android
Clean architecture on AndroidGDG Odessa
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинSergey Xek
 
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»SpbDotNet Community
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?etyumentcev
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Elogic Magento Development
 
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаСтрах и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаMikhail Chinkov
 
HighLoad весна 2014 лекция 1
HighLoad весна 2014 лекция 1HighLoad весна 2014 лекция 1
HighLoad весна 2014 лекция 1Technopark
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...MDDay_4
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСDev_Party
 
Дизайн больших приложений в ФП
Дизайн больших приложений в ФПДизайн больших приложений в ФП
Дизайн больших приложений в ФПAlexander Granin
 
MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?Alexey Zinoviev
 
CodeFest 2013. Зиновьев А. — MyBatis & Hibernate, давайте жить дружно!
CodeFest 2013. Зиновьев А. — MyBatis & Hibernate, давайте жить дружно!CodeFest 2013. Зиновьев А. — MyBatis & Hibernate, давайте жить дружно!
CodeFest 2013. Зиновьев А. — MyBatis & Hibernate, давайте жить дружно!CodeFest
 

Similaire à Слоистая архитектура (20)

Clean architecture on Android
Clean architecture on AndroidClean architecture on Android
Clean architecture on Android
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Sivko
SivkoSivko
Sivko
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2
 
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаСтрах и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжиниринга
 
HighLoad весна 2014 лекция 1
HighLoad весна 2014 лекция 1HighLoad весна 2014 лекция 1
HighLoad весна 2014 лекция 1
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
 
Дизайн больших приложений в ФП
Дизайн больших приложений в ФПДизайн больших приложений в ФП
Дизайн больших приложений в ФП
 
MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?MyBatis и Hibernate на одном проекте. Как подружить?
MyBatis и Hibernate на одном проекте. Как подружить?
 
CodeFest 2013. Зиновьев А. — MyBatis & Hibernate, давайте жить дружно!
CodeFest 2013. Зиновьев А. — MyBatis & Hibernate, давайте жить дружно!CodeFest 2013. Зиновьев А. — MyBatis & Hibernate, давайте жить дружно!
CodeFest 2013. Зиновьев А. — MyBatis & Hibernate, давайте жить дружно!
 

Слоистая архитектура

  • 1. Слоистая архитектура и Yii Алексей Спиридонов CityPatrol
  • 2. Этапы развития в 2ГИС От 2х сайтов к 12 сервисам и 3м проектам за 3 года 2012 2009
  • 3. Инфраструктура Yii Framework в 2ГИС: ● maps.2gis.ru ● flamp.ru ● api.2gis.ru как совокупность сервисов ○ catalog.api ○ ads.api ○ stat.api ○ service.api ○ transport.api ○ partner.api ○ и т.д. ● go.2gis.ru ● и т.д.
  • 4. Критерии качества системы ● Производительность ● Непрерывное развитие ● Стабильность ● Переиспользование функционала
  • 5. Что такое слоистая архитектура? ?
  • 6.
  • 7. Что такое слоистая архитектура?
  • 8. Что такое слоистая архитектура?
  • 9. Что такое слоистая архитектура?
  • 10. Что такое слоистая архитектура? ● Есть четко определенные функциональные зоны ● Зоны образуют вертикальную иерархию ● Каждая зона несет какую то определенную ответственность ● Нижние зоны ничего не знают про верхние Каждая такая зона - это слой архитектуры
  • 12. Компоненты фреймворка ● Приложение (CApplication) ● Модуль (CWebModule) ● MVC Контроллер (CController) ● Расширение (CApplicationComponent)
  • 13. Меняем паттерн приложения M+V+C ● модель ● представление ● контроллер заменяем на E+V+C ● Extension ● представление ● конроллер
  • 14. Идеальный Extension: ● изолирован, а значит заменим и поддается тестированию ● удобно конфигурируется в main.php ● имеет стабильный зафиксированный интерфейс ● возвращает чистые данные, а не объекты ● реализует некую часть / объект предметной области ● имеем свое собственное хранилище данных
  • 15. Типичные Extensions Extension 1 : ● Своя база данных ● ActiveRecord Extension 2 : ● враппер вокруг сервиса ○ AMQP ○ GeoIP ○ Thrift сервис Extension 3: ● врапер вокруг библиотеки Extension 4: ● враппер к rest сервису
  • 16.
  • 17.
  • 18. Изолируем функционал в слоях на всех уровнях: ● классы ● расширения ● сервисы ● приложения
  • 19. Эволюция функциональных блоков происходит безболезненно Поиск гео-объекта по названию. от 1 класса на PHP к распределенному сервису на C++ без переписывания кода приложения
  • 20. Простое и легкое управление нагрузкой и надежностью: ● Разделение функционала по серверам становится задачей изменения конфигов. ● Мониторинг нагрузки и поиск проблемных мест. ● Управление требованиями к надежности. Отказ одного функционального блока не затрагивает всю систему.
  • 21. Масштабирование данных: ● Слабая связанность данных. ● Масштабирование хранища данных за счет разделения данных по разным базам становится элементарным.
  • 22. Проблемы (Последний слайд) ● Проблема сложности системы ● Проблема изменения интерфейсов ● Как предотвращать восходящие зависимости ● Как разворачивать этот клубок на сервера ● Разделение ответственности за компоненты Если превысим время, просьба ведущему прервать, и вынести обсуждение в курилку...
  • 23. Алексей Спиридонов, ООО CityPatrol, Москва spiridonov@citypatrol.ru