Программирование RoR и Crystal

Здесь, в Твин Солюшенс, мы решили сосредоточиться на разработке Ruby и Ruby on Rails для веб-проектов, добавляя Crystal в наши преимущества там, где это необходимо.

Решения компании-разработчика Ruby on Rails: RoR и Crystal Services


Фокус Твин Солюшенс включает в себя разработку сложных продуктов, таких как системы управления, автоматизированные онлайн-сервисы, высоконагруженные продукты, CRM и CMS-системы, мобильные приложения и многое другое. В конце концов, 138 реализованных проектов не должны оставлять никаких сомнений.

Но давайте подробнее остановимся на том, что такое Ruby on Rails и чем эта технология выгодно отличается от остальных.

Фреймворк


Ruby on Rails — одна из самых известных платформ с открытым исходным кодом, используемая для самых разных проектов. Чаще всего этот фреймворк используется для создания веб-сайтов и веб-приложений, причем их масштаб и сложность не имеют значения. Вне зависимости от того, к какому сегменту относится ваш бизнес, нужна ли вам форма входа или нет, а также такие вещи, как личный профиль пользователя и большой объем активных данных — Ruby on Rails справится с любой задачей.

Конечно, существует большое количество языков программирования и еще больше фреймворков. Но Твин Солюшенс выбрали Ruby on Rails в качестве своего основного направления не просто так. Этот фреймворк имеет ряд преимуществ, о которых мы поговорим ниже.

Преимущества использования Ruby on Rails


Говоря о том, чем этот фреймворк отличается от остальных, следует выделить несколько ключевых моментов:

Быстрая разработка

Несмотря на то, что Ruby on Rail многофункционален и универсален, в мире разработки этот фреймворк прочно ассоциируется со стартапами. Это связано с тем, что RoR позволяет быстрее завершить процесс разработки. Одни говорят, что в среднем скорость разработки выше на 30-40%. Эти цифры ничем не подкреплены, так как скорость завершения процесса разработки зависит от слишком многих факторов. Однако трудно не согласиться с тем, что Ruby on Rails быстрее. Все потому, что этот фреймворк имеет большое количество плагинов и модулей, что позволяет разработчикам сократить время написания кода и использовать больше готовых решений.

Снижение доходов

И опять же, стоимость разработки приложения зависит от многих факторов, вы это понимаете. Однако Ruby on Rails качественно отличается от многих других фреймворков тем, что распространяется абсолютно бесплатно по лицензии MIT. Этот фреймворк имеет большое и активное сообщество, которое постоянно публикует новые решения на GitHub. Это может значительно сократить время разработки и, тем самым, сэкономить больше ресурсов.

Масштабируемость и безопасность

По поводу масштабируемости Ruby on Rails ведется много споров, но специалисты уверены, что этот фреймворк действительно превосходит в этом вопросе многие другие. Что касается безопасности, то в период с 2012 по 2013 год эта среда разработки столкнулась с множеством проблем с безопасностью. Ввиду этого сообщество пришло к выводу, что этому вопросу следует уделять большое внимание, и теперь аудит безопасности Ruby on Rails проводится ежегодно. В своем стремлении поклонники фреймворка превратили RoR в одну из самых безопасных сред разработки в мире.

Сочетание Ruby on Rails и Crystal для проектов с архитектурой на основе микросервисов

Мы уже говорили, что Crystal изначально был написан на Ruby, поэтому их структура и синтаксис достаточно близки друг другу. Хотя в некоторых случаях Crystal работает лучше с точки зрения проверки времени компиляции и производительности проекта, мы комбинируем микросервисы, написанные на Ruby, с микросервисами, основанными на Crystal, если это может принести пользу проекту.

Огромное сообщество

Благодаря тому, что этот фреймворк бесплатный, с открытым исходным кодом и универсальный, у него очень большое и дружелюбное сообщество. Более 318 000 вопросов на StackOverflow и более 77 000 коммитов на GitHub — вы всегда получите поддержку и консультацию.

Индивидуальная разработка программного обеспечения RoR

Говоря об универсальности RoR, не стоит начинать воспринимать этот фреймворк как конструктор сайтов с набором популярных модулей. Нет, все гораздо глубже, и Ruby on Rails позволяет осуществлять действительно заказную разработку ПО, ориентированную на узкую и конкретную аудиторию. Это достигается не только за счет большого разнообразия решений, но и за счет того, что сам фреймворк очень гибкий и может быть настроен под нужды любой компании или человека.

Веб-решения RoR


