Свободный взгляд на информацию: Архитектура
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Предыдущий топик: Начало
Вот и пришло время немного углубиться в технические подробности и рассказать как же все таки работает машина фильтрации под названием свободный взгляд на информацию.
Начну по порядку. Наверное самое важное для построения масштабируемой системы — это сервера, back-end. На данном этапе разработки приложение состоит из ряда серверов:
api.freelook.info — данный сервер приложения предоставляет централизованный доступ к провайдерам информации, является по сути набором веб методов для фильтрации контента по ресурсам. Программный код написан на node js. За основу взят модуль express, и вспомогательные модули на java и python. Расположен на сервисе heroku в США, Эшбурн.
prerender.freelook.info — данный сервер приложения собирает контент с динамических ресурсов, преобразуя его в статический html. Построен так же на node js. В основу положен модуль phantomjs, который эмулирует браузер в консоли. Расположен на сервисе heroku в Ирландии, Дублин.
parse.freelook.info — данный сервер приложения собирает и хранит данные системы. Опять же все на node js в связке с mongodb по капотом. Сейчас расположен на сервисе parse в США, Эшбурн.
about.freelook.info — по сути является визиткой и гидом по приложению. Построен полностью на php. В основе лежит WordPress. Расположен на сервисе ukraine в США, Пасадена.
freelook.info — сердце системы, которое находится в Украине, Киев. Отвечает практически за всю маршрутизацию приложения и отдачу статики. В основу, после большого числа экспериментов, был взят nginx. Работает это все под управлением Ubuntu server 14.04. Так же настроены вспомогательные cron процессы, которые дирижируют системой по расписанию. Дирижерской палочкой же является модуль для node js под названием pm2. Он позволяет следить за всей системой, перегружать сервера и уведомлять о проблемах в реальном времени. Выглядит это примерно так:
Немаловажной частью, для дальнейшего развития, является использование непрерывной интеграции и системы контроля версий. Сейчас процесс разработки построен на git. На мой взгляд, программный код, как и информация, должен быть свободным. Поэтому все исходные коды находятся в общем доступе на github репозитории.
Для continuous integration был взят Travis CI, который с помощью gulp тасок собирает и проверяет приложение. Для проверки используется unit тестирование — karma + jasmine, e2e тестирование — protractor, а так же репортеры jshint, Plato, Istanbul.
Это то, что вкратце касается сборки и хранения системы.
На десерт, хотелось бы рассказать о front-end. Сама клиентская часть приложения по сути является гибридной. Это значит, что один и тот же исходный код умеет работать на разных платформах. Сейчас таковыми являются браузер, chrome приложение, android приложение. За основу взяты angular + material, которые активно развиваются и тем самым помогают приложению стать лучше. Верстка не самая сильная моя сторона, поэтому материал дизайн стал просто волшебной палочкой. Так же на клиенте используются ряд вспомогательных библиотек, таких как socket.io — поддержка сокет соединения с сервером, font awesome — красивые значки, Google analytics и тд. Управляет всем этим делом npm и bower. Что касается мобильного приложения, то эта задача лежит полностью на cordova и phonegap build.
На закуску немного статистики и аналитики, которая накопилась за последнее время:
Надеюсь данный стек технологий и инструментов может быть полезен кому-то при создании своей системы. Не стесняйтесь, оставляйте свои отзывы, идеи и инструменты разработки. Будем на связи.
Следующий топик: Мастерская javascript full stack
13 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів