Макс

Родной город: Омск

Фото галерея: смотреть

Контакты: написать

О себе:

Интересы:

- программирование

- интернет

- психология

- менеджмент

- автоматизация

Погляди
Голосование

Нравиться ли вам блог

  Да
  Нет
  Я тут случайно

 

ГлавнаяКарта сайтаПечать страницы

WEB сервер рельно времени или сервер будущего



Не давно меня пригласили поработать программистом на пол года за рубежом на одну IT компанию на необычную должность - разработчик экспериментальных("идейных") прототипов.

Я согласился и полетел. С чего все началось: у начальника было много идей в области ИТ сферы, но проблема была одна - не было программистов, которые бы их реализовали. Ну как сказать программисты и разработчики были, но профессионалов с большим опытом и разносторонним мышлением было мало, и то все 100% были заняты, а идеи хотелось реализовать и посмотреть, что из них получиться. Для этого они наняли меня. И вот после полу года работы я решил написать статью об одной такой идеи.

Как то пришел шеф и сказал - "хочу сервер такой же как в VK.com, и даже лучше". Объяснил мне суть идеи, что сервер должен работать в реал-тайм режиме, должен масштабироваться горизонтально и вертикально, должен быть быстрым и легким, выдерживать высокие нагрузки.

После недельного обдумывания(много почитал и посмотрел на тематику HILoad систем) мне пришла концепция о которой я сейчас расскажу. На данную концепцию я создал экспериментальный прототип сервера и создал концепцию реал-тайм UI дизайна.

Был выбран Jаva NodeJS сервер т.к. он поддерживает постоянные соединения, статическую загрузку страниц, имеет много модулей (правда наткнулся на сыроватость модулей), много документации и примеров.

Я сделал три варианта сервера, каждый имеет плюсы и минусы.

Первый сервер

Плюсы:

- использование PHP позволяет легко и быстро начать разрабатывать интерфейс и обмен данных

- не зависит от NGINX, статику может отдавать любой сервер, можно NGINX вообще не использовать, а статику отдавать NodeJS

Минусы:

- JAVA модуль для NodeJS, который обрабатывает отдает данные PHP -FPM очень сырой и не стабильный. Я попробывал его переписать, добился более нормальной стабильности,  но все равно не уверен с степени изоляции и утечках памяти.

- использование PHP налагает увеличение потребления ресурсов ЦПУ и памяти

Второй сервер

Плюсы:

- использование PHP позволяет легко и быстро начать разрабатывать интерфейс и обмен данных

- высокая степень стабильности и интеграции

Минусы:

- зависит от NGINX, т.к. PHP-FPM в нему привязан

- использование PHP налагает увеличение потребления ресурсов ЦПУ и памяти

Третий сервер

Плюсы:

- минимальное использование ресурсов, т.к.  все API написано, на JAVA

- не зависит от NGINX, статику может отдавать любой сервер, можно NGINX вообще не использовать, а статику отдавать NodeJS

Минусы:

- тяжело найти нормальных разработчиков на Java 

- увеличивает время разработки и ее себестоимость

Выводы.

Мы выбрали вторую архитектуру сервера, т.к . у нее высокая степень изоляции от утечек,  высокая стабильность, легко найти программистов на PHP. Тем самым выбрал быстрый и не дорогой путь реализации асинхронного сервера с постоянным дуплексным соединением.

Для интерфейса использовался дизайн основанный на Boostrap 3 -ей версии, это позволило разрабатывать сайт который будет адаптивным к разным мобильным устройствам и мониторам.

Плюсы технологии:

1) Адаптивный дизайн под все мониторы и устройства

2) Скорость работы сайта  - за счет обработки и отправки только данных

3) Минимальное потребление трафика, ЦПУ и памяти сервера - по сравнению со стандартными сайтами и технологиями

4) Масштабируемый во всех направления, а так же есть возможность разделения сервера на группу серверов

5) Использование PHP и MYSQL дает возможность быстро начаться работу с сервером.

Минусы технологии 

1) Не подходит ни одна CMS, т.к. все современные CMS не поддерживают технологию постоянного соединения и обмена по нему данных

2) Требуются специалисты по внедрению сервера и обучению работы с ним других "классических" программистов

Какие знания понадобились: английский язык(в рунете мало новенького), HTML, CSS3, BootStrap, JQuery, JavaScript, Java, PHP, MySQL, MongoDB, NodeJS, зания и настройка Linux серверов, понимание асинхронности и многопоточности.

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

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



Дата публикации:03.08.2014