Пушок Софвтаре и Сообщество

image
image
image
image
image
image
image
image

Мы активно используем программное обеспечение с открытым исходным кодом для реализации окончательных решений для наших клиентов. Это не способ сэкономить на чем-то, на самом деле некоторые коммерческие решения могут стоить меньше на первый взгляд. Это способ реализовать перспективный продукт, который гарантирует обслуживание в будущем. И, конечно, в настоящее время открытый исходный код также является ключевым решением для обеспечения безопасности (ну, при правильном использовании).

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

TingoDB / Tungus — встроенная база данных, совместимая с MongoDB.

TingoDB — это встроенная база данных JavaScript NoSql для Node.js и node-webkit. Его API и функции предназначены для обратной совместимости с MongoDB и ее драйвером для Node.js. Отнеситесь к этому серьезно. Это не просто вид API MongoDB только потому, что он использует тот же синтаксис запросов. Это точная копия, которая позволяет создавать приложения, которые могут прозрачно поддерживать как MongoDB, так и легковесные встроенные механизмы обработки данных. Можно даже использовать некоторые производные библиотеки, зависящие от MongoDB. Хорошим примером является ODM-библиотека Mongoose.js, которую можно подключить к TingoDB с помощью драйвера Tungus.

Safe (js) — библиотека для решения проблемы «адского обратного вызова» JavaScript.

Первоначально модуль был разработан, чтобы предоставить набор удобных функций для обработки выданных ошибок, обратных вызовов и передачи ошибок nodejs (первый аргумент функции). Цель состояла в том, чтобы сделать код более стабильным, читабельным и избежать некоторых рутинных вызовов. Идея основана на библиотеке Step, которая перехватывает возникающие ошибки и преобразует их в вызовы функций обратного вызова. Позже библиотека была расширена полным набором библиотеки Async(js), но с улучшениями скорости и безопасной (js) обработкой ошибок из коробки.

Tinelic — Легкое приложение для мониторинга производительности приложений, скорости работы для пользоватиля и ошибок.

Мы разработчики. Мы видим много преимуществ в использовании программного обеспечения для создания отчетов об ошибках и мониторинга приложений. Мы пробовали использовать множество инструментов, и ничего нас не удовлетворило. Мы пытались улучшить некоторые из них, но в итоге создали свои собственные. Все делают то же самое ;). Tinelic — это приложение Node.JS, которое работает как серверная часть для агентов приложений и отчетов об ошибках, а также как графический интерфейс. Чтобы упростить задачу, мы не занимались сложной обработкой данных и полностью полагались на масштабируемость MongoDB. Это дает нам гибкость и достаточную емкость для приложений среднего размера. Для сбора данных Tinelic использует следующие агенты:

  • Агент NewRelic APM (в настоящее время тестируется только агент Node.JS). Агент используется как есть и просто отправляет отчеты Tinelic вместо исходного сервера. Поддерживается производительность приложений и отчеты об ошибках.
  • Агент GetSentry (Raven.JS) для отчетов об ошибках браузера. Агент используется как есть и так же отчитывается перед Tinelic.
  • Агент GetSentry (Raven.NodeJS) для отчетов об ошибках на стороне сервера. Полезно, когда вам нужны только отчеты об ошибках.
  • Код Tinelic для мониторинга со стороны браузера конечного пользователя (Ajax и загрузка страницы)

TinyHook — облегченная библиотека очередей сообщений JavaScript

Библиотека создавалась с единственной целью - обеспечить надежную и легковесную распределенную реализацию EventEmitter. EventEmitter — это концептуальный интерфейс Node.JS для распространения событий. Надежность для нас означает, что приложение должно состоять из десятков процессов, запускающих хуки, и обрабатывать миллионы сообщений в день без проблем, высокой загрузки ЦП и большого потребления памяти.

TinyBatch(js) — безопасный способ выполнить последовательное извлечение данных на стороне сервера

Очень скоро задержка в сети может перестать быть проблемой. Однако на данный момент выполнение функций (вызовы REST) ​​страдает от задержки в сети. Это особенно важно, когда функции не могут выполняться параллельно и зависят друг от друга. Мы предприняли несколько попыток решить эту проблему, используя различные подходы, такие как предварительно утвержденные или подписанные сценарии, передаваемые с клиента на сервер. Или «гибкие» подходы к извлечению данных, такие как graphql (которые фактически привязаны к доступной реализации и более удобны для исследования, чем гибки). Или использование ограниченного сценария с использованием Lua или Lisp. Основная задача здесь состоит в том, чтобы обеспечить гибкую, но безопасную функциональность, которую также можно будет безопасно выполнять в контексте сервера с точки зрения использования ресурсов.