As the relationship between API Development and Operations teams tightens, traditional roles within these teams are changing.
The following are example roles in an organization delivering APIs using Agile Methodology. In this example, the team executes work in 2 weeklong sprints with an iteration planning meeting performed on Day 1 of the sprint and a retrospection (review) meeting performed on day 10 of the sprint.
Between these two dates, a 15 minute stand up meeting is performed to summarize each roles work for the day and if any blocking actions are preventing them from completing their work.
If this is the case, the Scrum Lead typically will be designated in removing the blocking activity so that the team can proceed.
Scrum Lead - leader of a scrum team that manages the backlog, iteration planning and managing blocking conditions for other team members. They also coordinate with the customer or act on the customer’s behalf in organizing user stories (features / work to be performed) for the iteration.
Developer - responsible for taking user stories and developing technical capabilities in the form of application or API logic.
Architect - responsible for supporting the technical staff by providing guidance on best practices and working with the business on translating business requirements into technical strategy.
DevOps - this role focuses on the integrating the software solutions into available infrastructure using solutions that help build, package, deploy and test the implemented capabilities. They also are responsible for moving those features through the appropriate environments up to and including production. Finally monitoring / maintenance of the implemented solution in production is performed.
DevOps often discusses Continuous Integration, Continuous Delivery and Continuous Deployment.
What do each of these mean and when or why does an organization embrace one of them? Let's dive a little deeper and explore each of these in more detail.
Continuous Integration refers to using automation to incorporate developer features that are ready to merged into the software application. The goal is to perform builds for each new feature as soon as it is available and to identify issues early in the process. This allows developers to correct issues quickly as they occur. It also provides a means for team members to have visibility of changes that are occurring with each commit. In addition to confirming new features successfully execute and work as anticipated, test automation can also be used to help identify regression.
Continuous Delivery / Continuous Deployment
Whereas CI focuses on the development environment, Continuous Delivery and Deployment, brought about changes in how software was delivered and deployed to the remaining environments within an organization.
Continuous Delivery focuses on the getting software features to a production-like environment. In many organizations, this environment may be described as Staging. By vetting that the software features run successfully in a production-like environment, the producer has a high degree of confidence in the new features and can decide on when they will release it to the customers.
Continuous Deployment executes a similar process to Continuous Delivery however the software is eventually deployed to Production directly. In either case, both Continuous Delivery and Deployment rely heavily on automation of the deployment of the software and subsequent testing that confirms the software meets expected criteria for the environment that it is in.
Example environments may include Development, Quality Assurance, Staging and Production. The following table articulates what each environment’s purpose may be:
So when would one consider using Continuous Integration, Continuous Delivery or Continuous Deployment? This is up to the organization, but the following table helps isolate which option makes the most sense based on delivery frequency.
Continuous Delivery and Deployment are not simple and require fortitude to automate the pipeline. Examples of organizations that have implemented these complicated methodologies include Netflix and Yahoo.
Learn more about the role DevOps and trends in the space, check out the DevOps Trends article next!