How to ship code to production in 11 steps

How Do Companies Ship Code to Production? Here are 11 steps from planning to production: 1 - The Product Owner starts the entire process by creating user stories in a tool like Jira. 2 - The Developer Team performs Sprint Planning activity and adds the user stories to the sprint. 3 - Developers work on the assigned stories. Once a story is finished, they commit the code to Git and push it to GitHub. 4 - Jenkins builds and runs the code through testing and quality check tools such as JUnit, Jacoco, and SonarQube. 5 - If the build is successful, it is stored in the artifactory such as JFrog. Jenkins also deploys the build to the Dev Environment via Docker. 6 - Next up, the feature gets deployed to the QA environment. Since multiple teams may be working on the same code base, multiple QA environments will be created 7 - The QA team uses a particular QA environment and runs multiple test types such as QA, regression, and performance. 8 - Once the QA verification is complete, features are deployed to the UAT (User Acceptance Testing) environment. 9 - UAT testing verifies whether the feature satisfies the user’s requirements. 10 - Once the UAT testing is successful, the builds become release candidates. They are deployed to the production environment based on a specific schedule. 11 - The SRE team uses tools like ELK and Prometheus to monitor the production environment and handle alerts in case of issues. Over to you: Will you add any other steps to the process? -- Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): https://bit.ly/bbg-social   #systemdesign #coding #interviewtips  .

  • map

Alex Xu I love this. It's a simple, high-level introduction that ties some important elements together. But... It kind of smooths over the real-world messiness. Feedback loops are constant - not just from prod, but across planning, coding, and testing. Testing shouldn't be a hand-off. It starts with the devs. Security is oddly missing (SAST, DAST). That's, ahem... a bad idea. "Commit to Git” skips branching strategy debates. Most importantly, shipping code isn’t the goal. Delivering value is. Maybe version 2 can add customer feedback, uage data, A/B test results, and so on. This is a terrific high-level view. Will you create a more detailed update?

Overall a great depiction! Though, as a Product Owner, the Plan part makes me scared. 😱 If a Developer blindly takes a User Story I've created and starts developing it, we would rarely ship anything of quality. Huge part of the feedback you put in the Development phase should ideally be happening in the Plan phase.

This is a fantastic breakdown of the end-to-end deployment process! The steps are so well laid out and cover everything from planning to monitoring. I think adding a rollback mechanism to the production step could be valuable, just in case things don’t go as planned.

You suggest a very old school waterfall approach. With no cross-functional team work and you also miss out on the parallell design and problem framing work that needs to be done both before, during and after deployment. As a product owner I’m also involved in the full process. I start with defining high level tests. And work closely with ux designers, devs, QAs and stakeholders to define the user stories, and map the release. A more efficient process would look something like this: - User research & data gathering - Problem framing, value definitions, effect goals by PO, stakeholders, designers (and others when needed) - More user research and data gathering - Early prototyping with designers, developers and users to understand the problem and potential tech solutions better. - Map out a ”walking skeleton” with user stories that will deliver a first (and ugly) working software. Include the dev team - work iteratively with demos to follow progress. Demo in an environment that as most people as possible have access to. Testers, UX-designers. - Define and redefine next steps. Ideally, make small tests with users. - Iterate until ready to public. If you use Jira, Miro, Trello, post-it notes is NOT relevant.

Well (if none of the 111 comments before me already said that), tightening the feedback loops in multiple ways by having different members and/or roles involved earlier, for example the two following: - Dev Team to be part ot the story creation and refinement rather than being told what to do and just go by specification/instructions - "QA testing" already in the actual development process. Understand that this example process is very tool oriented, but still a process nonetheless (and very waterfall-y, IMO).

I think it’s a bit overcomplicated on one side. And some important things are missing on the other. For example, JFrog Artifactory is a nice-to-have feature, but Git (GitHub) can cover a similar purpose too. Just check out the Tags or Releases section. Also, I’m kind of missing this classic flow: Development → PreStage → Stage → Production QA & UAT environments might loosely represent that, but it’s not really visible in the diagram. In general, it feels a bit like someone tried to fit in every possible tool and buzzword into one image. It‘s great for training or overviews, but not always realistic. Sometimes a leaner setup with fewer tools works just as well — or even better.

See more comments

To view or add a comment, sign in

Explore content categories