Blog Insights How to manage Agile teams with microservices
August 23, 2019
3 min read

How to manage Agile teams with microservices

GitLab Groups and Projects can help teams divide work by product or system.

agilemultipleteams.jpg

We’re getting closer to the 2019 finish line, but there’s still time to jump on
the microservices train to accelerate your team’s delivery. We’ve written about
microservices in the past, including discussing
best practices for microservices implementation
and GitLab’s integrated vision for microservices,
but I’m here to share something a little different: How you can use microservices
to manage your team.

But first, a recap: Microservices is a collection of independently deployable
services that advances a goal, with each application managing a specific function
really well.

“The term ‘Microservice Architecture’ has sprung up over the last few years to
describe a particular way of designing software applications as suites of
independently deployable services.” –
Martin Fowler

GitLab microservices for Agile team management

Using GitLab Projects and
Groups, teams can organize their work
to increase visibility and collaboration. GitLab supports Agile teams by providing
Milestones (or sprints),
Issues (or user stories),
Weights (or points and estimation),
and other common Agile artifacts.

Here are a few ways to use groups and projects:

Organizing your team by system

One of the more traditional ways to divide work, organizing by system separates
teams by component and subsystem. For example, the teams that handle mobile iOS,
mobile Android, and website have different projects, each with their own code
repo and issue tracker. This
type of structure works well with operations-driven organizations, but it’s not
a modern approach, so we recommend one of the following structures instead.

Organizing your team by product area

Dividing work by product is a best practice that drives business value. Using
GitLab Groups, you can create Code and Teams. Within Code, separate projects
represent various components (e.g. mobile iOS and user accounts), with individual
code repositories and sets of merge requests.
Once you’ve created your projects (and code repos), you can build another group
for Teams, which includes fullstack product teams (i.e., engineers, PMs, designers),
enabling parallel milestones and Agile boards. The benefit of organizing work by
product area is that there’s a separation between code repos and work, so that
every piece of code in your organization is open to contributions from all teams.

Organizing your team with a hybrid approach

This approach combines both product and system organization structures and is
well suited for organizations that have cross-platform teams. For example, a mobile
team has dedicated iOS and Android engineers rather than full teams for both
platforms. In this model, the Code group will have individual projects according
to component, but Teams is consolidated so that there’s only a website and mobile
team.

Watch this demo and check out its
corresponding example application to see groups and projects in action. 🍿

Does your team use microservices for Agile development? We’d love to hear your
thoughts.

Cover image by Martin Sanchez on Unsplash

We want to hear from you

Enjoyed reading this blog post or have questions or feedback? Share your thoughts by creating a new topic in the GitLab community forum. Share your feedback

Ready to get started?

See what your team could do with a unified DevSecOps Platform.

Get free trial

New to GitLab and not sure where to start?

Get started guide

Learn about what GitLab can do for your team

Talk to an expert