Одной из причин, по которой Ruby on Rails является отличным выбором для веб-разработки, является мощное и быстрое прототипирование. Это ключевая функция для стартапов и молодых предприятий, поскольку они могут быстро создать работающий прототип (например, для показа инвесторам или первым пользователям) и продолжить работу над продуктом.

Используя Ruby on Rails, вы не ограничиваете себя. Вы можете создавать все, что угодно, будь то веб-приложения, сегмент электронной коммерции, динамические веб-сайты и многое другое. В качестве примеров популярных сайтов, созданных на RoR, можно привести GitHub и Twitch.


Обширное сообщество и универсальность делают этот фреймворк одним из самых популярных вариантов для веб-разработки.

Мобильная разработка

Мобильная разработка на Ruby on Rails — деликатный момент. С одной стороны, этот фреймворк позволяет разработать отличную back-end часть мобильного приложения. Что касается работы над фронтендом, то лучше использовать более применимые и специализированные решения, такие как React Native.


Однако RubyMotion IDE создавалась именно для разработки кроссплатформенных нативных приложений на iOS, Android и OS X. И в данной ситуации это будет лучший выбор, так как RubyMotion тоже написан на Ruby (а также на Java и Objective С). RubyMotion также имеет инструменты тестирования и отладки, что делает его лучшим вариантом для разработчиков Ruby.

Наши услуги Ruby On Rails

Пришло время рассказать подробнее о нашем личном опыте разработки на Ruby on Rails. Как мы упоминали выше, за годы работы нам удалось завершить и запустить более 138 проектов. О некоторых из них и о нашем опыте в целом мы поговорим ниже.

Выше мы упоминали, что Ruby on Rails отлично подходит для стартапов благодаря своей универсальности и быстрому прототипированию. В нашем опыте также есть примеры успешного сотрудничества со стартапами. 

Olivegrey.ru - магазин дизайнерской женской одежды. Помимо Ruby и Ruby on Rails, при разработке сайта также использовались такие технологии, как JS и Linux.

Optimize Player — универсальная платформа для видеомаркетинга, являющаяся одним из основных направлений в современные PR-стратегии. Разработанный и созданный нами с нуля, сайт позволяет маркетологам не только создавать видеоролики, повышающие конверсию лидов, но и заниматься всем, что связано с защитой их контента и обработкой отзывов пользователей.

Twin Solutions также имеет опыт модернизации бизнеса. Такие проекты включают в себя различные задачи, от модернизации бизнес-процессов до внедрения полноценных CRM-систем (о них мы поговорим позже).

FTO — бизнес-консалтинговая компания с более чем 16-летним опытом работы. За это время компания занималась внедрением информационных систем в бизнес на базе платформы 1С. Twin Solutions разработал сервер для FTO и внедрил плагины Redmine, расширив их функциональность. Улучшена работа с тегами и добавлена возможность всем пользователям, даже не имеющим прав администратора, управлять тегами. В целом все операции Redmine были оптимизированы за счет добавления таких функций, как предварительный просмотр загружаемых документов любого формата и создание отчетов по соответствующим параметрам и шаблонам.

 

Мы в Twin Solutions прекрасно понимаем, что работа не заканчивается после успешного запуска приложения Ruby on Rails. Поддержание корректной работы приложения подразумевает своевременное реагирование на все возникающие проблемы. Наша компания имеет опыт решения подобных вопросов. Мы используем отдельную панель управления для регистрации всех запросов через систему продажи билетов. Это позволяет нам структурировать процесс поддержки приложений и вовремя реагировать на свежие вызовы, расставляя их в соответствии с их приоритетом. Вторым основным правилом, принятым нашей компанией для поддержания работоспособности приложений, является постоянное обновление программного обеспечения Ruby on Rails. Из-за того, что этот фреймворк с открытым исходным кодом, исправления и исправления ошибок приходят довольно часто. Поэтому для поддержки приложения очень важно вовремя обновлять программное обеспечение. Создание дорожной карты продукта с постоянными изменениями на основе отзывов клиентов завершает список основных направлений, которые используются в Twin Solutions для поддержки качественной работы приложений.

Что касается обеспечения качества, мы понимаем, что ручное тестирование — это древняя история. Вот почему в Twinslash есть специалисты по обеспечению качества, которые работают над созданием кода для внедрения автоматизированного тестирования.

тот сегмент — огромная часть опыта Twinslash. Из множества работ, выполненных в этой области, можно вспомнить: - OpenBasket - площадка для заказа качественных и полезных продуктов по оптовым ценам. - Boomkat — онлайн-платформа из Манчестера, продающая виниловые пластинки и имеющая потребителей из более чем 100 стран мира. - Nimbus Health - немецкий сайт по продаже медицинского каннабиса врачам и фармацевтам. И более.

