Pull to refresh
  • by relevance
  • by date
  • by rating

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

VK corporate blog High performance *System Analysis and Design *Start-up development Product Management *


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

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

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

VK corporate blog High performance *System Analysis and Design *Start-up development Product Management *


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

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

VK corporate blog High performance *System Analysis and Design *Start-up development Product Management *


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 →
Total votes 24: ↑24 and ↓0 +24
Views 924
Comments 0

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

VK corporate blog High performance *System Analysis and Design *Start-up development Product Management *


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 →
Total votes 23: ↑22 and ↓1 +21
Views 674
Comments 0

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

VK corporate blog High performance *System Analysis and Design *Start-up development Product Management *


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 →
Total votes 23: ↑23 and ↓0 +23
Views 757
Comments 0

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

VK corporate blog High performance *System Analysis and Design *Start-up development Product Management *


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 →
Total votes 17: ↑16 and ↓1 +15
Views 694
Comments 0

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

VK corporate blog High performance *System Analysis and Design *Start-up development Product Management *


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 →
Total votes 24: ↑24 and ↓0 +24
Views 751
Comments 0

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

Ситимобил corporate blog DevOps *
Закон Парето (принцип Парето, принцип 80/20) — «20 % усилий дают 80 % результата, а остальные 80 % усилий — лишь 20 % результата».
Wikipedia

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


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


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


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


Prometheus + Bash + Consul

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 11K
Comments 21

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

Ситимобил corporate blog High performance *IT Infrastructure *


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

Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Views 9.9K
Comments 12

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

Ситимобил corporate blog Development for iOS *Development of mobile applications *Interfaces *Swift *
Tutorial

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

Читать далее
Total votes 6: ↑6 and ↓0 +6
Views 4.8K
Comments 1

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

Ситимобил corporate blog Development for iOS *Development of mobile applications *Interfaces *Swift *
Tutorial

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

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

Читать далее
Total votes 5: ↑5 and ↓0 +5
Views 2.7K
Comments 0

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

Ситимобил corporate blog Development for iOS *Development of mobile applications *Swift *Mobile applications monetization *
Tutorial

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

Читать далее
Total votes 8: ↑7 and ↓1 +6
Views 9.7K
Comments 12

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

Ситимобил corporate blog Open source *NoSQL *Database Administration *

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

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

Читать далее
Total votes 21: ↑21 and ↓0 +21
Views 5.4K
Comments 2