Deploying software is like opening a new bakery 🧁
Tags: beginners, codenewbie, coding, programming
Published: 2023-08-05 20:42:00

What the hell is a deployment? That's what my wife asked me when she came across this word on her beginner's IT course. 

I was honestly stumped. 

Software development is full of jargon. As I have spent years working in this field I have developed a habit of collecting the jargon and using it as shortcuts to communicate ideas. 

But only when she asked me this question that I realised how confusing it can be for a newcomer to understand the dense language of software development.

Words like deployment, production, DevOps, CI/CD pipelines are powerful in communicating broad ideas, but are very hard to understand if you've never seen them in practice. For this reason, we must take a moment to bring back simplicity to how we explain and communicate. 

This was my attempt to explain software deployment. I have obviously over-simplified some aspects, but the goal was to introduce the concept in an approachable way.

![What is a deployment? What is software deployment?](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w9wt0lrtnw71lj6i7j67.png)

Imagine you're an aspiring baker with a passion for creating mouthwatering treats. You've spent weeks perfecting your recipes for delicious bakery items like cakes, cookies, and pastries. Now, it's time to open your bakery and share your creations with the world. Here's how the bakery setup process aligns with software deployment:

1. **Bakery Items (Software)**: Just like you've prepared a variety of bakery items, in software development, you've written code to create different software applications or services that serve specific purposes. However is not always the case that software is the product, sometimes software is what enables you to sell your product. 

2. **Recipe Testing (Testing)**: Before your bakery's grand opening, you meticulously test each recipe to ensure the taste, texture, and presentation are just right. Similarly, during software development, developers rigorously test the software to identify and fix any bugs or issues. You might seek opinion of your family or friends to know if your pastries taste good, likewise a software is shared with a select group of people to understand if it meets their needs.

3. **Bakery Equipment (Infrastructure)**: You invest in essential bakery equipment like ovens, mixers, and cutlery to help you prepare your delectable treats. Similarly, in software development, you set up a server or cloud infrastructure with the necessary hardware and software to run your applications. A server is just a computer in a data center that runs your software and makes it accessible over the internet.

4. **Bakery Display (Packaging)**: In your bakery, you beautifully present your treats on shelves and displays, making them inviting for customers. Likewise, in software deployment, you package your application along with its required files and dependencies, ready to be showcased in the production environment. Software applications are usually developed on top other foundational software. Hence packaging them all to work together is essential, just like how you'd arrange a bakery with all its moving parts.

5. **Grand Bakery Opening (Deployment)**: Finally, the big day arrives! You open the doors of your bakery to the public, inviting them to taste and enjoy your delightful creations. Similarly, when deploying software, you make the applications available to users, allowing them to access and benefit from their features. You would hear terms like "Going Live", "Launching" or "Going to production.". It is the digital equivalent of putting an "Open" sign on your bakery.

6. **Customer Experience (Monitoring)**: As customers visit your bakery, you ensure they have a delightful experience by maintaining a clean and inviting atmosphere and offering excellent customer service. In the software realm, you monitor the application's performance, ensuring it runs smoothly and efficiently for users.

7. **Feedback and Improvements (Updates)**: You listen to customer feedback to understand what they love about your treats and where improvements can be made. Similarly, in software development, developers gather user feedback to make updates and enhancements, improving the software's functionality and user experience.

Just as successfully “deploying” your bakery brings joy to customers who relish your delicious treats, smooth software deployment enables users to access and enjoy your applications, helping them in various ways.

And remember, just like a bakery requires ongoing attention and innovation to keep customers coming back for more, software applications also need regular monitoring and updates to maintain their reliability and user satisfaction.

Cover Photo by [Michał Parzuchowski](https://unsplash.com/@mparzuchowski?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/pMsvOrnIF3Y?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)