Также мы можем гордиться несколькими проектами в сфере логистики: Drive Sense — приложение, созданное Twinslash для американской компании Esurance. Это приложение представляет собой систему управления парком автомобилей. Drive Sense занимается всем, что связано со страхованием имущества организаций и граждан. С помощью приложения вы можете отслеживать скорость автомобиля, выбранный им маршрут, возможные нарушения правил дорожного движения и детали местонахождения. Управление автопарком — почти идентичное приложение, за редким исключением.

Мы в Twinslash понимаем важность оптимизации документооборота и управления клиентами. Поэтому наша компания занимается усовершенствованием готовых бесплатных CRM-систем, а также созданием и внедрением совершенно новых решений на Ruby on Rails. Мы не будем останавливаться на улучшении бесплатных систем. А вот разработка нестандартных решений с использованием RoR — это интересно. Этот метод имеет ряд преимуществ, связанных с сущностью самого фреймворка. CRM-системы, созданные на Ruby и Rails, чрезвычайно индивидуальны благодаря гибкости фреймворка. Это позволяет добавлять в систему необычные решения. О скорости работы на Ruby on Rails мы уже говорили, а также это будет полезно при создании CRM-систем. Помимо того, что результат можно получить достаточно быстро, фреймворк также позволяет оперативно вносить любые коррективы, не рискуя безопасностью вашей базы данных (что происходит, используя более тяжелые языки кода, вроде Java).

Эта область помогает компаниям, у которых нет собственных технических директоров или которые не могут их нанять. CTO как услуга — это вид отношений, когда компания-клиент делегирует задачи, обычно выполняемые CTO, другой компании. Во всех остальных процессах вы работаете с техническим директором, поскольку он является частью вашей внутренней команды. В качестве примера мы можем познакомить вас с ISP Telecom. Эта платформа предоставляет телекоммуникационные услуги (TPP). Twinslash полностью взял на себя обязанности управления CTO, создав системы обеспечения и биллинга для компании, внедрив встроенный интерфейс AS2 (LNP, WLNP, BLIF), управляя интеграцией, совместимостью и тестированием совместимости между ISPT и Bell, Telus, Rogers и Videotron.

Вопросы безопасности — одна из главных проблем цифровой индустрии. В ситуации, когда подавляющее большинство транзакций и процессов происходит онлайн, было бы глупо ожидать, что этим никто не воспользуется. Поэтому важность безопасности веб-сайта или приложения трудно переоценить. Именно поэтому Twinslash предоставляет своим клиентам услуги аудита безопасности. В целом этот процесс включает в себя большой объем работы по разным направлениям, включая оценку политики безопасности, проверку системы на наличие новых проблем, аудит базы данных и кода, создание искусственной нагрузки на сайт/приложение и так далее. На данный момент наша компания занимается аудитом безопасности двух новых криптобирж — Hermesus (рынок США) и Hobit (мировой рынок). Как известно, вопрос безопасности в криптоиндустрии является важнейшей сферой. Twinslash создает механизмы для обеспечения безопасности персональных данных клиентов биржи, в том числе их платежных данных, криптокошельков и так далее.

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

В этом разделе речь идет о разработке высоконагруженных систем, которые должны справляться с огромным количеством пользователей и постоянно обновляемыми данными. В качестве примера работы в этом направлении можно привести: Dynamic Network Administration — платформа, которая в режиме реального времени собирает и обрабатывает огромное количество данных с различных устройств, включая телефоны и модемы. Разработанная нами система позволяет нашим клиентам отслеживать любые изменения и количество передаваемой информации за выбранный период времени. Эта система была создана для нескольких крупных американских компаний с использованием корпоративных тарифов международной телекоммуникационной компании Sprint.

Работа над архитектурой вашего будущего проекта требует внимания архитекторов программного обеспечения или старших разработчиков, поскольку это может повлиять на рост проекта, общее время реализации, а также на сложность его обслуживания. Благодаря опыту нашей команды, создавшему 135 проектов для 14 отраслей, мы можем избежать большинства архитектурных ошибок, некоторые из которых мы узнали сами.

Еще одна область, представляющая для нас большой интерес, поскольку мы верим, что будущее за онлайн-обучением. Наша компания имела возможность участвовать в разработке платформ в этом сегменте, например: 3ears - сайт, посвященный изучению русского языка. Особенность подхода в том, что на этом ресурсе в видеоуроках используются транскрипции в стиле караоке. Таким образом, изучение языка становится более интерактивным — пользователи слушают и запоминают произношение новых слов.

