Как стать автором
Обновить

Citymobil — пособие для стартапов по увеличению стабильности на фоне роста. Часть 1

Время на прочтение 12 мин
Количество просмотров 10K
Блог компании VK Высокая производительность *Анализ и проектирование систем *Развитие стартапа Управление продуктом *


Этой статьей я открываю короткий цикл из двух статей, в которых подробно расскажу, как нам удалось за несколько месяцев в разы увеличить стабильность сервисов Citymobil. Статья начинается с рассказа про наш бизнес, про задачу, про причину появления самой задачи повышения стабильности и про ограничения. Citymobil — это быстрорастущий агрегатор такси. За 2018 год он вырос более чем в 15 раз по количеству успешно совершенных поездок. В некоторые месяцы рост превышал 50 % по сравнению с предыдущим месяцем.

Бизнес рос как на дрожжах во все стороны (и растет до сих пор): повысилась и нагрузка на серверы, и размер команды, и частота выкаток. Вместе с этим появились и новые угрозы стабильности сервиса. Перед компанией встала важнейшая задача — не останавливая рост бизнеса повысить стабильность. В этой статье я расскажу, как нам удалось реализовать эту задачу в короткие сроки.
Читать дальше →
Всего голосов 49: ↑49 и ↓0 +49
Комментарии 28

Citymobil — пособие для стартапов по увеличению стабильности на фоне роста. Часть 2. Какие бывают виды аварий?

Время на прочтение 20 мин
Количество просмотров 7.6K
Блог компании VK Высокая производительность *Анализ и проектирование систем *Развитие стартапа Управление продуктом *


Это вторая статья из цикла про то, как мы в Citymobil увеличивали стабильность сервиса (первую можете почитать здесь). В этой статье я углублюсь в конкретику разбора аварий. Но перед этим я освещу один момент, о котором я должен был подумать заранее и осветить в первой статье, но не подумал. И о котором узнал по фидбеку читателей. Вторая статья дает мне шанс устранить этот досадный недочет.
Читать дальше →
Всего голосов 39: ↑37 и ↓2 +35
Комментарии 14

Citymobil — a manual for improving availability amid business growth for startups. Part 1

Время на прочтение 4 мин
Количество просмотров 1.2K
Блог компании VK Высокая производительность *Анализ и проектирование систем *Развитие стартапа Управление продуктом *


In this first part of an article series «Citymobil — a manual for improving availability amid business growth for startups» I’m going to break down the way we managed to dramatically scale up the availability of Citymobil services. The article opens with the story about our business, our task, the reason for this task to increase the availability emerged and limitations. Citymobil is a rapid-growing taxi aggregator. In 2018, it increased by more than 15 times in terms of number of successfully completed trips. Some months showed 50% increase compared with the previous month.

The business grew like a weed in every direction (it still does): there was an increase in server load, team size and number of deployments. At the same time the new threats to service availability emerged. The company faced a task of the most importance — how to increase availability without compromising company growth. In this article, I’ll talk about the way we managed to solve this task in a relatively short time.
Read more →
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 0

Citymobil — a manual for improving availability amid business growth for startups. Part 2

Время на прочтение 8 мин
Количество просмотров 886
Блог компании VK Высокая производительность *Анализ и проектирование систем *Развитие стартапа Управление продуктом *


This is a second article out of a series «Citymobil — a manual for improving availability amid business growth for startups». You can read the first part here. Let’s continue to talk about the way we managed to improve the availability of Citymobil services. In the first article, we learned how to count the lost trips. Ok, we are counting them. What now? Now that we are equipped with an understandable tool to measure the lost trips, we can move to the most interesting part — how do we decrease losses? Without slowing down our current growth! Since it seemed to us that the lion’s share of technical problems causing the trips loss had something to do with the backend, we decided to turn our attention to the backend development process first. Jumping ahead of myself, I’m going to say that we were right — the backend became the main site of the battle for the lost trips.
Read more →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 0

Citymobil — a manual for improving availability amid business growth for startups. Part 3

Время на прочтение 8 мин
Количество просмотров 981
Блог компании VK Высокая производительность *Анализ и проектирование систем *Развитие стартапа Управление продуктом *


This is the next article of the series describing how we’re increasing our service availability in Citymobil (you can read the previous parts here and here). In further parts, I’ll talk about the accidents and outages in detail. But first let me highlight something I should’ve talked about in the first article but didn’t. I found out about it from my readers’ feedback. This article gives me a chance to fix this annoying shortcoming.
Read more →
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 0

Citymobil — a manual for improving availability amid business growth for startups. Part 4

Время на прочтение 7 мин
Количество просмотров 938
Блог компании VK Высокая производительность *Анализ и проектирование систем *Развитие стартапа Управление продуктом *


This is the next article of the series describing how we’re increasing our service availability in Citymobil (you can read the previous parts here: part 1, part 2, part 3). In further parts, I’ll talk about the accidents and outages in detail.

