Подробная инструкция по установке SSL-сертификата Let’s Encrypt на сервер с CMS Bitrix и Nginx. Хабр битрикс


собеседники на все случаи / Блог компании 1С-Битрикс / Хабр

В последнее время чат-боты обрели нешуточную популярность, превратившись из развлечения для гиков в едва ли не must have-фичу во всевозможных мессенджерах, соцсетях и на сайтах. Причём во многих случаях чат-боты используются не для развлечения праздной публики, а для решения совершенно серьёзных бизнес-задач. Просто делают они это более дружелюбно и доверительно, в совершенно естественной для человека форме диалога. Даже больше: в форме индивидуальной переписки. А что сегодня может быть естественнее, в эпоху интернета, мессенджеров и смартфона в каждом кармане? Поэтому мы тоже задумались о том, чтобы оснастить наш облачный сервис «Битрикс24» для организации работы компаний таким полезным и востребованным инструментом. И чуть больше месяца назад выпустили свою собственную платформу для создания чат-ботов. Чат-бот — это приложение, способное поддержать письменный диалог с пользователем, выбирающее ответы из базы данных и реагирующее на некий набор команд. Сегодня на рынке в основном представлены чат-боты из сегмента «клиент-клиент». То есть это инструменты общения (и развлечения) между обычными пользователями. А платформ, адаптированных для решения бизнес-задач, куда меньше.

Какие же задачи могут решать чат-боты в бизнес-сегменте?

Наша бот-платформа

Наш чат-бот Марта, использующий технологии машинного обучения компании «Наносемантика», встроен в сервис «Битрикс24» по умолчанию. Также в рамках «Битрикс24» работают еще два чат-бота: Giphy, который находит анимированные gif-изображения по запросу пользователя сервиса, и «Реквизиты контрагента» — чат-бот, позволяющий находить реквизиты любой компании из списка ФНС России.

Боты, разработанные партнерами компании, можно найти в магазине готовых приложений для «Битрикс24». Мы выделили отдельный бот-раздел «Чат-боты», в котором уже доступно 10 ботов для установки в «Битрикс24».

Чат-бот Марта

Марта — это собеседник. Она наш виртуальный помощник, разработана совместно с компанией «Наносемантика». Марта умеет поддержать разговор на общие темы. Она может помочь сориентироваться в функционале «Битрикс24», подскажет, где искать ответы на конкретные вопросы, порекомендует полезные ссылки. Также Марта умеет напоминать о встречах и выполнять некоторые задачи.

Чат-бот Giphy

Giphy (Гифи) — развлекательный бот. Он по запросу пользователя находит и присылает анимационные гифки на заданные темы.

Чат-бот РЕКВИЗИТЫ КОНТРАГЕНТА

«Реквизиты контрагента» — классический бизнес-бот, интегрированный с базой-данных ФНС России (Федеральной налоговой службы). Он умеет искать компании из списка ФНС по ИНН, ОГРН, названию компании или имени руководителя.

Боты от партнеров для «Битрикс24»
В магазине готовых приложений для «Битрикс24» есть еще полезные боты – один из них – «Переводчик», реализованный PWEB, умеет переводить тексты с одного языка на другой и поддерживает 63 языка. Другой – OCR Bot от «First open systems» — умеет распознавать сканы любых документов и сохранять их в текстовом формате RTF.

Возможности бот-платформы

В своей бот-платформе мы реализовали все ключевые моменты, которые сегодня стали стандартом для чат-ботов.

В частности:

Схема работы чат-бота:
  1. Пользователь пишет сообщение в чате
  2. На сервер приложения отправляется POST-запрос
  3. Приложение его обрабатывает
  4. Отправляет обратно на Битрикс24 по REST API какую-то команду

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

Что нужно для разработки своего бота?

Мы старались сделать бот-платформу максимально простой, чтобы обеспечить максимально низкий порог входа для создания собственных ботов. Мы считаем, что выполнили поставленную задачу, потому что 17 марта был опубликован первый черновик документации для внешних разработчиков, а 18 марта в магазине приложений для Битрикс24 был уже выложен первый партнёрский бот.

Самый простой способ написания бота на нашей платформе: скачать демо-бота (бот-эхотест, который просто повторяет всё, что вы ему пишете) и модифицировать его под ваши нужды. Этот бот уже обладает полным набором возможностей, это не урезанная версия. Достаточно установить его на свой хостинг, изменить логику и опубликовать в каталоге приложений. Бот предоставляется в виде РНР-файла, но с помощью нашего API вы можете написать своего бота на любом другом языке.

Если же вам нужна гораздо более широкая или специфическая функциональность чат-бота, то вы можете воспользоваться SDK, разработанным нашим партнером. Он отлично функционирует и подходит для решения ваших задач:

Это инструмент представлен в открытом доступе. В нём есть весь типовой функционал: работа с CRM, задачами, чатами, пользователями и др. Весь код написан по принципам ООП и вы с легкостью сможете его использовать, опираясь на современные IDE.

Документация по платформе

В данный момент мы составляем финальную версию документации, но уже есть доступен черновик и несколько статей о том, как с этим работать. Черновик доступен (и постоянно обновляется) на нашем сайте для разработчиков. Финальная документация планируется к публикации в течение ближайших недель.

Зарегистрироваться можно здесь: https://dev.bitrix24.ru/ Затем прочитайте это сообщение: https://dev.bitrix24.ru/company/personal/user/2664/blog/1024/

