Blue Stingray’s Standard Devops Approach

Blue Stingray’s Standard Devops Approach

 

Who We Are

Blue Stingray is a team of software engineers who create client-specific enterprise systems using modern open source technologies. We are dedicated to creating custom solutions to meet our clients’ needs. Our team specializes in built-to-order cloud-based systems, with diverse expertise that allows us to excel in all aspects of custom software development. Our goal is to build long-term relationships with our clients to create solutions that fit perfectly with their evolving business needs.

 

Development Goals

Application Environment Support

Blue Stingray supports three layers of application environments for Development, Staging/QA, and Production. Each environment is critical for the application development and launch process.

Repository / Pipeline Integration

We provide a seamless integration between the code repository and devops pipeline to increase the efficiency of the development team. By reducing the necessary steps to update the pipeline, our developers can focus on what they do best – development.

Feedback Cycles

Developers should have the ability to continuously deliver and iterate on product development as often as possible, without incurring overhead costs for server management and deployments. We allow for short feedback cycles to increase the overall ROI for our clients, allowing them to frequently see development progress in a Staging/QA environment.

Error Monitoring

Blue Stingray integrates error monitoring and reporting tools through every major stage of the devops pipeline. Monitoring and reporting reduces risk to the production application and increases the transparency of potential issues to the development team to prevent development hurdles.

Live Collaboration

Our teams and developers work concurrently to reduce bottlenecks in the development process, increasing the efficiency of the process.

 

Development Principles

To ensure a successful development process, each member of our development team follows a set of guiding principles when working on projects:

Modular and Bite-Sized

Each feature, bug, or improvement to the application is a small and easy-to-understand chunk. This reduces feedback cycles and limits the risk of code merging.

Automate

Every piece of the process that can be automated should be automated. This is for the sake of efficiency, but even more importantly to reduce the risk of human error.

Transparency

All work done is visible and transparent to the team. Working in smaller chunks of code allows this to happen more easily. Also, working with good tooling allows for all work and workflows to be accessible by any member of the team.

Iteration and Flexibility

Development work is not one and done. Each piece of the project is being updated, improved, maintained, and refactored over time. Developers approach projects with this mentality, understanding that development must be flexible to change. This flexibility of work improves every aspect of the development and devops process.


Our Standard Devops Workflow

Blue Stingray implements a continuous integration and deployment strategy, utilizing a number of 3rd party solutions and tooling to deliver the most reliable quality solutions to our clients. Each project at Blue Stingray differs slightly based on the requirements, but often follows a standard workflow for custom development. A typical Blue Stingray workflow may look something like below:

Setup

Each project at Blue Stingray will have the following setup:

  • Code repositories are considered with a skeleton project which can be built and run by any developer on the team via a local container.
  • Each code repository will be integrated with the continuous integration and continuous delivery (CI/CD) pipeline with a default set of pipeline steps.
  • The project will contain skeleton test suites for each type of test category. Those will typically start with:
    • Unit tests.
    • Integration tests.
    • Functional / UI tests.

CI/CD Standard Steps

  1. Blue Stingray teams perform all development locally. Each developer runs a copy of the project on their local machine via docker. This involves the developer performing feature development and developing automated tests for their specific task.
  2. Features are pushed into a central code repository.
  3. The pipeline recognizes change and deploys the test plan against code changes.
    • On test failure: the developer is notified.
    • On test success: continues to the next pipeline stage.
  4. At least one developer on the team manually reviews the code, looking for potential issues or improvements.
    • On review failure: notifies original developer and requests changes.
    • On review success: moves it to the next pipeline stage. 
  5. Application build is deployed to a Staging/QA environment and awaits acceptance validation from stakeholders.
    • On validation rejection: notifies developers. 
    • On validation acceptance: continues to the next pipeline stage.
  6. Application build is deployed to the Production environment.

Build and Test

Each project uses different technologies, so the specific build and test tooling change for each project. Our testing plans always involve a combination of automated and manual testing. The Blue Stingray team will include automated test cases in the application code for each feature developed. The developers who write the feature code write the automated tests alongside the feature code. This creates a more efficient and less error-prone process and avoids miscommunication issues that may occur when using a separate QA team that is not directly familiar with the automation code.

 

An example of our automated testing can be found below:

  • Dependencies are installed into a containerized environment based on a consistent image definition.
  • Code is lined for issues or improvements:
    • Syntax and style lint.
    • Performance lint.
    • Security lint.
  • SQL database is configured and migrated with the latest schema/changes.
  • Each test suite is run:
    • Backend PHPUnit unit performed.
    • Backend PHPUnit integration performed.
    • Frontend Mocha unit performed.
    • Laravel Dusk UI performed.
    • k6 load testing was performed.

 

The Tools We Use

Blue Stingray uses the following tooling on custom development projects. We work with a large range of solutions based on our clients’ specific needs and restrictions. In this section, multiple solutions will be listed for each type of tool:

Code repositories (Github, Bitbucket, Azure Repos, Google Cloud Source Repositories)

Provides a central repository for project development artifacts and assets.

Infrastructure as code via containers (Docker). 

Containers allow for strict configuration of infrastructure and dependencies that can be deployed on top of any existing infrastructure. This provides stability and reduces the risk of conflicts between environments.

CI/CD pipeline (TravisCI, Azure Pipelines, SemaphoreCI)

The core framework for defining and automating steps of the development process.

Testing framework

We’ve worked with dozens of testing frameworks. They are dependent on the technology being used and the requirements of the project.

Application monitoring (Sentry, Rollbar, Azure Insights)

Allows for the development team to be notified about potential risks to the application or project based on the application code.

Server monitoring (ELK, Azure Monitor, Azure Log Analytics)

Allows for the development team to be notified about potential risks to the application or project based on the cloud servers.

We tailor our development process to the needs of our clients. Our expert team of developers are accustomed to designing the custom solution you need and is available to build a solution that evolves with your business. Contact Blue Stingray to learn more about how our expertise can assist you with your current development needs.

“Blue Stingray’s knowledge and expertise allow us to hit our deadlines on a consistent basis without the need to constantly check in.”

— TOPS Office Products
Have a project? Get In Touch