1. Bad release: database overload


Let me begin with a specific example of this type of outage. We deployed an optimization: added USE INDEX in an SQL query; during testing as well as in production, it sped up short queries, but the long ones — slowed down. The long queries slowdown was only noticed in production. As a result, a lot of long parallel queries caused the database to be down for an hour. We thoroughly studied the way USE INDEX worked; we described it in the Do’s and Dont’s file and warned the engineers against the incorrect usage. We also analyzed the query and realized that it retrieves mostly historical data and, therefore, can be run on a separate replica for historical requests. Even if this replica goes down due to an overload, the business will keep running.
Read more →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 0

Citymobil — a manual for improving availability amid business growth for startups. Part 5

Время на прочтение 8 мин
Количество просмотров 928
Блог компании VK Высокая производительность *Анализ и проектирование систем *Развитие стартапа Управление продуктом *


This is the final part of the series describing how we’re increasing our service availability in Citymobil (you can read the previous part here). Now I’m going to talk about one more type of outages and the conclusions we made about them, how we modified the development process, what automation we introduced.
Read more →
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 0

Простой service discovery в Prometheus через Consul

Время на прочтение 9 мин
Количество просмотров 17K
Блог компании Ситимобил DevOps *
Закон Парето (принцип Парето, принцип 80/20) — «20 % усилий дают 80 % результата, а остальные 80 % усилий — лишь 20 % результата».
Wikipedia

Приветствую тебя, дорогой читатель!


Моя первая статья на Хабр посвящена простому и, надеюсь, полезному решению, сделавшим для меня сбор метрик в Prometheus с разнородных серверов удобным. Я затрону некоторые подробности, в которые многие могли не погружаться, эксплуатируя Prometheus, и поделюсь своим подходом по организации в нём легковесного service discovery.


Для этого понадобится: Prometheus, HashiCorp Consul, systemd, немного кода на Bash и осознание происходящего.


Если интересно узнать, как все это связано и как оно работает, добро пожаловать под кат.


Prometheus + Bash + Consul

Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 21

О переезде с Redis на Redis-cluster

Время на прочтение 11 мин
Количество просмотров 18K
Блог компании Ситимобил Высокая производительность *IT-инфраструктура *


Приходя в продукт, который развивается больше десятка лет, совершенно не удивительно встретить в нем устаревшие технологии. Но что если через полгода вы должны держать нагрузку в 10 раз выше, а цена падений увеличится в сотни раз? В этом случае вам необходим крутой Highload Engineer. Но за неимением горничной такового, решать проблему доверили мне. В первой части статьи я расскажу, как мы переезжали с Redis на Redis-cluster, а во второй части дам советы, как начать пользоваться кластером и на что обратить внимание при эксплуатации.

Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 12

Настало время офигительных историй. Кастомные транзишены в iOS [1/2]

Время на прочтение 7 мин
Количество просмотров 5.9K
Блог компании Ситимобил Разработка под iOS *Разработка мобильных приложений *Интерфейсы *Swift *
Туториал
✏️ Технотекст 2021

Порой дизайнеры рисуют необычные переходы между экранами, и UIKit не поддерживает их из коробки. Но их реализация не такая сложная, как может показаться на первый взгляд.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 1

Настало время офигительных историй. Кастомные транзишены в iOS. [2/2]

Время на прочтение 7 мин
Количество просмотров 3.6K
Блог компании Ситимобил Разработка под iOS *Разработка мобильных приложений *Интерфейсы *Swift *
Туториал

В прошлой статье мы реализовали анимацию ZoomIn/ZoomOut для открытия и закрытия экрана с историями.

В этот раз мы прокачаем StoryBaseViewController и реализуем кастомные анимации при переходе между историями.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Вас заметили! App Tracking Transparency (ATT) для iOS 14.5

Время на прочтение 3 мин
Количество просмотров 15K
Блог компании Ситимобил Разработка под iOS *Разработка мобильных приложений *Swift *Монетизация мобильных приложений *
Туториал

Недавно вышла iOS 14.5, а чуть ранее Apple предупредила разработчиков, что начиная с этой версии ОС необходимо поддерживать фреймворк AppTrackingTransparency, который позволяет получить доступ к IDFA.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 12

Как ухаживать за грядкой Redis'а и как сохранить урожай?

Время на прочтение 10 мин
Количество просмотров 10K
Блог компании Ситимобил Open source *NoSQL *Администрирование баз данных *
✏️ Технотекст 2021

Чуть более года назад мне посчастливилось погрузиться в углублённое изучение Redis. Всё, что я знал про него на тот момент, это две команды — get и set. Примерно в это же время у нас начался плавный переход со Standalone Redis на Redis Cluster.

Почитать про переход на кластер можно тут, а сегодня я хочу рассказать о том, что я узнал, о проблемах, которые могут возникнуть, как их отлавливать и что со всем этим делать.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 2