Общая документация.Возможности форматирования.«Богатые» сообщения. «Набираемые клавиатуры».Текстовые команды.Скачать демо-бота (Мы разместили тестового бота на БитБакет, вы сможете ознакомиться с ним по данной ссылке).

habr.com

Как соответствовать ФЗ-152 «О персональных данных» c «Битрикс24» и «1С-Битрикс»

С 1 июля 2017 года будет сильно ужесточена административная ответственность за нарушения при работе с персональными данными физических лиц. Это касается и владельцев сайтов, которые собирают такую информацию о посетителях. Как быть тем пользователям Битрикс24, кто собирал персональные данные автоматизированно, с помощью CRM-форм или Открытых линий? Мы решили помочь своим клиентам соблюсти закон и избежать штрафов. Автоматизируем и это!

Мы подготовили универсальное «Согласие на обработку персональных данных» для и разместили его в CRM-формах и Открытых линиях.

В CRM-формах

Что нужно сделать:
  1. Заполнить реквизиты своей компании в настройках CRM. Также это можно будет сделать при настройке согласия в CRM-форме.
  2. Указать e-mail, на который клиенты смогут отправлять запросы на удаление персональной информации. Согласно закону, на такие запросы необходимо отреагировать. Сейчас указан только пример e-mail адреса, можно оставить его или сменить в настройках формы.
  3. Проверить в настройках активных форм, что согласие подключено и корректно отображается для клиента.
Что вы получите:
  1. Два варианта подтверждения:
    • под формой стоит галочка — соответствует согласию «Нажимая кнопку «Отправить», я даю свое согласие...»

    • под формой нет галочки — ее нужно будет поставить перед отправкой заполненной формы.
  2. Поля CRM-формы будут автоматически включены в текст согласия как относящиеся к персональным данным, даже если это просто комментарий.
  3. В настройках формы по умолчанию есть галочка на согласие передачи персональных данных третьим лицам. Там можно указать эти лица (например, ООО «Почта России» или курьерская служба) — их тоже включат в текст согласия.
  4. Можно выбрать или добавить собственные варианты использования и сроков хранения персональных данных.
  5. В текст согласия также включается указанный e-mail для удаления данных. Если на портале меньше 20 пользователей, то автоматически будет проставлен e-mail администратора портала.
В итоге согласие будет выглядеть так:

В Открытых линиях

  Сначала в настройках открытой линии нужно включить отправку предупреждения о сборе персональных данных.

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

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

habr.com

React в браузерах и на мобильных платформах / Блог компании 1С-Битрикс / Хабр

Этот пост написан по материалам выступления Григория Петрова из компании VoxImplant на партнёрской конференции «1С-Битрикс».

Вообще говоря, наша компания Voximplant занимается созданием решений для облачной голосовой телефонии. Но на страницах этого поста я хотел бы поговорить не об этом, а о некоторых перспективных технологиях. Так получилось, что уже больше 15 лет я делаю софт, как самостоятельно, так и в роли руководителя команд разработчиков и консультанта.

За последние несколько лет индустрия создания программного обеспечения развивается просто безумными темпами. И особенно хорошо это видно на примере близких нам веб-технологий, к которым относятся все продукты «1С-Битрикс». И одним из направлений развития является перенос на мобильные платформы, с внедрением адаптивной вёрстки и многого другого хорошего и интересного. Технологии сменяют друг друга примерно раз в три месяца. Здесь же я расскажу об использовании технологии React, которая сейчас представлена в двух ипостасях: React.js и React Native.

История возникновения

Победное шествие React началось в 2013 году, когда у Facebook была большая проблема, связанная с отображением количества новых сообщений в чате. Долгие годы оно отображалось неправильно, и инженеры Facebook никак не могли победить чатик. Он показывал, что новые сообщения есть, хотя на самом деле их не было, и наоборот. И всех это очень печалило. В конце концов, в 2013 году инженеры Facebook собрались, сказали много всего хорошего и придумали технологию, которая должна была решить все их проблемы раз и навсегда. Забегая немножко вперед, чатик они починить не смогли, но получилось забавно.

Итак, в Facebook создали React.js — технологию, которая была призвана решить проблему с чатом. Сделать это предполагалось с помощью трёх волшебных фич:

Когда какая-нибудь компания разрабатывает новую технологию, то не знает, взлетит эта технология или нет. Или взлетит лишь часть этой технологии? Обычно угадать не получается. Facebook сначала опробовал React на чате, им понравилось, после чего код React был открыт сообществу разработчиков. Маркетологи и инженеры компании делали упор на скорость работы новинки, что обеспечивается перерисовкой маленьких кусочков страниц. Но как показала практика, это свойство оказалась мало кому нужно.

Зато программистам больше всего пришлось по вкусу то, что интерфейс собирается из небольших компонентов. До React веб-программирование представляло собой «варку лапши», когда разрабатывают сложную систему из огромного HTML и вдвое более крупного CSS, приправленную горами JavaScript.

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

Это свойство обеспечило взрывной успех React.js. Сейчас в интернете тысячи статей, посвящённых использованию этого инструмента. React.js сегодня в большой моде, на него переходят крупные компании, потому что он позволяет программистам избавиться от огромной боли «лапши» в своём коде.

React Native

Всё это время Facebook сидел в засаде. И через два года после выпуска своей разработки они заявили: «Знаете, нам так понравился React.js, что теперь мы будем делать на нём также и мобильные приложения». И выкатили React.js для iPhone, а ещё через полгода — для Android.

