Composer is a free and open source dependency manager for PHP. It allows the user to declare the libraries a project depends on and it will manage (install/update) them. it manages packages on a per-project basis, installing them in a directory (e.g. vendor) inside a project and by default, it does not install anything globally. Thus, it is a dependency manager.
N/A
Salt
Score 6.2 out of 10
N/A
Built on Python, Salt is an event-driven automation tool and framework to deploy, configure, and manage complex IT systems. Salt is used to automate common infrastructure administration tasks and ensure that all the components of infrastructure are operating in a consistent desired state.
I do highly recommend it whenever you have some PHP projects, especially if you need to have reusable modules that you want to share across teams. With a good branching an tagging strategy, you can go a long way in making your developers' life easier. They will only need to work on the modules that are of interest of them, and not have to touch the whole codebase.
Also, it's quite necessary if you are planning to use community PHP modules, as the vast majority of them is distributed, and versionned via packagist.org, and thus via composer.
SaltStack is a very well architected toolset and framework for reliably managing distributed systems' complexity at varied scale. If the diversity of kind or number of assets is low, or the dependencies are bounded and simple, it might be overkill. Realization that you need SaltStack might come in the form of other tools, scripts, or jobs whose code has become difficult, unreliable, or unmaintainable. Rather than a native from-scratch SaltStack design, be aware that SaltStack can be added on to tools like Docker or Chef and optionally factor those tools out or other tools into the mix.
Targeting is easy and yet extremely granular - I can target machines by name, role, operating system, init system, distro, regex, or any combination of the above.
Abstraction of OS, package manager and package details is far advanced beyond any other CRM I have seen. The ability to set one configuration for a package across multiple distros, and have it apply correctly no matter the distrospecific naming convention or package installation procedure, is amazing.
Abstraction of environments is similarly valuable - I can set a firewall rule to allow ssh from "management", and have that be defined as a specific IP range per dev, test, and prod.
We haven't had to spend a lot of time talking to support, and we've only had one issue, which, when dealing with other vendors is actually not that bad of an experience.
If you're familiar with npm or Yarn, you'll feel right at home with composer. The work in pretty much the same way. You can use a composer.json file in your repo to reference specific version of public community modules, and enterprise internal ones. You can also hook some scripts that you would want to execute, like for testing, building your code ...
We moved to SaltStack from Puppet about 3 years ago. Puppet just has too much of a learning curve and we inherited it from an old IT regime. We wanted something we could start fresh with. Our team has never looked back. SaltStack is so much easier for us to use and maintain.
We manage two complex highly available self-healing (all infrastructure and systems) environments using SaltStack. Only one person is needed to run SaltStack. That is a HUGE return on investment.
Building tooling on top of SaltStack has allowed us to share administrative abilities by role - e.g. employee X can deploy software Y. No need to call a sysadmin and etc.
Recovery from problems, or time to stand-up new systems is now counted in minutes (usually under eight) rather than hours. This is a strategic advantage for rolling out new services.