Submit Search
Upload
Continuous Delivery, или волшебная кнопка для релизов по запросу, Денис Яковлев (2ГИС)
•
1 like
•
1,300 views
Ontico
Follow
Доклад Дениса Яковлева на HighLoad++ 2014.
Read less
Read more
Internet
Report
Share
Report
Share
1 of 38
Download now
Download to read offline
Recommended
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
2ГИС Технологии
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
2ГИС Технологии
Github Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестирования
SQALab
Chef wtf
Chef wtf
Vsevolod Polyakov
Путь мониторинга: модульность, гибкость, devops
Путь мониторинга: модульность, гибкость, devops
Vsevolod Polyakov
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Ontico
Workflows в Express 42
Workflows в Express 42
Igor Kurochkin
Recommended
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
2ГИС Технологии
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС
2ГИС Технологии
Github Flow. Тестировщики против тестирования
Github Flow. Тестировщики против тестирования
SQALab
Chef wtf
Chef wtf
Vsevolod Polyakov
Путь мониторинга: модульность, гибкость, devops
Путь мониторинга: модульность, гибкость, devops
Vsevolod Polyakov
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Ontico
Workflows в Express 42
Workflows в Express 42
Igor Kurochkin
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Ontico
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
Vsevolod Polyakov
Эволюция ускорения юнит-тестов в Badoo - от баш-скриптов до облака
Эволюция ускорения юнит-тестов в Badoo - от баш-скриптов до облака
SQALab
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Ontico
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Ontico
Devconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как код
Igor Kurochkin
Переосмысливая подход к инфраструктурному коду / Евгений Пивень (IPONWEB)
Переосмысливая подход к инфраструктурному коду / Евгений Пивень (IPONWEB)
Ontico
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
it-people
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжиниринга
Mikhail Chinkov
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
2ГИС Технологии
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Ontico
Масштабирование и отказоустойчивость с Nginx
Масштабирование и отказоустойчивость с Nginx
GetDev.NET
DevOps
DevOps
Liubov Belousova
Как справиться с микросервисом
Как справиться с микросервисом
mimikadze
Облако в Badoo год спустя
Облако в Badoo год спустя
Yuriy Nasretdinov
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Ontico
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...
2ГИС Технологии
О тестировании в EDI
О тестировании в EDI
Maxim Zakharov
It meetup cd
It meetup cd
Victoria Astapenko
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
Yehor Herasymchuk
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС
DevDay
More Related Content
What's hot
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Ontico
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
Vsevolod Polyakov
Эволюция ускорения юнит-тестов в Badoo - от баш-скриптов до облака
Эволюция ускорения юнит-тестов в Badoo - от баш-скриптов до облака
SQALab
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Ontico
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Ontico
Devconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как код
Igor Kurochkin
Переосмысливая подход к инфраструктурному коду / Евгений Пивень (IPONWEB)
Переосмысливая подход к инфраструктурному коду / Евгений Пивень (IPONWEB)
Ontico
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
it-people
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжиниринга
Mikhail Chinkov
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
2ГИС Технологии
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Ontico
Масштабирование и отказоустойчивость с Nginx
Масштабирование и отказоустойчивость с Nginx
GetDev.NET
DevOps
DevOps
Liubov Belousova
Как справиться с микросервисом
Как справиться с микросервисом
mimikadze
Облако в Badoo год спустя
Облако в Badoo год спустя
Yuriy Nasretdinov
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Ontico
What's hot
(17)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Путь мониторинга, DevOps club в Grammarly
Путь мониторинга, DevOps club в Grammarly
Эволюция ускорения юнит-тестов в Badoo - от баш-скриптов до облака
Эволюция ускорения юнит-тестов в Badoo - от баш-скриптов до облака
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...
Devconf-2015 Тестируем инфраструктуру как код
Devconf-2015 Тестируем инфраструктуру как код
Переосмысливая подход к инфраструктурному коду / Евгений Пивень (IPONWEB)
Переосмысливая подход к инфраструктурному коду / Евгений Пивень (IPONWEB)
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжиниринга
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Масштабирование и отказоустойчивость с Nginx
Масштабирование и отказоустойчивость с Nginx
DevOps
DevOps
Как справиться с микросервисом
Как справиться с микросервисом
Облако в Badoo год спустя
Облако в Badoo год спустя
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)
Similar to Continuous Delivery, или волшебная кнопка для релизов по запросу, Денис Яковлев (2ГИС)
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...
2ГИС Технологии
О тестировании в EDI
О тестировании в EDI
Maxim Zakharov
It meetup cd
It meetup cd
Victoria Astapenko
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
Yehor Herasymchuk
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС
DevDay
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
DevOps в реальном времени
DevOps в реальном времени
Andriy Samilyak
Роль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщика
SQALab
Continuousdelivery
Continuousdelivery
Ivan Evtukhovich
10M tests per day
10M tests per day
Sergey Grinev
Скажи мне правду, Scrum, когда тестировать нам?
Скажи мне правду, Scrum, когда тестировать нам?
SQALab
TestOps. Расширяем традиционные обязанности тестировщика
TestOps. Расширяем традиционные обязанности тестировщика
Alexander Nedeliaev
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
Positive Hack Days
Масло масляное или Тестируем тестирование
Масло масляное или Тестируем тестирование
2ГИС Технологии
Sivko
Sivko
kuchinskaya
Тестируем инфраструктуру как код
Тестируем инфраструктуру как код
Andrey Tokarchuk
Внедрение автоматизации тестирования в highload проекте с непрерывной выкладкой
Внедрение автоматизации тестирования в highload проекте с непрерывной выкладкой
SQALab
Процессы разработки в Яндексе
Процессы разработки в Яндексе
Andrey Kazarinov
Similar to Continuous Delivery, или волшебная кнопка для релизов по запросу, Денис Яковлев (2ГИС)
(20)
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...
О тестировании в EDI
О тестировании в EDI
It meetup cd
It meetup cd
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
DevOps в реальном времени
DevOps в реальном времени
Роль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщика
Continuousdelivery
Continuousdelivery
10M tests per day
10M tests per day
Скажи мне правду, Scrum, когда тестировать нам?
Скажи мне правду, Scrum, когда тестировать нам?
TestOps. Расширяем традиционные обязанности тестировщика
TestOps. Расширяем традиционные обязанности тестировщика
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
Масло масляное или Тестируем тестирование
Масло масляное или Тестируем тестирование
Sivko
Sivko
Тестируем инфраструктуру как код
Тестируем инфраструктуру как код
Внедрение автоматизации тестирования в highload проекте с непрерывной выкладкой
Внедрение автоматизации тестирования в highload проекте с непрерывной выкладкой
Процессы разработки в Яндексе
Процессы разработки в Яндексе
More from Ontico
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Ontico
More from Ontico
(20)
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Continuous Delivery, или волшебная кнопка для релизов по запросу, Денис Яковлев (2ГИС)
1.
ЯковлевДенис 2gis.ru@rnd2gis Continuous
Delivery или волшебная кнопка для релизов по запросу
2.
API 2GIS
3.
api.2gis.ru 250 городов
21 млн Mail.ru
4.
Инфраструктура API
5.
Россия Новосибирск Москва
6.
Нидерланды Дронтен
7.
КОМАНДА
8.
7 Dev 3
QA
9.
ЗАКАЗЧИКИ Партнёры •
Flamp • Online • PM
10.
ФИЧИ От 1
до 5 в день
11.
Задача
12.
Сделать кнопку для
релиза
13.
Ограничения
14.
1.Не доверяем тестам
2.Ручной процесс деплоя 3.Проблемы производительности 4.Нет текущего статуса релиза
15.
1. Тесты
16.
Баги в тестах
и коде
17.
•Время ~6 часов
•Зависимость от данных
18.
•Используем paratest •Рефакторингтестов
19.
Запускаем –фиксим–снова запускаем
20.
•Зеленая сборка •Стабильность
тестов •6 часов => 50 минут
21.
2. Деплой
22.
1.Доставка кода (gitpull)
2.Обновление данных (yiicmigrate) 3.Новые версии компонент (apt-get upgrade) 4.Перезапуск сервисов
23.
Упрощаем
24.
1 сервер =
1 команда ( chef-client )
25.
Сценарии релиза
26.
Репетируем
27.
1.Запуск нагрузки (yandex-tank)
2.Деплойсерверов (chef-client)
28.
Кнопка релиза
29.
3. Нагрузка
30.
•«Плохие релизы» •Увеличивается
время ответа
31.
•Формируем лог •Нагружаем
Staging •Сравниваем результаты
32.
4. Статус
33.
•Много участников •Устное
выяснение статуса
34.
Dashboard
35.
Выводы
36.
Релизы по требованию
37.
•Задача решаема •Комплексный
подход •Внешняя команда
38.
ЯковлевДенис d.yakovlev@2gis.ru
Download now