Это было неожиданно. Как можно технологию для создания веб-интерфейса, да ещё на JavaScript, использовать на мобильных платформах? Facebook подошёл к этому с выдумкой, использовав наработки проекта Appcelerator Titanium. Он создавался несколько лет назад, но не обрёл большой популярности. Зато все сразу стали пользоваться React Native.

Что такое React Native? Когда мы делаем веб-сайт с пользовательским интерфейсом, то всё достаточно просто. У нас есть HTML, DIV, INPUT, BUTTON. Есть дизайнер, который их раскрашивает во всякие забавные цвета, и мы всем этим пользуемся.

Но при создании приложения для мобильных платформ у нас есть отдельно Android и iOS, в которых куча своего пользовательского интерфейса. Кнопки, input’ы и drawer на Android работают не совсем так, как на iPhone. Поэтому, когда вы создаёте мобильное приложение, то можете пойти другим путём: внедрить в приложение кусочек браузера и рисовать привычный HTML.

Так делает, например, популярный PhoneGap. Преимущество этого подхода в том, что приложение выглядит совершенно одинаково на всех устройствах. Недостаток: оно выглядит одинаково уродливо. Потому что пользователи Android и iOS привыкли к характерному виду элементов интерфейса, к их красивой анимации кнопочки. И когда они видят вашу веб-страничку, запакованную в виде приложения, то немного удивляются.

Есть и третий путь: можно для каждой платформы делать свой собственный интерфейс, используя «родные», нативные элементы. Так делалось ещё в Appcelerator Titanium за много лет до появления React Native. Собственно, слово Native в названии как бы подразумевает, что мобильное приложение, использующее React, будет использовать кнопочки, текстовые поля, input’ы и все остальные элементы, характерные для данной операционной системы.

Преимущества React

Работает всё это очень просто. Универсальное приложение, которое должно работать как веб-страничка на Android и iPhone, состоит из JavaScript-кода. Он отвечает за бизнес-логику: что должно делать приложение, когда пользователь нажал кнопку «Купить», как отображать элементы приложения, и т.д. Этот код одинаков для всех платформ. А код, отвечающий за пользовательский интерфейс, — то, что делает React, — разный для каждой из платформ.

React позволяет делать приложение на JavaScript, внутри которого создаются виджеты в синтаксисе XML. Выглядит это примерно вот так.

Браузер iOS Android
Общий код на JS Общий код на JS Общий код на JS
<HоrizontalLayout><ProgressBar/></HоrizontalLayout> <TаbBarIOS><TabBarIOS.Item/></TаbBarIOS> <DrаwerLayoutAndroid><ProgressBarAndroid/></DrаwerLayoutAndroid>
Когда вы делаете веб-приложение, то у вас есть свои виджеты, например, DIV, INPUT, BUTTON. При создании Android-приложения виджеты будут совсем другими: Android Button, Drawer’ы, Activity. Для приложения под iPhone у вас будет третий набор виджетов.

В этом и преимущество, и недостаток React. Если в вашем приложении много бизнес-логики, то основная масса кода будет совершенно одинаковой для всех трёх платформ — веба, Android и iOS. Если же приложение представляет собой пользовательский интерфейс к базе данных, то и код по большей части будет отличаться.

Многие компании, пытаясь «продать» средство кроссплатформенной разработки, обычно рассказывают истории из серии «Посмотрите, как замечательно! Мы сделали текст “Hello, world!”, поле ввода, кнопочку, и оно совершенно одинаково выглядит под двадцатью платформами, и всё работает».

Но на практике мало кому нужно делать столь примитивные программы. Обычно приложения создаются для того, чтобы зарабатывать деньги и решать бизнес-задачи, так что они получаются гораздо сложнее. Иногда очень-очень сложнее. Поэтому уместно будет спросить: «Ребята, ок. А если мы попытаемся сделать приложение, где будет 50 кнопок, сотни input’ов и два десятка окошек, как это себя поведёт?».

В отличие от остальных кроссплатформенных решений, React поведёт себя хорошо. Во-первых, доступно очень большое количество компонентов для веба. Если вы используете React.js для создания приложения и хотите, чтобы оно отображалось как веб-страничка, то можете использовать готовые наборы блоков. Например, сейчас очень популярен Google Material Design. Вы просто берёте горизонтальный и вертикальный layout’ы, кнопки, поля ввода, и всё это выглядит так же красиво, как Bootstrap, но при этом не надо ничего верстать. Словно собираете кирпичики Lego.

Огромное количество компаний и энтузиастов постоянно создают новые библиотеки и пользовательские интерфейсы для React Native. Например, у Facebook на GitHub есть небольшой набор для создания приложений, которые должны работать на Android и iOS. В поисковиках вы сразу найдёте карты, биллинг, базы данных, сетки, огромное количество портированных компонентов. Правда, часть из них не работает, но это open source, очень перспективные технологии.

И наконец, многие компании делают универсальные решения, которые вы можете использовать с React как в вебе, так и на мобильных платформах. Например, если вы пользуетесь телефонией Voximplant, то можете применять наш SDK как в веб-приложениях, так и в мобильных. Скажем, реализуете приложение на React для веба, Android и iOS, при этом наш SDK также позволяет звонить или принимать звонки на этих платформах. Таким образом, ваши веб-разработчики пишут один и тот же код, а получается три разных решения.

Недостатки

Конечно, не всё так радужно. Помимо множества достоинств, у React.js и React Native есть и немного недостатков.

