vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2012-10-18 08:43 am

Плюсы C++

Тут сегодня в debian-russian кто-то высказался, что де у C++ есть плюсы и минусы. Минусов больше.
Не могу не согласиться. Я знаю целых два плюса C++. Оба - в названии.

[identity profile] mithraen.livejournal.com 2012-10-18 01:49 pm (UTC)(link)
Ну, это почти разногласия, ибо частично я с вами согласен:

По CGI vs FastCGI

1. Противопоставление CGI и FastCGI не совсем корректно, ибо это совершенно разные протоколы для разных целей:
- cgi предназначен для запуска отдельных скриптов
- fastcgi это протокол взаимодействия http-сервера с application server'ом (который, в свою очередь, например запускает скрипты)

2. Самое частое применение fastcgi сейчас -- для замены mod_php. В этом случае php5-fpm играет роль application server'а, который запускает много разных PHP скриптов.

3. Применение такого application server'а оправдано при использовании PHP (да, я в курсе, что использование PHP само по себе обычно неоправдано), так как он в состоянии кэшировать, например, результат парсинга скрипта (у которого может быть стотыщ include).

4. Подход, когда приложение запускающее какой-либо код, и приложение контактирующее со внешним миром соединены друг с другом исключительно через tcp или unix sockets я считаю более правильным, нежели комбайны.

По поводу C/C++:

Полностью согласен, за исключением одного -- даже когда C еще тянет, использование некоторых возможностей C++ может быть оправдано. В первую очередь, как я уже говорил, ради RAII и более удобных способов создания специфических структур хранения данных в памяти.

[identity profile] mithraen.livejournal.com 2012-10-18 05:23 pm (UTC)(link)
1. Задача web-сервера -- быстро раздавать файлики, которые он получил либо с диска, либо откуда-то еще.

Задача AS -- исполнять код. Который, во многих случаях, может быть написан либо далеко не хакерами, либо хакерами (в плохом смысле этого слова).

В случае с виртуальным хостингом это очень существенно.

А особенно интересное начинается в тех случаях, когда не просто один IP-адрес, а один домен обслуживается несколькими командами разработчиков. В том числе -- сторонних. Вполне логично изолировать их друг от друга.

2. Собственно раздача файликов, если пользоваться nginx, упирается только в диски, память для кэша, и сеть. Поэтому если у нас всего лишь 1 гигабитный линк, то нам достаточно максимум двух web-серверов (frontend), в HA-кластере.

А вот уже то, что за ними может иметь любую нетривиальную структуру.

Использование web-сервера, выполняющего одновременно функции application server потребует установки отдельного балансировщика. И, если мы делаем так, то... в итоге мы получаем тоже самое, разве что статика отдается не frontend'ом а backend'ами, а в остальном backend'ы и становятся теми самыми application server'ами, только взаимодействую с frontend'ом по HTTP а не через FastCGI.

Итог -- без FastCGI обойтись можно, а вот без applicatino server'а на больших инсталляциях -- не очень.

[identity profile] mithraen.livejournal.com 2012-10-18 05:33 pm (UTC)(link)
Эта сущность нужна чтобы транслировать понятия конфигурации (url -> executable), и заодно протоколы.

Может мы о разных вещах? AS в том виде, как они есть в Java мире обычно не нужны.
AS в стиле какого-нибудь php5-fpm нужны, если нам нужно запускать PHP-код относительно быстро, удобно и безопасно (насколько это возможно для PHP-кода).

А добавив мысль из предыдущего обсуждения -- вот есть люди, которые web-сервисы пытаются на erlang делать. Им тоже следует использовать CGI? Там как раз архитектура получается ну очень похожа на то, что обычно делают жабакодеры.