We all want to reduce toil and improve the developer experience (when starting new applications or joining the team). Developers have had to invest significant time in creating production-ready pipelines when building new products and configuring their workstations when joining teams. Their workstations may not run all the same tests as their pipeline and thus they’re left with #slowfeedback and an inconsistent experience.
The larger the organization (ie Enterprise with 10’s-100’s of teams and applications) the worse the problem gets.
GSD is built on the principle of reusability through a pattern called 3 Musketeers (test, build, and deploy your apps from anywhere, the same way). It gives consistency, control, and confidence to development teams.
Docker is a key part of this pattern, but the use of docker
, docker-compose
and make
together really unlock the powers of consistency, control and confidence in your application build, test and deploy steps. The 3musketeers Docs have some great examples of these patterns.
Here's what the most simple usage looks like:
While the pattern itself is simple, the power (and benefit) comes from the widespread usage across your organization. Here’s what usage might look like:
- Agree on a standard interface for all pipeline actions (much like API’s have an agreed interface, all pipelines in the org use the same interface, ie
make build\
,make test\
,make deploy\
) - Keep the interface simple (avoid custom pipeline logic, one simple Makefile calls Compose, the container handles all the logic)
- Create docker containers for each pipeline step, make them stateless, reuse them where it makes sense
Wins: Modern pipelines already support running steps in docker containers. This pattern extends portability across almost any pipeline tool or development workstation and runs the same way in every single environment. Pipeline steps can be tested independently and reused. This pattern makes it easy to go one step further and generate pipelines on-demand based on boilerplate starter templates. Oh yeah, and #fastfeedback (we’re talking pre-commit).
Also posted on medium as 3 Musketeers for an epic Developer Experience.
Top comments (0)