Самый большой из них — если вы хотите использовать React на мобильной платформе, то у вас будут нативные виджеты. Это сильно ускоряет разработку, интерфейс выглядит привычно, но вашим программистам придётся это учить. То есть взять толстый талмуд по разработке приложения под Android и посмотреть, какие элементы пользовательского интерфейса там есть, как они взаимосвязаны друг с другом, как этим всем пользоваться и правильно собирать. И когда те же разработчики попробуют сделать приложение для iOS, то придется взять ещё больший талмуд от Apple и проштудировать, чтобы результат выглядел как нормальное приложение. Это, безусловно, занимает время.

Ещё один недостаток заключается в том, что при использовании React для веба он вам не даёт вообще ничего. Вот DIV’ы, верстайте сами. Для мобильных платформ из коробки доступно порядка трёх десятков виджетов, хотя у каждой из них намного больше элементов пользовательского интерфейса, под сотню. И если вы хотите использовать что-то помимо маленького стандартного набора, то придётся либо идти на GitHub и набираться идей, либо писать самостоятельно на низкоуровневом языке вроде Java или Objective-C.

Третий недостаток связан с молодостью проекта React Native. Это пока очень сырая технология, которую пока не успели довести до ума, в отличие от React.js. Конечно, проект развивается, Facebook постоянно что-то чинит, иногда что-то ломает. И если вы хотите использовать эту технологию, то будьте готовы к тому, что у ваших разработчиков иногда что-то не будет получаться, и чтобы это починить, они будут много времени проводить на Stackoverflow.

React и Angular

В интернете много статей, в которых сравнивают эти две технологии. Angular — это большой полноценный framework, заточенный для создания веб-сайтов. Сейчас делают попытки перенести Angular на мобильные платформы, как и React Native, но это пока эксперименты.

Если ваш бизнес заключается в конвейерном создании не очень сложных веб-сайтов, то Angular подойдёт идеально. Его главное преимущество в том, что он всё умеет делать из коробки. При этом шаг влево-шаг вправо рассматривается как попытка взлететь. Едва вы пытаетесь сделать что-то, что не очень хорошо укладывается в рельсы Angular, то будете тратить в пять раз больше времени.

React в этом плане очень простой. Он позволяет быстро собирать пользовательский интерфейс, а всё остальное — работа самой программы, обращения к базе данных и так далее — это вне поля зрения React, придётся решать самостоятельно. Так что этот инструмент хорош для проектов с длительным сроком жизни, которые непонятно куда приведут через полтора года. Используйте React для создания пользовательского интерфейса, он упростит работу и даст возможность сделать как веб-, так и мобильные версии.

Выводы

React.js и React Native — это очень хорошие технологии, если вы хотите быстро сделать прототип. Быстро — это несколько дней. Если повезёт, и разработчик уже научился пользоваться стеком — несколько часов. Если же вы хотите делать что-то серьёзное на заказ или для продажи, на чём хотите зарабатывать деньги, то придётся поработать, потому что технологии ещё немного сыроваты. Ими надо научиться пользоваться и иногда чинить всплывающие косяки.

habr.com

Технологии кластеризации — повышаем надежность и производительность веб-проекта

Добрый день, коллеги!

Сегодня хочу рассказать о технологиях кластеризации, которые появились в 10-й версии платформы 1С-Битрикс. Также разберем, какие важные задачи они позволят решить Вам, как руководителю веб-проекта и как эффективно использовать данные технологии, если Вы — разработчик. В конце статьи рассмотрим конкретные архитектуры работающих веб-кластеров на платформе 1С-Битрикс, в т.ч. ресурса www.1c-bitrix.ru.

Но прежде — постараемся объективно ответить на вопрос — в каких случаях все же целесообразно для реализации веб-проекта выбирать фреймворк или коробочное решение, а в каких — создавать веб-проект «с нуля».

Разработка веб-проекта «с нуля»
Казалось бы, процесс разработки веб-проекта «с нуля» выглядит относительно простым и ведущим к успеху:
  1. Проектируем и оцениваем объем работ
  2. Набираем команду веб-разработчиков, верстальщиков (возможно, дизайнеров)
  3. Программируем, верстаем, тестируем
  4. Наполняем веб-проект контентом
  5. Запускаемся
  6. Поддерживаем и развиваем веб-проект
Но… на практике:
  1. Вам потребуются квалифицированные системные аналитики и технические эксперты для проектирования и оценки объема работ, которых на рынке мало, а стоят они дорого
  2. Нужно набрать команду квалифицированных веб-разработчиков, которых на рынке мало, а стоят они дорого
  3. Нужно выбрать и настроить эффективный процесс разработки, в т.ч. снабдить команду инструментами типа трекера, среды разработки, системы контроля версий и т.п.
  4. Чтобы быстро наполнить веб-проект контентом нужно… разработать «админку» для всех видов контента, а это дополнительное время и деньги
  5. Потребуется тесное взаимодействие с квалифицированными системными администраторами для настройки серверов и софта, организации резервного копирования и мониторинга, аудита безопасности
  6. Нужно выбрать и внедрить инструменты для «передачи» доработок веб-проекта от команды разработки в «прямой эфир» — для этого используют, например, системы контроля версий и/или инструменты непрерывной интеграции
