Custom Ink leverages open source tools and practices that unlock Day Zero Deployments for new engineers and frictionless development for our entire engineering organization! Here's how!
We leverage Strap at Custom Ink to ensure that our development machines have a minimal set of requirements for working on any of our 100+ production applications. Most of these are Ruby on Rails web services, with some notable exceptions in Node (with React), Python and Java.
Thanks to Strap, we can make some base assumptions about the environment, which sets us up for some major unlocks during application setup.
Scripts to Rule them all is "a set of boilerplate scripts describing the normalized script pattern that GitHub uses in its projects".
At Custom Ink we took these recommendations to heart and implemented them across nearly every project in our stack! We also added in our own
bin/workers for supporting background processes, but that's a topic for another blog post.
All of our projects are wired up to be continually tested for every pull request. This keeps our feedback cycle tight, and our confidence high that the changes we're making are safe.
We try to reuse Scripts to Rule Them All in our CI environments as much as possible, with most projects leveraging
bin/test as part of their continuous integration workflow. This unlocks a virtuous cycle where our local setup process also becomes continually tested!
So we have established base guarantees about the development environment, and applied the convention of Scripts to Rule Them All across all our applications. Because of this, we enjoy the benefit of a streamlined development setup process no matter which application, language, or framework we choose to write it in!
Our aptly named Rails Frontend is our primary e-commerce application which handles everything you see when you go to CustomInk.com. Here are the steps for a brand new engineer to get it up and running on their laptop:
bin/bootstrap– all local dependencies will be brought in via the
Brewfilefrom the repo, thanks to homebrew-bundle.
bin/setup– the application will set up any library dependencies, as well as the required databases.
bin/test– the application will have all tests passing right out of the box!
That's it. And the same process will work across every one of our hundreds of applications that are currently in production.
By leveraging some really great open source tooling (Thanks GitHub and Mike McQuaid!), we have a reliable and repeatable way for all of our engineers to get applications up running on their local environments with little to no friction.
This has been a huge win for our productivity and onboarding, and allows us to have a consistent developer experience across our entire organization. It often results in new engineers deploying a change into production on their first day!