top_ua
Головна сторінка

Підтримка24

Архітектура Бітрікс24

Рейтинг:
Початково ми сформували наступні бізнес-вимоги до архітектури «Бітрікс24»:

  • - Перший тариф на «Бітрікс24» - безкоштовний, а це значить, що собівартість такого безкоштовного аккаунта для нас повинна бути дуже низькою.

  • - Наш проект - це бізнес-додаток, і значить навантаження на нього буде дуже нерівномірним: більше днем, менше вночі. В ідеалі - добре б вміти масштабуватись (в обидві сторони) та в кожен момент часу використовувати рівно стільки ресурсів, скільки потрібно.

  • - При цьому - для будь-якого бізнес-застасунку вкрай важлива надійність: постійна доступність даних і їх збереження.

  • Ми стартували відразу на декількох ринках: США, Німеччина, Росія, .

Ці бізнес-вимоги позначили два великих «фронти» робіт: формування масштабованої відмовостійкої «хмарної» платформи розробки і вибір технологічної платформи для інфраструктури проекту.

«Бітрікс24» представлено в вигляді веб-кластера взаємозамінних серверів. При збільшенні відвідуваності можна швидко додати в кластер нові сервери; в випадку виходу з ладу одного або декількох серверів кластера все продовжує працювати на що залишилися серверах, система продовжує безперервно обслуговувати клієнтів. Підтримка хмарних файлових сховищ вирішує проблему синхронізації статичного контенту, а реалізація підтримки master-master реплікації в MySQL дозволяє будувати географічно розподілені веб-кластери.
 

Упрощенная схема облачного сервиса Битрикс24

Відмовостійка архітектура

В якості платформи ми використовуємо Amazon AWS, однак, можливе розміщення і на інших платформах.

Автоматичне масштабування

Застосунок (веб) масштабується у нас не вертикально (збільшення потужності сервера), а горизонтально (додаємо нові машини).

Для цього ми використовуємо зв'язку Elastic Load Balancing + CloudWatch + Auto Scaling. Всі клієнтські запити (HTTP і HTTPS) надходять на один або кілька балансувальник Amazon (ELB). Зростання і зниження навантаження моніторимо через CloudWatch. Є дві цікаві метрики - стан нод EC2 (% CPU Utilization) і балансувальника (час latency - в секундах).
При збільшенні навантаження стартують нові сервери, при її зменшенні - вони автоматично вимикаються. Тим самим ми знижуємо собівартість (непотрібні сервери не працюють вхолосту).

Статичний контент користувачів сервісу

При створенні кожного нового порталу в «Бітрікс24» для нього створюється персональний аккаунт в Amazon для зберігання даних в S3. Тим самим дані кожного порталу повністю ізольовані один від одного. При цьому саме сховище S3 дуже надійно.

Дані в S3 реплицируются в декілька точок. При цьому в територіально розподілені точки (різні датацентри). Кожне з пристроїв сховища моніториться і швидко замінюється в випадку тих чи інших збоїв.
 
Коли ви завантажуєте нові файли в сховище, відповідь про успішне завантаження ви отримаєте тільки тоді, коли файл буде повністю збережений в декількох різних точках. Зазвичай дані реплікуються в три і більше пристроїв - для забезпечення відмовостійкості навіть в випадку виходу з ладу двох з них.

Архітектура S3 влаштована таким чином, що Amazon готовий забезпечити доступність на рівні двох дев'яток після коми. А ймовірність втрати даних - одна мільярдна відсотка.
 

Два датацентру і mater-master реплікація

Весь проект зараз розміщується в 4 датацентрах Amazon (в США та Ірландії). Ми вирішуємо цим відразу два завдання: по-перше, розподіляємо навантаження (зараз російські користувачі працюють в одному ДЦ, а американські і європейські - в іншому), а по-друге, резервуємо всі сервіси - в випадку виходу з ладу одного з ДЦ, ми просто перемикаємо трафік на інший.
 

База в кожному ДЦ є майстром щодо слейв в другому ДЦ і одночасно слейв - щодо майстра.
 