К сожалению, нередко после запуска веб-проекта в эксплуатацию оказывается, что созданный командой разработки код веб-решения — низкого качества (пишут разные люди, разной квалификации, в разное время, никто не проверяет их работу и т.п., а если используется «принуждение к труду» то вообще пиши пропало :-) ). Для Вас это означает, что вносить изменения/улучшения в веб-проект будет все дороже и дольше (попытка поставить бетонные стены на глиняный фундамент), а система будет работать все медленнее и медленнее при увеличении посещаемости веб-сайта. Периодически, чтобы хоть как-то двигаться дальше и развивать веб-проект, вам потребуется скорее всего полностью переписывать отдельные его части — что может быть чревато нарушением функциональности и стабильности других частей (что чревато потоком жалоб со стороны посетителей сайта, потерей заказов, исчезновением финансовых транзакций и т.п.).

А при значительном увеличении посещаемости веб-ресурса, например, до миллионов хитов в сутки, может оказаться — что веб-решение вообще не создавалось для подобных нагрузок и должно быть «срочно» переписано заново.

Разработка веб-проекта на базе фреймворка
Выбирая фреймворк, Вы, в теории, сокращаете риски и сроки разработки. Действительно, ведь я использую что-то типа каркаса/фундамента, на который «нанизываю» нужный мне функционал веб-сайта. Но многие риски, к сожалению, остаются: Средства отладки платформы 1С-Битрикс: некачественная разработка на фреймворке — не пройдет :-) Нагрузочные инструменты платформы 1С-Битрикс позволяют довольно просто оценить устойчивость веб-проекта к высоким нагрузкам
Расширение возможностей — благословение или проклятье?
Одной из краеугольной характеристик качественного фреймворка — это предоставление возможности, путем создания несложных надстроек, реализовать разные сценарии его использования. Например, а смогу я встроить нестандартный алгоритм расчета скидок в интернет-магазине без затратного переписывания ядра фреймворка высококвалифицированными программистами с опытом разработки н фреймворке от 5 лет :-)? А смогу я использовать разные валюты, курсы которых зависят от региона? А можно использовать внешнюю базу учетных записей из имеющейся системы для авторизации на веб-проекте?

В BitrixFramework, благодаря обязательной фазе углубленной системной аналитики проблемной области при разработке ядра и модулей платформы, реализованы основные распространенные бизнес-процессы, которые могут потребоваться в 95% веб-проектов. Для создания надстроек Вы всегда сможете задействовать механизм несложных обработчиков событий, с помощью которого можно реализовать практически любой фантастический сценарий бизнес-процесса программистом начальной или средней квалификации.

Тем не менее, иногда все же может оказаться, что задачу на фреймворке реализовать сложнее и дольше, чем написать «с нуля», и Вы об этом узнаете уже в процессе разработки :-). В этом случае фреймворки, как правило, предоставляют возможность модульного расширения. В BitrixFramework вам нужно будет создать модуль, реализующий нестандартную логику. Писать модуль обычно дольше, чем создавать обработчик события, но при этом достигается максимальная гибкость. Написать модуль относительно просто, но возможно такой модуль уже написан — поэтому стоит предварительно «порыться» в marketplace.

Разработка веб-проекта на базе коробочного решения
Данный подход скорее всего максимально сократит время и риски разработки веб-проекта, если ваши требования «близки» к функционалу коробки. Например, для создания и запуска типичного интернет-магазина с мультивалютным каталогом, авторизацией, скидками, персональным разделом, поиском и поддержкой многочисленных платежных систем скорее всего подойдет коробочное решение «1С-Битрикс: Управление сайтом» (редакция «Малый бизнес»).

Дополнительно, коробочное решение, являясь как бы «историей успеха» и «книгой рецептов», помогает Вам, как заказчику проекта, «пощупать» практические примеры реализации бизнес-задач. А разработчикам коробка позволяет изучить «исходники» решения, чтобы продублировать его, либо сделать лучше :-). Частый кейс при использовании коробки: «Сделайте также как тут и тут, чтобы в админке управлялось аналогично как там».

«Правильная» коробка не навязывает свои решения как истину в последней инстанции, позволяя «срезать» слой работающей реализации и заменить его на свою реализацию, базирующуюся на фреймворке. В 1С-Битрикс вы можете легко деинсталлировать из системы готовое решение, поставить новое для экспериментов, в том числе из Marketplace и выбрать свой, наиболее оптимальный путь.

Для каких типов веб-проектов окажутся полезными технологии кластеризации платформы 1С-Битрикс?
Если Вы уже используете или планируете вести разработку на фреймворке/коробке 1С-Битрик то, скорее всего: Именно для обеспечения высокой доступности и производительности веб-проекта на платформе 1С-Битрикс в 10 версии появилась возможность задействовать в продукте популярные и эффективные технологии кластеризации:

1) Вертикальный шардинг (вынесение модулей системы на отдельные серверы MySQL). Теперь можно вынести интенсивно используемые модули «Поиск» и «Веб-аналитика» на собственное «железо».

2) Репликация MySQL и балансирование нагрузки между серверами. Теперь можно распределить нагрузку на СУБД веб-проекта на группу серверов, добавляя их при необходимости. Технические подробности можно почитать тут.

3) Распределенный кеш данных (memcached). Надежное и масштабируемое кэширование критически важно для высоконагруженных проектов. Технические подробности тут.

4) Кластеризация сессий между веб-серверами. Эта необходимо при работе группы веб-серверов за балансировщиком. Почему мы храним сессии не в memcached — об этом напишем отдельно :-).

5) Кластеризация файлов веб-серверов. Это необходимо для автоматической синхронизации контента между машинами. Технические подробности тут.

