Continuous Integration and Continuous Delivery.
Software development in the bad old days was something like this: imagine a commercial kitchen, with a heap of pots on the stove, all cooking away. This kitchen is particularly poorly run, and there’s no system in place as to who is cooking what, and when.
Chefs are running all over the place, from pot to pot, with no idea whether all the ingredients have been added, whether it’s finished cooking, or which chef was previously working on it.
A chef gets assigned to work on a pot. Sometimes he can see that something is missing, and add the right ingredients, but other times he has no idea what’s going on, he’s never even seen the recipe before. He runs about the kitchen asking if anyone knows what’s going on with this pot, but that’s distracting the other chefs from their pots - and they have their own problems, as they don’t know what’s going on with theirs either!
Every time a chef makes even the slightest change to a pot, he needs to taste test all of the ingredients all over again, to make sure all of them are right.
When it comes time to plate up and present the dish for the customer, the last chef that used the pot has to assemble the dish himself, one by one, even though he doesn’t know where any of the other components in the kitchen are, or what the overall dish is meant to look like - or even if some other chef has already given the customer their dish!
It’s a clunky analogy, but it makes sense - this is what trying to develop software without a CI & CD platform is like. It works if there’s just one “chef” that does everything, but as soon as there’s more than one person, you need a process in place, or it all falls apart.
This is why it is so critical for us to be able to deliver a quality product that we have a complete and integrated, end-to-end CI & CD system. Here at Assembler, each of our chefs knows exactly what pots are on the stove, exactly what stage each recipe is at, and best of all, there’s an automated system that assembles the dishes for plating, so it comes out perfectly, every single time!
To do this, we use a series of software tools to build our “DevOps” chain. We’re very open about how we have achieved this - anyone who’s looking for advice, feel free to ask!
- PHPStorm - this is a “text editor for programmers”, that comes with a whole bunch of tools built in to it to make life easier for software developers, and it also integrates deeply with the other members of the DevOps toolset.
- GitHub - this is an online code repository that lets us track exactly what programmer did what, and when. It ensures that there’s no conflicts between anyone’s code, and it makes sure that we always keep an historical record of everything that’s ever been written, ever. GitHub forms the “glue” in the middle of our DevOps chain, and without it, it would be impossible.
- Codeship - this is an online tool that does three things: it “builds” the software, gathering all of its requirements together and assembling it in the one place. It “tests” the software, making sure that it is correct and working as expected, and then it “deploys” the software, updating the client’s website in a reliable, repeatable, controllable fashion, with no physical interaction by anyone required. If the build or the tests fail, it doesn’t deploy!
- AWS - we use Amazon Web Services for hosting our sites. Their highly API-driven infrastructure management tools means we can configure a server environment for our customers dynamically, with code, as part of the deployment process.
These tools form the core of our DevOps chain, and they all work together in unison to ensure that we know EXACTLY what is going on at any given time, across any given developer, working on any given project. The bad old days of developers uploading websites by FTP are unfortunately still in effect in many smaller dev shops; here at Assembler though, you get the full benefit of our years of experience at the big end of the market, and it’s things like our complete CI & CD chain that set us apart from so many of the smaller shops out there.
If you’d like to find out more on how this benefits you as the customer, don’t hesitate to get in touch!