Кожен портал (всі зареєстровані в ньому співробітники), заведений в «Бітрікс24» в кожен конкретний момент часу працює тільки з одним ДЦ і однією базою. Перемикання на інший ДЦ здійснюється тільки в випадку будь-якого збою.
 

Бази в різних датацентрах синхронні, але при цьому незалежні одна від одної: втрата зв'язності між датацентрами може складати години, дані синхронізуються після відновлення. 
        Ми інтенсивно використовуємо master-master реплікацію. Якщо виходить з ладу або перезавантажується сервер БД, клієнти прозоро переключаються на інший.

Надійність і відмовостійкість

Один з найважливіших пріоритетів в «Бітрікс24» - постійна доступність сервісу і його відмовостійкість.
 
У випадку аварії на одній або декількох веб-нодах Load Balancing визначає вийшли з ладу машини і, виходячи із заданих параметрів групи балансування (мінімально необхідну кількість запущених машин), автоматично відновлюється потрібну кількість інстанси. 
 

Якщо втрачається зв'язність між датацентрами, то кожен датацентр продовжує обслуговувати свій сегмент клієнтів. Після відновлення коннектівіті, дані в базах автоматично синхронізуються. 
 

Якщо ж виходить з ладу повністю датацентр, або ж, наприклад, відбувається збій на базі, то весь трафік автоматично перемикається в працюючий датацентр. 
 

Якщо це викликає підвищене навантаження на машини, то CloudWatch визначає зрослу утилізацію CPU і додає потрібну кількість машин вже в одному датацентрі в відповідність з правилами для AutoScaling.
 

При цьому у нас призупиняється майстер-майстер реплікація. Після проведення необхідних робіт (відновлювальних - в випадку аварії, або планових - ми, наприклад, точно за такою ж схемою в якийсь момент здійснили перехід зі стандартного MySQL на Percona Server - при цьому без будь-якого downtime'а для користувачів сервісу) , включаємо базу в роботу і відновлюємо реплікацію.
 
Якщо все пройшло штатно, трафік знову розподіляється на обидва датацентри. Якщо при цьому середнє навантаження стало нижче порогового значення, то зайві машини, які ми піднімали для обслуговування зрослого навантаження, автоматично гасяться.

Для хмарних сервісів є досить великою проблемою питання поновлення функціоналу і системного ПО. Іноді вони змушені тимчасово відключати сервіс, попереджати користувачів, проводити роботи в нічний час. Наша архітектура дозволяє все це проробляти непомітно для користувачів.
 

Інтегровані веб-сервіси
(Інтеграція веб інтерфейсів в Бітрікс24 без додаткових інструментів)
 

Технологія WebRTC: дзвінки, відеодзвінки, телефонія


Відео виклик в Бітрікс24 - приватні, надійні відеопереговорів всередині компанії - реалізовані на основі технології WebRTC. З'єднання зашифровано, здійснюється між співрозмовниками - peer-to-peer, відбувається практично прозоро, «всередині» браузера. 
 
SIGNALING 
 

Signaling виконує три прості завдання:
 

1) Зістикувати конфігурації двох браузерів (аудіо / відео потоки, кодеки, адреси та порти - в форматі SDP)

2) Обмін паролями для установки зашифрованого з'єднання між браузерами

3) Ініціація дій - зателефонувати тому-то (з'єднати потік клієнта А з потоком клієнта Б на callbacks в js), покласти слухавку та т.п.
 

Тобто через signaling браузери стикуються один з одним та з'являється можливість здійснювати відеодзвінки.
 

Дзвонити виходить просто в локальній мережі, але коли співробітники в різних мережах, та ще за файерволами - браузери не зможуть встановити з'єднання без сторонньої допомоги.
 

1) Для «пробивання» файерволов компанії співробітники звертаються за протоколам STUN / TURN до центрального серверу.

2) Якщо «пробити» фаєрволи не вдалося, медіапотоки йдуть через сторонній сервер, а не peer-to-peer між браузерами (в режимі «relay»).

Відеоконференції

В WebRTC в відеоконференції кожен браузер тримає відеопотік кожного учасника.
 

WebRTC та телефонія 
 

