testing - How to early and incrementally deliver to Production on large projects -
testing - How to early and incrementally deliver to Production on large projects -
many software companies boast have quick incremental releases of new functionality production. on back-end project in big company x have big-releases (1 release in quarter). utilize scrum 2-week sprints , scheme integration testing done final stage among adjacent teams , clients before releasing production (they have own pack of tests). our team uses continous integration nightly regression tests our back-end service (our pack of tests respectively). utilize modern agile tools jira, git, nexus, stash code-reviews, spock, junit , teamcity.
we can't afford frequent integration testing among teams teams busy. our regression-tests written qa-devs take ~10hours (there lots of functionality checked against databases terabutes of data). our back-end servces critical in terms of business having hundreds of consumers , work 24/6. in order go live production our consumers have run integration tests too. requires lot of coordination , time.we release on weekends @ non-working time.
thus fast releases risky , time-consuming. hear success stories , how accomplish quick releases? doable?
to summarize comments. non-sequitur that, "fast [frequent] releases risky , time-consuming".
doing smaller releases reduces difficulty of testing releases. if more releasing, size of release decrease, number of features changed smaller.
see: martin fowler's frequencyreducesdifficulty
to extent risk of little release vs big release depends on architecture of system. if you've got tangled monolith risk of alter effecting unrelated component high. solve need break components they're more isolated each other.
if architecture loosely coupled, there fewer connections between components. each component should hence easier test in isolation. release can become components - don't need deploy everything, every time.
you can engineer create releases easier. example, if have highly-available system, run old , new @ same time, shut downwards old version , allow fail-over occur.
you don't have release in 1 big bang. can incrementally roll things out, whether part or specific set of users.
apis should have contract. more functions; wire formats , behaviours. long know services honour contract should work. automated tests should help. again, consider breaking big apis smaller ones.
to that, "the thing such approach doesn't work in many companies" dubious. biggest obstacle i've seen cultural one; people don't want alter , process entrenched.
to frequent releases don't have solve problems. can start off doing new features , services. it's never going happen if dont start.
testing release agile scrum continuous-delivery
Comments
Post a Comment