Features delivery features in large projects

Any product that is currently in the store is threatened with releases. Our project is no exception. We work according to the scrum methodology, development is divided into sprints, usually sprints are not time-bound, but are divided into time periods, depending on the sprint scope. As a result of the sprint, the application is usually released to the store, which includes new features and some bugfix.


However, due to the specifics of the project, not all features immediately fall into the release upon completion of the sprint. Due to this approach, features appear that cannot be released to the prod. With all this, no one has canceled critical bugs, minor fixes and just the release of ready-made features. There are several types of releases:


  • Iterative development. Release of ready-made and agreed features.
  • Different time of acceptance of features. Each feature has a different priority on the part of the customer, which definitely affects the release dates of even ready-made features.
  • Critical bugs and SLA. If you find real problems on the sales builds, you need to fix the bug and roll out the update as soon as possible.

In conditions of constant releases, the question arises: "How to conduct development?".
After all, each developer must do tasks, make branches for these tasks, and somewhere in the end merge them.


image


Initially, the “feature-branches” approach was organized in the studio, let's look at its concept, highlight the pros and cons.


image


. , , FeatureBranch, DevBranch. , , , , FeatureBranch .


image


, . , 100% , , . , - swift , , , , xib , . , .


?


  • .
  • .
  • .

:


  • .
  • .
  • .
  • .

, . , , .


FeatureToggle


, . FeatureToggle , A/B / . , .


, . , . , - , «-» .


:


public final class FeatureToggle {

    public enum SomeFeature {
        public static var isEnabled = true
        public static var useMocks = false
    }

}

, . . , , .. , , .


, . , - .


if FeatureToggle.SomeFeature.isEnabled {
    // Should show feature
} else {
    // Should hide feature
}

, , , « » .


image



– . FeatureToggle. , , , . , , . , , , , .


:


  • FeatureToggle.
  • , , .

:


  • .
  • .
  • .
  • .
  • , .

?


, . , , . — . – , . , . , , .


, :



!


P.S.: . , .


All Articles