Открытое ПО и Twitter

16 мая 2014 Выкл. Автор Владимир Андросов

company-1Предполагаю, не вызовет большого изумления тот факт, что тысячи серверов Twitter работают под управлением GNU/Linux. Правда, специальным взносом в становление непринужденно ядра Linux либо низкоуровневых библиотек компания похвастаться пока не может – ее интересы лежат в несколько иной области.

Так, для хранения данных компания использует MySQL, а вернее – личный форк, начальный код которого доступен в открытом доступе. В открытом доступе находится и Twemcache – переработанный вариант инструментария кэширования данных Memcached, сопровождаемый утилитами подобно измерителя продуктивности twemperf и прокси twemproxy. Есть и прототип собственной реализации заказчика и сервера Memcached на языке Scala-schmemcached.

В компании энергично применяют наработки плана фонда Apache: библиотеку полнотекстового поиска Lucene, фреймворк для разработки и выполнения распределённых программ Hadoop, распределенную СУБД Cassandra и другие продукты.

Для Cassandra в Twitter разработали свой заказчик Cassie на языке Scala. Для применения в Hadoop поддерживается hadoop-lzo (распараллеливаемая реализацию сжатия по алгорифму LZO), система генерации индексов Elephant-twin, а также scalding и pycascading – библиотеки-обертки (на Scala и Python соответственно) к Cascading – слою промежуточного ПО поверх Hadoop, предуготовленного для выполнения трудных задач по обзору данных без погружения в заросли MapReduce.

Полезна и утилита hdfs-du, занимающаяся визуализацией применения HDFS (Hadoop Distributed File System) – распределённой файловой системы, применяемой в Hadoop. Наконец, небезынтересным продуктом является Ambrose – платформа для визуализации и мониторинга потоков данных в MapReduce.

В процессе разработки ПО в Twitter используются системы контроля версий Subversion и Git, инструментарий постоянной интеграции Jenkins, IDE Eclipse и прочие вестимые программы и утилиты. К слову, разработка (во каждом случае, видимая ее часть) ведется на С/ C++, Objective-C, Java, JavaScript, Python и Ruby, но самое пристальное внимание уделяется Scala – схожему с Java языку программирования, программы на котором могут компилироваться в байт-код Java либо .NET.

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