Особое внимание хочется обратить на то, что технологии кластеризации используются на уровне ядра платформы 1С-Битрикс и дорабатывать код веб-проекта — не нужно! (каждый раз когда пишу про это, не верю, но… это так и есть на самом деле) Разумеется, при необходимости можно в коде задавать, с каких именно серверов репликации осуществлять чтение/запись — но это необходимо подавляющему меньшинству веб-проектов.

Также, если Вы разрабатываете веб-проект, которому возможно понадобятся технологии кластеризации в будущем — можно в принципе их «подключить» потом, когда в них возникнет необходимость, без доработки кода веб-проекта. Это серьезно удешевляет разработку веб-проекта, т.к. если сразу создавать систему под высокую нагрузку, работающую на 5 базах данных, с кластерной файловой системой и горизонтальным шардингом — то в случае ее невостребованности — вы напрасно потратите время и деньги.

Кластерные архитектуры работающих веб-проектов на базе 1С-Битрикс
Самый интересный раздел статьи — рассмотрим, наконец, конкретные примеры действующих веб-кластеров на платформе 1С-Битрикс.
www.kupibonus.ru — бесперебойная доставка услуг
Внедрение веб-кластера провел наш сертифицированный партнер «Linemedia», г. Москва. Редакция платформы – «Бизнес веб-кластер».

Веб-проект ежедневно посещают несколько сотен тысяч пользователей, также дополнительную нагрузку генерируют партнёры проекта, имеющие доступ к проекту через API Kupibonus. Активная двухсторонняя интеграция с бэк-офисом «1С: Предприятие», интенсивные каналы взаимодействия с внешними сервисами. За счет внедрения веб-кластера обеспечена высокая производительность и отказоустойчивость не только публично части, но и внутренних бизнес-процессов и API. Внедрение прошло в довольно короткие сроки – две недели.

www.komos.ru — электронная биржа
Внедрение веб-кластера провел золотой сертифицированный партнер «Профессиональные Интернет-решения», г. Ижевск. Редакция платформы – «Веб-кластер».

Веб-проект является высоконагруженной площадкой для проведения электронных торгов группой компаний — «КОМОС ГРУПП». В состав группы входит 13 крупнейших предприятий, производящих продукты питания в Удмуртии и Пермском крае. Полученная в результате торгов стоимость предложений составила почти 5 млрд. рублей менее чем за год. За счет внедрения веб-кластера обеспечена высокая производительность и отказоустойчивость, легкая масштабируемость электронной торговой площадки.

www.1c-bitrix.ru — это мы
Веб-кластер размещен на группе EBS/EC2 машин в облаке Amazon. Достаточно большой объем статического контента. Высокая нагрузка как на публичную часть, так и на интеграционное API (marketplace), а также систему обновлений. За счет перехода на веб-кластер обеспечена высокая производительность и устойчивость, быстрое масштабирование в случае необходимости.

Мы хотели использовать встроенный в облако балансировщик, но пока, по причине его «негибкости», используем для этого отдельную машину. Бэкапы делаем в S3 встроенной в облако удобной технологией снепшотов, для резервного копирования raid10 на базе EBS разместили на нем XFS и, для целостного снепшота, «фризим» ее используя утилиту ec2-consistent-snapshot. Статику постепенно выносим в облако и CDN. Большинство рутинных операций: поднять машину в случае нагрузки, переключение нагрузки, бэкапы и т.п. — заскриптовано на API amazon.

В настоящее время несколько веб-кластеров готовятся к запуску у отечественного облачного провайдера Оверсан-Скалакси. Мы о них обязательно напишем и нарисуем.

Наши ближайшие технологические планы в области облаков и кластеризации

На прошедшей недавно партнерской конференции мы анонсировали, что сделаем в ближайшем релизе платформы 10.5, который выйдет осенью, поддержку облачных хранилищ: Amazon/S3, Google Storage, технологий хранения данных в Microsoft Azure.

Также, в версии 10.5, мы хотим предложить нашим клиентам решение, делающее их веб-кластер максимально надежным и… абстрагированным от облачного провайдера — чтобы в случае серьезных проблем в облаке/ДЦ, веб-кластер продолжил бесперебойно обслуживать клиентов в другом регионе облака/на другом континенте:

Cluster grid (это пока одно их рабочих названий технологии)

Мы с интересом смотрим на новейшие облачные технологии кластеризации и видим в них немалый потенциал для обеспечения надежности и производительности веб-проектов. Лучшие технологии мы будем продолжать реализовывать в платформе 1С-Битрикс — делая их полезными и доступными для наших многочисленных клиентов.

Желаю всем технологической удачи, оптимизма и до новых встреч в нашем корпоративном блоге!

Ссылки:

Александр Сербул, руководитель направления контроля качества интеграции и внедрений 1С-Битрикс

habr.com

примеры использования / Блог компании 1С-Битрикс / Хабр

Tarantool — это СУБД с открытым исходным кодом. Кто угодно может скачать её с GitHub и использовать как в коммерческих приложениях, так и в некоммерческих. Сегодня технический директор Почта@Mail.ru Денис Аникин расскажет о примерах использования этой базы данных. Материал подготовлен по мотивам выступления на конференции FailOver Conference.Tarantool разрабатывается в Mail.Ru Group уже больше семи лет. Эта СУБД рассчитана на высоконагруженные системы. Её основное отличие: это база данных, которая сочетает в себе свойства настоящей БД — транзакции, репликации, всё что касается надежности, — но при этом она такая же быстрая, как и кэши, например, Memcached или Redis.

