Už delší dobou si pohrávám s myšlenkou vývoje aplikací Unixovou metodou, kdy jeden funkcni celek se sestavi pospojovanim mensich aplikaci.
Ano, tohle je správná cesta, kterou taky jdu (byť to samozřejmě není univerzální, jsou případy, kdy je lepší monolit nebo jeden jazyk a OOP).
Ale nepředstavuj si to tak, že postavíš velký systém na tom, že pomocí rour pospojuješ jednotlivé příkazy, mezi nimi textové proudy a slepíš to BASHem.
Něco z toho pojede přes unixové sokety, něco přes TCP, pak tu máš technologie jako D-Bus… Zapomeň na to, že si vystačíš s parametry příkazů, protože to je jen pole textových řetězců – na předávání složitějších datových struktur/stromů je to nedostatečné.
Potřebuješ společný jazyk, ve kterém si budeš předávat datové struktury/zprávy – to může být XML, ASN.1, nějaký binární formát… důležité je, aby to mělo schéma a umožnilo ti to verzovat toto API a umělo to generovat struktury a mapování v různých jazycích (ve kterých budeš psát ty moduly), jinak se z toho zblázníš a nebudeš dělat nic jiného než psát serializace/deserializace a mapování a divit se, proč na sebe API nepasují.
A pak potřebuješ nějaký framework, který to bude řídit – umožní nastartovat moduly ve správném pořadí, pospojovat je, umožní vstupovat do jejich komunikace, usnadní ti ladění a vývoj. Nebo takové věci jako upgrade za chodu – chceš aby rozpracované transakce dojely se starou verzí modulů a nové zprávy se už směřovaly do nových verzí příslušných modulů.
V podstatě potřebuješ něco jako ESB, BPEL a WSDL, ale v odlehčenější/nízkoúrovňovější variantě.
V krátkodobém horizontu je to pracnější způsob vývoje – v dlouhodobém se projeví přínosy, větší flexibilita, modularita, efektivnější vývoj, spolehlivější komponenty, tlak na kvalitu, testování… líbí se mi na tom možnost používat různé jazyky, možnost rozložit program na více počítačů na síti, dobře specifikované API.