Соединение между двумя или более приложениями через их API, которое позволяет этим системам обмениваться данными. Интеграция API поддерживает процессы во многих высокоэффективных компаниях, которые синхронизируют данные, повышают производительность и увеличивают прибыль. У нас есть опыт интеграции сторонних систем, таких как платежные шлюзы, CRM или средства отслеживания задач, с использованием их существующего API с приложениями, которые мы создаем. В то же время мы создали API для тех проектов, которые могут нуждаться в интеграции с другими системами, например, API для систем отслеживания логистики для дальнейшей интеграции с различными ERP-решениями.

Решения для программирования на языке Crystal

Crystal — это объектно-ориентированный язык программирования, представленный публике в 2014 году. Первые версии этого языка были написаны на Ruby, но затем были переписаны на Crystal, сделав этот язык самостоятельным. Именно поэтому их синтаксисы имеют много общего, поэтому Twin Solutions решили выделить отдельную команду разработчиков для проектов Crystal.

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


Crystal — новый язык программирования, взявший все лучшее от Ruby, C и C++. У него уже есть мощные фреймворки для веб-разработки, которые используются для максимизации производительности продуктов.

Проект Crystal от нас

Так как это направление в нашей компании совершенно новое, то реализованных проектов пока нет. Впрочем, нам еще есть что показать.


Наши разработчики только начинают свой путь к Crystal, но уже успели создать отладчик для языка. Его основная функция позволяет отладчику LLDB отображать переменные Crystal в более знакомом и обычном стиле C-lang.


На этот момент мы обратили внимание, потому что поддержка отладки была не слишком развита. На форумах слишком мало информации. Другим решением было бы использование GDB (GNU Debugger), но, к сожалению, оно не работает должным образом на MacOS.

Почему наши продукты разработаны на Ruby on Rails и Crystal?

Мы хотели бы кратко объяснить, почему мы выбрали эти технологии в качестве нашего основного направления.

Положитесь на быструю и экономичную разработку

Ruby on Rails был создан разработчиками для разработчиков. Поэтому в данном фреймворке учтено большое количество самых частых пожеланий специалистов отрасли. Архитектура MVC (модель, представление, контроллер) превращает RoR в простую структуру на основе базы данных, которая наиболее подходит для стартапов и разработки MVP.


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

Лучшее качество кода

Код RoR максимально оптимизирован, эффективен и прост для понимания. Существует большое количество библиотек, которые используются для обеспечения качества кода Ruby on Rails. Кроме того, в этом фреймворке также есть множество анализаторов кода, выполняющих различные тесты — от стилизации кода до его безопасности. Среди таких анализаторов Reek, RuboCop и Flay.

Процессы автоматизации обеспечения качества

Пожалуй, нет более приспособленного для автоматического тестирования фреймворка, чем Ruby on Rails. Дело в том, что есть большое количество драгоценных камней, если на то пошло.


Можно вспомнить Capybara, которая автоматически делает скриншот при каждой ошибке в заданном тестовом скрипте.


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


Database Cleaner — еще один драгоценный камень, который автоматически очищает вашу базу данных, чтобы вам было проще проводить тестирование.


И более. Сообщество разработчиков постоянно работает над созданием новых решений, в том числе в вопросе автоматизированного тестирования.

Простое управление инфраструктурой и быстрое развертывание

RoR позволяет нам использовать инфраструктуру управления облачной инфраструктурой, например Chef. Он также написан на Ruby, и с его помощью можно осуществлять полное управление инфраструктурой с помощью небольшого набора команд. Любое действие - создание новых папок, объединение их в структуры, изменение статуса всей структуры и так далее. Как и в примерах выше, в этом выпуске Ruby on Rails вновь демонстрирует наличие готовых решений для самых насущных проблем.


Развертывание на RoR также происходит быстро благодаря таким решениям, как Heroku или Capistrano.

Программное обеспечение, созданное для масштабирования

Масштабируемость приложения указывает на способность продукта выдерживать гораздо более высокие нагрузки. И в этом плане софт, построенный на RoR, легко масштабируется как по горизонтали, так и по вертикали. Помните, что Twitter был создан на Ruby on Rails (хотя в будущем, с таким невероятным увеличением количества запросов в секунду, Twitter пришлось перенести часть своего кода). В любом случае Ruby on Rails покрывает 99% потребностей, если только вы не собираетесь создавать новый Twitter или Facebook и справляться с таким огромным количеством запросов.

Упреждающее предотвращение уязвимостей в коде / Практика безопасного кодирования

Мы уже говорили выше о безопасности кода Ruby on Rails. Сообщество постоянно работает над обеспечением защиты от новых проблем, но, конечно же, нет такого решения, которое защитило бы код от всех возможных проблем.


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