• Blog
    • Engineering
      • Unleashing Chaos Monkey
      • Cache the Hell Out: Our Journey to Elevate HITEAM's Performance
      • How Do We Do Multiple Production Releases Everyday
      • Happy Programmer's Day: Changing the World One Line at a Time
      • Our Shipping Philosophy: Manifesto for Remarkable Product Delivery
      • QA and Development: Collaborating for Quality
    • Quotes
      • Until we can manage time, we can manage nothing else.
      • You must remain focused on your journey to greatness
      • Pleasure in the job puts perfection in the work
      • It is not the mountain we conquer, but ourselves
      • No matter how great the talent or efforts, some things just take time.
    • Product Updates
      • Launch of Market, Onboard, Support and Project
      • WorkBench: Sneak Peek
      • Transform Your Development Process with HITEAM's AI-Enabled Automatic Test Case Creation!
    • Agile Adventures
      • We Don't Talk About Agile, No, No, No!
    • Product Management
      • When in Doubt, A/B Test: Unlocking the Power of Data-Driven Decisions

How Do We Do Multiple Production Releases Everyday

Here's a sneak peek into how we accomplish multiple production releases every single day:

1. Code Coverage:
First and foremost, achieving 100% code coverage is our foundation. While not every project requires full coverage, critical components and core systems are a must. For instance, in HITEAM, our Calibration Engine automates every aspect of SCRUM and Scaled Agile scenarios, covering every possible combination. With 300+ conditions checking different scenarios, it's airtight. Automated test coverage is the key to true agility. With this coverage we are more confident in making changes to our system. 

2. Code Is Your Documentation:
Your code is your documentation. In my experience, separate documentation efforts often fall short. Developers read code, and our job is to make it readable. Use REST for API description, adopt short yet expressive naming conventions, and apply domain-driven design (DDD) principles. For instance, use if order != nil or the expressive version if order.present? to check if an object exists. Your code should be like a poetry.

3. Dockerization/Containerization:
Containerization, a true paradigm shift after Git, revolutionizes software development. It guarantees uniform configurations across every environment, from developers' machines to production. Witness its amazing impact on your development journey – our onboarding entails just three lines: 1) Install Docker, 2) Clone the repo, and 3) Run docker-compose up. That's it! Your entire dev environment mirrors production, allowing seamless deployment with distinct values. It's nothing short of magic.

4. Limit Your Stack :
Not every app needs a Netflix-like stack. Start with a simple stack familiar to your team. Complexity isn't always necessary. Facebook scaled with PHP, and GitHub supports millions of developers using Rails. Upgrade tools when necessary. Limiting your stack reduce the complexity of your infrastructure. 

5. NoOps:
NoOps isn't lack of DevOps; it's DevOps at its pinnacle. We automated the whole deployment and production rollout using the right tools and cloud services. Our NoOps setup consists of a robust Git workflow: lock the master, make changes only via pull requests so that someone else can review the code changes. Second, containerize! containerization simplifies production rollout, we can use the same build across all environment. build the new container and replace the older versions with the new container versions. And the final part is to automate the database migrations, no one has access to database, handle database changes only through code deployment. it helps you to maintain consistent data model and integrity across all environments. These three components form our NoOps framework. If you take care all these, all you have to do for production releases is to run one command 'deploy', voila!

6. Monitoring:
Monitoring is non-negotiable. We can't release multiple times a day without monitoring. Utilize robust monitoring software (NewRelic is a favorite). Detect exceptions, code breaks, and performance bottlenecks. Set up notifications via Slack to ensure swift responses when something goes awry. Tooling is just one part, but someone has to care about these metrics. when you do it, it reflects on your product.

Above all, robust code coverage is the bedrock of agility. The more comprehensive the coverage, the more confident our releases. Behind our seemingly simple release process lies hard work and a wealth of learning.

May your teams embark on this journey and take that first step. Keep pushing boundaries and release with unwavering confidence!

All great things start with the first step. Take one for your team.

With our FREE trial, you can take that step without any cost overhead.
30 day free trial. Cancel anytime. No credit card required.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.