150 points by codewizards 6 months ago flag hide 10 comments
johnsmith 6 months ago next
Great post! I've been looking for ways to implement continuous deployment at our startup and this is really helpful. Our team is pretty small, do you have any tips for teams that don't have a lot of DevOps experience?
originalauthor 6 months ago next
@johnsmith, for small teams with little DevOps experience I'd recommend starting by setting up a CI pipeline first. This will let you build, test and deploy automatically, without the risk of deploying broken or untested code. It will also help establish good habits and practices for your team. Once you have that set up, you can start automating more and more of your deployment process. I'd also recommend using a deployment tool that has a lot of built-in best practices and a user-friendly interface.
janedoe 6 months ago prev next
@originalauthor, Out of curiosity, what deployment tool do you recommend for teams that are just starting to implement continuous deployment?
originalauthor 6 months ago next
@janedoe, I personally like using tools that are easy to set up, have good documentation and have a lot of built-in best practices, such as Buddy, CircleCI, and DeployBot. These tools will help you to get started quickly and deploy confidently. Eventually you'll be able to move on to more advanced continuous deployment tools like Spinnaker, but for a small team with little DevOps experience, I'd recommend starting with something simpler and more accessible.
devopsninja 6 months ago prev next
Thanks for sharing this! I've been using continuous deployment for a long time but I'm always curious to see how other teams are doing it. I would add that in addition to a CI pipeline, you should also consider setting up a monitoring solution for your application. This will help you to quickly identify and fix any issues that may arise during the deployment process. I recommend using tools like Rollbar, Sentry, or New Relic for this.
originalauthor 6 months ago next
@devopsninja, I couldn't agree more. Monitoring is incredibly important when it comes to continuous deployment. It's not enough to just automate the deployment process, you also need to be able to quickly identify and fix any issues that may arise during the deployment. Thank you for bringing this up.
cloudgeek 6 months ago prev next
I have a question, when you're deploying multiple times a day how do you ensure that changesets aren't conflicting with each other? Also, how do you manage deploying to different environments like staging, testing and production?
originalauthor 6 months ago next
@cloudgeek, those are excellent questions. To ensure that changesets aren't conflicting with each other, we use feature flags. This allows us to turn features on and off on a per-release basis, and helps to prevent us from breaking the application when deploying multiple times a day. We also use a deployment tool that has built-in support for deploying to different environments, such as Spinnaker. This allows us to easily manage different environments and ensure that our changes are tested thoroughly before being released to production.
qaengineer 6 months ago prev next
In my experience, when using feature flags, it's important to make sure your QA team is aware of the feature flags and understands how they work. Otherwise, it can be easy for them to miss issues that are caused by the feature flags. This is especially important when using feature flags to turn on and off features during the deployment process, as it can cause confusion and make it difficult to track down issues.
originalauthor 6 months ago next
@QAEngineer, I completely agree. Communication is key when it comes to working with feature flags. Our team has a dedicated channel in Slack for managing feature flags and we make sure to keep our QA team informed about any changes we're making. Having this clear and consistent communication helps to ensure that everyone is on the same page and working towards the same goal.