У Бітрікс24 виконана інтеграція з «шлюзами» для можливості здійснення дзвінків на звичайні телефонні номер з / в компанію.
 

Технологія Композитний сайт для прискорення роботи


У «Бітрікс24» використовується унікальна технологія «Композитний сайт», реалізована в платформі «1С-Бітрікс», яка об'єднує в собі високу швидкість завантаження статичного сайту та всі можливості динамічного сайту.
 

Сторінка веб-ресурсу розділяється на 2 складові: статичну та динамічну. Статична частина кешується та відображається миттєво. Користувач відразу бачить вміст та може працювати з ним. Динамічна частина завантажується в фоновому режимі та кешується в браузері відвідувача. В результаті користувач миттєво отримує контент сторінки.
 

Мета технології «Композитний сайт» - прискорити видачу сторінки користувачеві за рахунок виділення, подальшої обробки та довидачі зон з динамічним контентом додатковим ajax-запитом.

Суть технології «Композитний сайт» - в тому, що в шаблонах компонентів, з яких створюється динамічна сторінка, розмічаються спеціальні зони, в яких міститься динамічний контент. При зверненні користувача до сторінки система створює кеш статичної частини сторінки, в які вставлено спеціальний JS, який звертається до сервера за актуальними даними. При повторному зверненні того ж або іншого користувача система віддає створений файл кеша, а потім довидає динамічний контент.
 

REST API Бітрікс24


Партнери «Бітрікс» можуть створювати власні додатки для сервісу. При розробці програми доступні REST-методи для:

  • CRM;
  • сховища даних (Інфоблоки);
  • повідомлень;
  • завдань;
  • роботи з користувачами;
  • роботи з підрозділами;
  • живої стрічки;
  • календарів;
  • телефонії.

Всі застасунки для «Бітрікс24» можна поділити на 3 типи: 
 

1) Застосунки, що розміщуються в хмарі «Бітрікс». Зазвичай завантажуються у вигляді архіву, який містить в собі весь необхідний html, стилі, javascript, картинки. Точкою входу такого додатка вважається файл index.html. Інсталятором - install.html, при його наявності.

2) Застосунки, що розміщуються на сторонніх серверах. При реєстрації додатки в Маркетплейс вказуються прямі посилання на точку входу та інсталятор цього додатка, які будуть відкриті в інтерфейсі Бітрікс24.

3) Зовнішні застосунки - застосування використовують тільки API, і ніяк не інтегруються в інтерфейс Бітрікс24. Зовнішні програми служать для отримання даних, які будуть використовуватися, наприклад, для ваших web-, desktop- або мобільних застосунків.
 

З метою безпеки для відображення на порталі застосунок вставляється в IFRAME робочої області. У IFRAME завантажується посилання, зазначена при реєстрації програми. Якщо застосунок було завантажено у вигляді архіву, то посилання береться з сайту 1С-Бітрікс.
 

Авторизація застосунків здійснюється за допомогою протоколу OAuth 2.0. Для застосунків, що інтегруються в інтерфейс Бітрікс24 (відкриваються в IFRAME), авторизація проводиться автоматично.
 

З IFRAME не можна отримати доступ до батьківського вікна. Це великий плюс з точки зору безпеки, але мінус з точки зору розробки. Використання в застосунку спеціальної JavaScript-бібліотеки дозволить частково обійти обмеження, пов'язані з роботою застосунку всередині IFRAME та дає додатковий інтерфейс для виклику методів REST API на стороні клієнта.

Дякую, допомогло! Дякуємо :) Не допомогло Дуже шкода :(
Дізнайтесь, чому:
Це не те, що я шукаю
Дуже складно і незрозуміло

Не знайшли відповідь на своє питання?

ПОСТАВТЕ ПИТАННЯ КОМАНДІ ПІДТРИМКИ24
Створювати звернення в техпідтримку можуть тільки користувачі комерційних тарифів. Користувачі безкоштовної версії мають доступ до безлічі навчальних статей та відео, а також записів вебінарів по Бітрікс24. З усіма питаннями по встановленню, впровадженню та доопрацюванню вам допоможуть наші партнери