B-Open technologies and best practices

Technologies and best practices at B-Open in 2022

At B-Open we try to keep up with the software development best practices and tooling for Python, often drawing from widely used and successful Open Source projects. Sometimes we need to adapt to the technological needs of our customers (JIRA comes to mind), but in 2022 we have several new projects starting up and most of them share a common set of modern technologies and best practices.

The main differences with respect to the past year are:

  • Kubernetes more or less everywhere (but still a lot of docker-compose)
  • much more GitHub and GitHub Actions 🎊
  • FastAPI has taken over most API development
  • Ansible has kicked Puppet out of the list of legacy tools we need to endure 🥳
  • less ReST in favour of MarkDown, but always with Sphinx

And here are the technologies for 2022.

Software development

  1. Programming language: Python 3.8+
  2. Python installation tooling: Pip, Conda
  3. Software testing: Pytest (unit testing), coverage.py (code coverage), Black (coding style), Mypy (type check)
  4. Continuous integration: GitHub Actions, GitLab CI/CD, pre-commit

Scientific computing

  1. Scientific stack: Numpy, Pandas, Xarray, Dask, Dask.distributed, Scipy
  2. Geospatial stack: GDAL / OGR, rasterio, QGIS
  3. Scientific visualisation: Jupyter notebook, Matplotlib, Plotly

Web development

  1. Front-end framework: React / JavaScript
  2. Web mapping: Leaflet
  3. Web API stack: FastAPI, SQLAlchemy, Keycloak / WSO2
  4. Database: PostgreSQL / PostGIS
  5. End-to-end testing: Cypress

System engineering / DevOps

  1. Operating Systems: Ubuntu Linux, CentOS Linux, MacOS, Windows.
  2. Containers: Docker, Docker compose, Kubernetes
  3. Cloud platforms: OpenStack, Google Cloud Platform, Microsoft Azure, Amazon Web Services
  4. Deployment automation: Ansible, Terraform

Collaboration tools

  1. Software project management: GitHub, GitLab, JIRA
  2. Source control: Git
  3. Documentation: reStructuredText, MarkDown, Sphinx / MyST

Edit this page

Alessandro Amici
Alessandro Amici
CTO

Passionate and opinionated Software Engineer & Entrepreneur. Remote Sensing | Climate | Python