Skip to content

Development tools

adrianapintod edited this page May 10, 2020 · 3 revisions

Introduction

We identify six core practices aiming to drive each project with efficiency, agile ways of working, quality of software delivery, and maintenance and monitoring. Those six practices are:

  • Project foundations: tools and processes to gather requirements and understand stakeholder needs.
  • Continuous integration: tools to enhance integrations of new features into the repository main branches.
  • Continuous delivery: tools to package resulting applications and new software versions.
  • Continuous deployment: tools to release live application versions.
  • Continuos operations: tools for server maintenance, enhancing application stability and availability.
  • Continuous monitoring: tools to enable transparency and traceability of live operations.

Let's dive into each practice and let's introduce the available tools to satisfy its goals and objectives:

Six core practices

Project foundations:

Github boards

This tool allows us to organize the activities relevant to the development process of the open-source application. The goal of the team is to leverage scrum practices and ceremonies enhancing the software development lifecycle. Unfortunately, GitHub boards only work with Kanban projects limiting the opportunity to do estimations sprint setup and user stories organization.

Ideally, our boards will be based on the template "Automated kanban with review", which allows us to move activities between To do, In Progress, and Done columns, with additional triggers for pull request review status. These additional triggers are relevant to maintain code quality.

GitHub board

Miro

This tool enables the team to discuss and propose ideas to satisfy stakeholder requirements. The team will be able to brainstorm using a collaborative whiteboard where every idea will be published as a virtual post-it note available for everyone to see. Based on these discussions user stories and development activities will be created and prioritized on the GitHub board.

Miro Whiteboard

GitHub Wiki

This tool will be used as our main Knowledge management repository where concepts, processes, and standardized practices will be documented as part of the strong documentation foundation the team requires.

GitHub Wiki

Continuous integration

GitHub review management system

This built-in tool in our GitHub project will enable us to have oversight on code changes and code quality requiring human interaction to evaluate the documented criteria on how the codebase should be extended and maintained. Due to the board configuration, this is a mandatory step that will occur before a development activity wants to be in "done" state.

GitHub review

The reviews will be an essential part of a pull request. These requests are created to merge features to the main release branches: development, staging, and master.

GitHub scanning

This tool will automatically scan the codebase looking for bugs and vulnerabilities enhancing the quality of the application. Alternativ tools like Sonarqube accomplish similar results and can easily be integrated into our development processes and lifecycle.

GitHub code scanning

Application testing framework

This tool is specific for each component of our application and depends on the programming language. This should be maintained by the developers and the team accepts as part of the definition of done the creation and the successful execution of automated testing routines on different use case scenarios, ensuring application stability and the introduction on non-breaking changes to the codebase.

GitHub Actions

This tool schedules the execution of the developed application automated tests when a version control event happens. This can also be used as CI/CD pipeline capabilities, built-in into our GitHub project.

GitHub Actions

Docker

This tool enables the team to create containerized applications, isolated and platform-independent using the container standard built-in most cloud platforms, enhancing the stability and consistency of the application dependencies and environment.

Continuous delivery

GitHub Actions

In this stage, GitHub actions will be leveraged to prepare the development version of the application so another team member can execute functional tests and manually verify that the user acceptance criteria are satisfied, enabling the feature to be pushed to the pre-production environment.

GitHub Boards

In this stage, GitHub Boards will serve as the main documentation for quality assurance, enabling team members to follow the rejection or approval of feature branches based on the satisfaction of the user acceptance criteria.

Continuous deployment

GitHub Actions

In this stage, GitHub Actions will automate the deployment and release of the application components to remote computing resources or application distribution systems: Google Play, Apple App Store.

Cloud Platform or Remote computing resources

This tool refers to the computing resources needed to enable the APIs and server-based components in a publicly available domain or IP.

Continuos operations

Computing resource monitor

This tool enables the team to verify the correct functionality of the application components and live services through the monitoring of hardware resources and network resources. This way we can understand how much traffic is supported and possible bottlenecks on the application performance that might affect availability to the final user. There are multiple open source for this purpose as well as cloud provided solutions: Grafana, Zabbix, Azure monitor, etc.

Grafana

Continuous monitoring

Logging and traceability

This tool enables us to monitor user interaction errors and to trace user activities while using our application. This can be implemented on server level as well as client level and provides a layer of transparency and the opportunity to recognize the behavior of the final user and the way they interact with our solution. There are open-source tools that can be leveraged as well as Cloud Platform built-in tools: Kibana, AWS Cloudwatch, Azure log analytics, etc.

Kibana

Conclusion

These tools and topics are a recommendation based on the agile ways of working and should be discussed within the team as we understand that this might add some complexity to the solution but will enhance the development lifecycle.

Clone this wiki locally