В Mail.Ru Group добрая половина продуктов работает на Tarantool. Ему отдаётся предпочтение в тех случаях, когда от СУБД требуются свойства кэша, то есть она должна уметь делать 100 тыс. апдейтов в секунду, у нее должно быть очень хорошее latency — 1 мс или меньше — и так далее. Многие СУБД не удовлетворяют этим критериями. Если используется много шардов, то это не идёт на пользу: перестают работать транзакции, теряется целостность и возникают прочие проблемы. А кэши, в свою очередь, не обладают многими полезными свойствами БД: надежностью хранения данных на диске, транзакциями и так далее. Например, в кэшах обычно нет такой важной штуки, как хранимые процедуры. Они позволяют переносить логику на сторону хранилища данных.

БД + кэш = ?

Конечно, можно жить на высоконагруженных проектах и без Tarantool. Допустим, вам нужны свойства и базы, и кэша в одном флаконе. Тогда можно применить очень популярную схему: поместить кэш поверх БД. Тогда все запросы идут сначала в кэш, если в нём есть нужные данные, то они отдаются пользователю. Если их там нет, то запрос переадресуется в БД. Все обновления идут сразу и в БД, и в кэш, ведь мы не можем что-то хранить в кэше, не сохранив это в базе, иначе эти данные могут быть потеряны.

Такая схема позволяет получить часть свойств СУБД. Например, транзакций и хранения процедур уже не будет, потому что когда появляются две системы, особенно кэш, то ни о каких транзакциях речь не идёт. В каком-то смысле теряется и репликация, потому что данные в базе реплицируются, а в кэш — как бы не совсем. Также теряются хранимые процедуры и прочие свойства БД. Свойства кэша сохраняются тоже частично. Такая система работает быстрее, потому что увеличивается скорость обработки обращений на чтение, но при этом, например, обращения на запись быстрее не становится. Если база данных затормозила, потому что у нее происходит вакуум таблицы или что-то ещё, то система будет тормозить на запись, потому что без БД запись не работает.

В целом, это рабочая схема. Она позволяет получить часть свойств и базы, и кэша в одной системе. Если вам этого достаточно, то такую схему и надо использовать.

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

Если вас не смущают эти моменты, то схема «кэш поверх БД» — вполне рабочий вариант. В противном случае целесообразно обратить внимание на Tarantool, потому что в нём все эти проблемы решены изначально. Одна из причин его разработки и заключается в том, чтобы не городить такие сложные гетерогенные системы, состоящие из нескольких хранилищ, а спокойно обходиться одним и хранить в нём все горячие данные.

Движки

У Tarantool есть два движка хранения данных. Один из них — это in-memory движок. Устроен он так: все данные хранятся в памяти, копии данных есть на диске. На диск пишется каждая транзакция просто в log, и время от времени на диск сбрасывается целиком snapshot всей базы. Сбрасывается асинхронно в фоновом режиме. Пока он сбрасывается, база работает, потому что все новые обновления идут в отдельные места. То есть все работает вообще без тормозов. Log транзакций пишется всегда.

Второй движок дисковый. Он позволяет всё хранить на диске. Причем можно использовать как SSD, так и винчестеры. Этот движок вырос из гуглового LevelDB, который был оптимизирован.

Преимущества и недостатки

Tarantool присущи свойства, характерные для кэша: В основном здесь всё связано с высокой скоростью работы. Традиционные СУБД лишены этих свойств. При этом Tarantool обладает и свойствами классических СУБД: Опять же, у кэша этих свойств нет, а в Tarantool они присутствуют.

Одни современные БД нацелены на высокую надёжность работы, другие делают упор на скорость работы. Это два разных мира, которые, в основном, не пересекаются. Tarantool — это достаточно успешная попытка объединить оба мира в одном решении.

К недостаткам Tarantool можно отнести следующее:

Примеры использования Tarantool

Все примеры взяты из опыта работы проектов Mail.Ru Group. На самом деле их очень много, но мы рассмотрим только три: систему аутентификации, систему push-уведомлений и систему показа рекламы. Обычно они самые высоконагруженные.
Система аутентификации
Она должна обладать рядом, казалось бы, противоречивых требований. В целом этот набор свойств может выглядеть противоречивым. Какие-то из них обычно реализуются кэшами, а какие-то — базами данных. Система аутентификации должна быть надёжная и долговечная как грузовик, но при этом такая же быстрая, как спортивная машина. И Tarantool пришёлся здесь как нельзя кстати.

Схема работы системы аутентификации Mail.Ru по логину и паролю:

Только при проверке логинов и паролей в Mail.Ru выполняется 50 тыс. транзакций в секунду. Защита от brute-force и система аутентификации каждый раз читают и пишут в Tarantool. Эта суммарная нагрузка достигает примерно миллиона запросов в секунду: от всего портала, от всех мобильных приложений, от всех Ajax- и неAjax-запросов.

При этом сессии обслуживает всего 4 сервера, а профили пользователей — 8 серверов. Не какие-то брендовые, специальные серверы, а самые обычные, с обычными процессорами. Ничего космического.

Система push-уведомлений
Как вы знаете, мобильные приложения любят присылать пользователям push-уведомления, чтобы они оставались в них подольше. То есть это такая хорошая и благодарная штука.

Как устроена система уведомлений в Mail.Ru?

Когда на сервере происходят какие-то события — пришло письмо, сообщение в мессенджер, появилась новость — нужно отправить уведомление на мобильные телефоны конечных пользователей. Напрямую это сделать невозможно. Поэтому Apple и Google предоставляют API для iOS и Android, посредством которых можно дергать мобильные приложения.

