Backend for Frontend (BFF) project with ExpressJS on NodeJS
The Backend for Frontend pattern, commonly known as BFFs, helps you focus on exposing business data and services in a form that matches the user interaction requirements. For instance, to optimize a user journey to your cloud solution, it may require a different user journey for the mobile application but a richer, more detailed journey for the Web application. With IBM Cloud, you can build a BFF by using polyglot programming approach to define the BFF- using Node.js, Swift, or Java. The BFF service exposes a RESTful API matching a Swagger definition.
- Install the latest NodeJS 6+ LTS version.
- Install IBM Cloud Developer Tools on your machine
- Install the plugin with:
bx plugin install dev -r bluemix
IBM Cloud DevOps services provides toolchains as a set of tool integrations that support development, deployment, and operations tasks inside IBM Cloud. The "Create Toolchain" button creates a DevOps toolchain and acts as a single-click deploy to IBM Cloud including provisioning all required services.
*Note you must publish your project to Github for this to work.
This BFF application is configured to connect to the following services:
The project contains IBM Cloud specific files that are used to deploy the application as part of an IBM Cloud DevOps flow. The .bluemix
directory contains files used to define the IBM Cloud toolchain and pipeline for your application. The manifest.yml
file specifies the name of your application in IBM Cloud, the timeout value during deployment, and which services to bind to.
Service credentials are taken from the VCAP_SERVICES environment variable if running IBM Cloud Cloud Foundry, from individual environment variables per service if running on IBM Cloud Container Service (see ./server/config/mappings.json), or from a config file if running locally, named./server/config/localdev-config.js
.
The IBM Cloud development plugin makes it easy to compile and run your application if you do not have all of the tools installed on your computer yet. Your application will be compiled with Docker containers. To compile and run your app, run:
bx dev build
bx dev run
Your application is running at: http://localhost:3000/
in your browser.
- Your Swagger UI is running on:
/explorer
- Your Swagger definition is running on:
/swagger/api
- Health endpoint:
/appmetrics-dash
You may see this warning when running bx dev run
:
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
When deploying to production, it is best practice to configure sessions to be stored in an external persistence service.
To build and debug your app, run:
bx dev build --debug
bx dev debug