Development Environment

Setup and configure a development environment in which to develop and test POB.

Last Updated: 26 May 2022 • Page Author: Jillur Quddus

Overview

This page is intended for software engineers and data engineers who wish to setup and configure a development environment in which to develop, extend and test POB.

Build Tools

Please ensure that the following prerequisite build tools are installed in your development environment:

  • OpenJDK 11 - open source reference implementation of Java 11.

  • Apache Maven - open source build automation tool for Java.

  • Git - open source distributed version control system.

POB is written in Java 11 and heavily utilises the Java Spring Framework. Apache Maven is used as the dependency management and build automation tool for POB's Java modules.

Development Tools

Please install your preferred integrated development environment (IDE) for Java development. Industry-standard IDEs that support Java include:

  • Eclipse IDE - integrated development environment (released under the free and open source Eclipse Public License) for Java that also supports numerous industry-standard languages and frameworks via its plugin architecture, including C/C++, JavaScript, Julia, PHP, Python, R, Ruby and more, with native Git and Apache Maven integration.

  • IntelliJ IDEA - integrated development environment (available as a free community edition under the Apache 2.0 license, or as a commercial product) supporting multiple industry-standard languages and frameworks including Java, Kotlin, Groovy, JavaScript, Python, Scala and PHP with native Git, Apache Maven and Docker integration.

Deployment Tools

Dependent on your target deployment environment, you may wish to install cloud-native command line interfaces (CLIs) for easy deployment to cloud-based managed services such as AWS Lambda and Azure Functions.

  • AWS CLI - command line interface for managing AWS services.

  • Azure CLI - command line interface for managing Microsoft Azure services.

  • Azure Functions Core Tools - toolkit for developing, testing and running Azure Functions locally.

It is strongly recommended to setup and configure CI/CD pipelines (using your preferred CI/CD technologies such as Jenkins) to automate the build, testing and deployment of POB's software services.

Open Software

POB is developed using open standards and open frameworks and, as such, is agnostic of the target deployment environment meaning that it can be deployed to on-premise, private cloud, public cloud (including Amazon Web Services, Microsoft Azure and Google Cloud Platform), multi-cloud and/or hybrid environments, and supports integration with industry-standard middleware and other open software services.

If you wish to provision a local development environment for development and testing purposes, it is recommended to provision and configure a local self-managed environment consisting of entirely open-source software services and frameworks. Example open-source software services relevant to POB as provided in the following table:

Logical Software ServiceOpen Software ServiceSelf-Managed Installation *

Relational Database

Secrets Engine

* The self-managed installation instructions provided refer to provisioning and configuring local self-managed instances for development and testing purposes only (i.e. non-production environments).

Secure Tunnels

During local development and testing, there may be times when you wish to temporarily expose a local web server (such as the Spring Boot embedded server) to the internet via a publicly accessible URL.

In order to expose a local web service to the internet via a publicly accessible URL, you can install and deploy ngrok which can be used to create secure introspectable tunnels to localhost. For example, once installed, to start a tunnel that exposes a local web service running on port 8080 and bound to the localhost network interface, you can simply run the command ./ngrok http 8080 which will generate a publicly-accessible URL using HTTPS (for example https://e386-586-142-186-215.ngrok.io). For further information regarding using ngrok, please visit https://ngrok.com/docs.

Last updated