Но обращаться к этим API напрямую с сервера нельзя. Почему — об этом чуть ниже. Кроме того, при каждом генерировании события нужно сходить в хранилище, чтобы понять, какому пользователю доставлять это событие. И не забыть прочитать токен, потому что API работают с токенами. И всё это нужно сделать очень быстро.

Также крайне важно сохранить очень низкое latency, поскольку события генерируются из большого количества разных контекстов и серверных окружений. Никогда нельзя тормозить на сервере, ждать секунду-две, потому что иначе все остальные участники процесса по цепочке начнут работать медленно. По этой причине мы к API не напрямую с сервера, а через очередь, тоже работающую на Tarantool. Эта СУБД может предоставлять и сервис очередей, причем персистентных и реплицируемых. То есть при падении машины, при выходе диска из строя, при перезагрузке сервера никто ничего не замечает.

Получается, что сервер работает напрямую только с быстрым хранилищем, а всё медленное расположено дальше, за очередью. Такая схема позволяет быстро всё обрабатывать: суммарное количество запросов в этой системе порядка 200 тыс. в секунду.

Система показа рекламы
Это, наверное, самый высоконагруженный вариант использования Tarantool, и это самая большая ферма, которая есть в Mail.Ru Group. Система отвечает за показ рекламы почти на всех страницах огромного портала, причём рекламных блоков на странице обычно не менее 10.

Чтобы показать каждый рекламный блок, нужно понять, что вообще нужно показывать пользователю. Для этого данные о нём собираются из нескольких разных источников. Всё это агрегируется и формируется результат. Всё это делается для каждого блока, и на это надо потратить меньше одной миллисекунды. Откуда такое требование? Потому что пользователи не захотят, чтобы сервис тормозил из-за рекламы, она и так всех раздражает, но является необходимым злом.

Нагрузка на систему показа рекламы — порядка 3 млн запросов в секунду. Причем 1 млн из них — это изменения, потому что показ рекламы часто приводит к обновлению профиля пользователя.

Краткий вывод

Если вам нужно сочетать свойства БД и кэша, — надежность и скорость, — и если какими-то простыми методами, которыми вы обычно это делаете, не получается этого добиться, то присмотритесь к Tarantool. Скорее всего, он эту проблему решит.

habr.com

Подробная инструкция по установке SSL-сертификата Let’s Encrypt на сервер с CMS Bitrix и Nginx

Да, на Хабре уже много текстов про сертификаты Let’s Encrypt, но полной пошаговой инструкции я, к сожалению, не нашёл. Хотел восполнить пробел. К тому же, с мая 2016 года в процессе установки произошли незначительные изменения, которые могут сбить с толку новичка. Поэтому я решил написать эту инструкцию. Так сказать себе на память и другим в помощь.

Эта инструкция, в первую очередь, должна быть интересна новичкам.

image Если у вас все настройки установлены по умолчанию, можно смотреть те пути, которые я привёл. То есть, если вы используете систему, установленную с помощью скрипта Bitrix environment на операционной системе CentOS 6.X. Если же нет, вы и сами знаете где что лежит.

Установка

Первое, что необходимо сделать — установить git:# yum install git Далее переходим в директорию /tmp:# cd /tmp С помощью git скачиваем файлы Let’s Encrypt. Сам скрипт теперь называется certbot:# git clone https://github.com/certbot/certbot

Переходим в скачанную директорию:

# cd certbot На всякий случай, даем права на выполнение для файла скрипта:# chmod a+x ./certbot-auto

Получение сертификата

Далее следует команда непосредственно получения сертификата:# ./certbot-auto certonly --webroot --agree-tos --email [email protected] -w /home/bitrix/www/ -d my-domain.ru -d www.my-domain.ru --webroot — так как автоматическая установка для nginx пока не надежна, используем этот ключ;--agree-tos — соглашаемся с лицензионным соглашением;--email [email protected] — указываем свой e-mail. В дальнейшем он может пригодиться для восстановления своего аккаунта;-w /home/bitrix/www — указываем корневую директорию сайта;-d my-domain.ru — наш домен. так же можно указывать и поддомены, например -d site.my-domain.ru.

После этого скрипт начнет работу и предложит установить недостающие пакеты. Соглашаемся и ждём.

Если всё завершится успешно, вы увидите сообщение:

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/my-domain.ru/fullchain.pem. Your cert will expire on 2016-08-21. To obtain a new version of the certificate in the future, simply run Certbot again. - If you lose your account credentials, you can recover through e-mails sent to [email protected]. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le Сертификаты установлены, осталось только указать nginx'у, где они лежат.

Настройка

Открываем конфигурационный файл ssl.conf:# vim /etc/nginx/bx/conf/ssl.conf Если у вас уже были установлены сертификаты, удаляем или комментируем строки с ними и вставляем новые:

ssl_certificate /etc/letsencrypt/live/my-domain.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/my-domain.ru/privkey.pem; Не забываем включить ssl, если этого не было сделано ранее:

ssl on; keepalive_timeout 70; keepalive_requests 150; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; После этого перезапускаем nginx:

# service nginx reload Если он не выдал никаких ошибок, значит всё в порядке. Можно зайти на сайт и посмотреть что получилось.

Обновление

Сертификат выдается на 90 дней, так что после этого срока нужно будет его обновить. Делается это командой:# certbot-auto renew Её так же можно поставить в cron.

На этом всё. Для составления инструкции я использовал статью Yet another инструкция по получению ssl-сертификата Let's Encrypt и официальный гайд.

habr.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта