Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backbase Tech Stack article #157

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions content/authors/authors.json
Original file line number Diff line number Diff line change
Expand Up @@ -114,5 +114,9 @@
"Sriram Seshadri": {
"avatar": "sriramg.png",
"role": "Principal System Engineer - Customer Success"
},
"Paweł Garbacik": {
"avatar": "pawelg.png",
"role": "Solution Architect - Customer Success"
}
}
Binary file added content/authors/avatars/pawelg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
198 changes: 198 additions & 0 deletions content/posts/unpublished/backbase-tech-stack/post.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
# Backbase tech stack

What exactly is being used to build banking applications in Backbase?

Check warning on line 3 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L3

[write-good.Weasel] 'exactly' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'exactly' is a weasel word!", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 3, "column": 6}}}, "severity": "WARNING"}

Check warning on line 3 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L3

[write-good.Passive] 'being used' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'being used' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 3, "column": 17}}}, "severity": "WARNING"}

![](assets/tech_stack_img_2.jpeg)

Authors: Paweł Garbacik

Check warning on line 7 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L7

[Google.Colons] ': P' should be in lowercase.
Raw output
{"message": "[Google.Colons] ': P' should be in lowercase.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 7, "column": 8}}}, "severity": "WARNING"}
Date: unpublished
Category: tech-life

tags: architecture,technology,patterns,stack

---

## Introduction

Backbase Engagement Banking Services is a comprehensive solution with a lot of capabilities.
It is thought out and designed to provide modern architecture with the latest market standards,

Check warning on line 18 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L18

[write-good.TooWordy] 'It is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'It is' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 18, "column": 1}}}, "severity": "WARNING"}

Check warning on line 18 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L18

[write-good.Passive] 'is thought' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is thought' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 18, "column": 4}}}, "severity": "WARNING"}
the most advanced security mechanisms, and great extensibility and flexibility to make it easy
to integrate with different core banking systems.

To achieve this, different technologies, frameworks, standards, and architectural patterns need to be combined.

Check warning on line 22 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L22

[write-good.Passive] 'be combined' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'be combined' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 22, "column": 100}}}, "severity": "WARNING"}


This article aims to provide an insight into how the Backbase software is built and integrated on a high level,

Check warning on line 25 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L25

[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 25, "column": 72}}}, "severity": "WARNING"}
what kind of technologies are used on a different levels and layers.

Check warning on line 26 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L26

[write-good.Passive] 'are used' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'are used' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 26, "column": 27}}}, "severity": "WARNING"}

## High level architecture

<img align="right" src="assets/HL_Architecture.drawio.png">

Engagement Banking Services are divided according to the capabilities they offer, the role they play, and on which level they operate.

Check warning on line 32 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L32

[write-good.Passive] 'are divided' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'are divided' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 32, "column": 29}}}, "severity": "WARNING"}

Each service is designed to perform completely different tasks and offers specific ways to interact with it.

Check warning on line 34 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L34

[write-good.Passive] 'is designed' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is designed' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 34, "column": 14}}}, "severity": "WARNING"}

Check warning on line 34 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L34

[write-good.Weasel] 'completely' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'completely' is a weasel word!", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 34, "column": 37}}}, "severity": "WARNING"}

On the top there are client-facing apps. These applications are available for 2 different platforms:

* Web applications - available on modern web-browsers, dedicated for different group of users, segregated by the roles and responsibilities
* Mobile applications - available on popular mobile devices powered by iOS and Android Mobile OSs

These applications allow to interact with backend services for these users who have proper permissions.
Client APIs are a dedicated and well secured APIs designed for interaction between client-facing applications and backend services.

On the next layer, there are services which take care of the security of the client-facing applications.
These layer of services is able to recognize the user and introduce the same user to backend services in a more understandable way.
This layer also offers the set of generic services which delivers generic capabilities like document storage or auditing for all other specific services.

Next layer offers specific banking services like Arrangements, Batches, Cards, Contacts, Payments etc.
These services offer set of functions oriented on a specific banking capability.
Interaction between services on this layer is possible through the Service APIs.

To interact with Core Banking services or Third Party services, there is a dedicated integration layer.
Banking Services have defined set of integration APIs for outbound and inbound connectivity.
Outbound APIs are for communication from BB to Core. Inbound APIs are from communication from Core to BB.
Thanks to this asynchronous data exchange is easy achievable and the load can be optimised by the Core.

Check warning on line 55 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L55

[write-good.Passive] 'be optimised' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'be optimised' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 55, "column": 79}}}, "severity": "WARNING"}
In many scenarios, Integration Services are implemented as a separate layer where the communication with Core is defined

Check warning on line 56 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L56

[write-good.Weasel] 'many' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'many' is a weasel word!", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 56, "column": 4}}}, "severity": "WARNING"}

Check warning on line 56 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L56

[write-good.Passive] 'are implemented' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'are implemented' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 56, "column": 41}}}, "severity": "WARNING"}

Check warning on line 56 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L56

[write-good.Passive] 'is defined' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is defined' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 56, "column": 111}}}, "severity": "WARNING"}
and custom logic is implemented.

Check warning on line 57 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L57

[write-good.Passive] 'is implemented' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is implemented' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 57, "column": 18}}}, "severity": "WARNING"}
This approach gives the flexibility of the solution because there is one shared API spec between Banking and Integration Services,
and what is more Integration Services can deliver something specific which is required to properly deliver integration with Core Banking.

Check warning on line 59 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L59

[write-good.Passive] 'is required' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is required' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 59, "column": 76}}}, "severity": "WARNING"}

Backbase has also a new way for integrating with Core and Third Parties. It was introduced in 2024, and it is called Grand Central.

Check warning on line 61 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L61

[write-good.TooWordy] 'It was' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'It was' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 61, "column": 74}}}, "severity": "WARNING"}

Check warning on line 61 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L61

[write-good.Passive] 'was introduced' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'was introduced' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 61, "column": 77}}}, "severity": "WARNING"}

Check warning on line 61 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L61

[write-good.TooWordy] 'it is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'it is' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 61, "column": 105}}}, "severity": "WARNING"}

Check warning on line 61 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L61

[write-good.Passive] 'is called' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is called' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 61, "column": 108}}}, "severity": "WARNING"}
Grand Central is something like Integration Platform or Connectivity Platform. It is integrated with Banking Services,

Check warning on line 62 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L62

[write-good.TooWordy] 'It is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'It is' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 62, "column": 80}}}, "severity": "WARNING"}

Check warning on line 62 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L62

[write-good.Passive] 'is integrated' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is integrated' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 62, "column": 83}}}, "severity": "WARNING"}
and it is focused on building integration connectors as a small pieces. In this approach the delivery effort is smaller and time to market is shorter.

Check warning on line 63 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L63

[write-good.TooWordy] 'it is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'it is' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 63, "column": 5}}}, "severity": "WARNING"}

Check warning on line 63 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L63

[write-good.Passive] 'is focused' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is focused' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 63, "column": 8}}}, "severity": "WARNING"}

## Technology Stack

Check warning on line 65 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L65

[Google.Headings] 'Technology Stack' should use sentence-style capitalization.
Raw output
{"message": "[Google.Headings] 'Technology Stack' should use sentence-style capitalization.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 65, "column": 4}}}, "severity": "WARNING"}

To achieve the highest level of security, the best possible performance and to deliver flexibility and extensibility for entire platform,
Backbase combines different market-leading technologies.

![](assets/Technologies.drawio.png)

### Web

Web solution is built on the top of leading framework Angular. Developers use also dedicated plugins and frameworks which

Check warning on line 74 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L74

[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 74, "column": 14}}}, "severity": "WARNING"}
extend Angular capability and make development process easier and faster.

| | |
|:-------------------------|:-------------------------------------------------------------------------------------------|
| Runtime | [Node.js](https://nodejs.org/) |
| Package Manager | [NPM](https://www.npmjs.com/) |
| Framework | [Angular](https://angular.io/) |
| Programming<br/>language | [TypeScript](https://www.typescriptlang.org/) |
| Dev Tools | [NX](https://nx.dev/) |
| API mocking tools | [ng-apimock](https://ngapimock.org/) |
| UI framework | [Bootstrap](https://getbootstrap.com/)<br/>[ng-bootstrap](https://ng-bootstrap.github.io/) |
| Linter | [ESLint](https://eslint.org/) |
| Code formatter | [Prettier](https://prettier.io/) |
| State management | [NgRx](https://ngrx.io/) |
| Reactive<br/>programming | [RxJs](https://rxjs.dev/) |
| CSS preprocessor | [Sass](https://sass-lang.com/) |
| Testing framework | [Jest](https://jestjs.io/) |
| Automation library | [Playwright](https://playwright.dev/) |

### Mobile

Mobile applications are built using native technologies. It means both platforms iOS and Android have separate codebases

Check warning on line 96 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L96

[write-good.Passive] 'are built' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'are built' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 96, "column": 21}}}, "severity": "WARNING"}
for mobile applications, and they are developed in dedicated environments. This approach guaranties the best possible

Check warning on line 97 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L97

[write-good.Passive] 'are developed' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'are developed' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 97, "column": 35}}}, "severity": "WARNING"}
performance,
and it follows best practices defined platforms creators like Apple Inc.  or Google LLC.

#### iOS

Check warning on line 101 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L101

[Google.Headings] 'iOS' should use sentence-style capitalization.
Raw output
{"message": "[Google.Headings] 'iOS' should use sentence-style capitalization.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 101, "column": 6}}}, "severity": "WARNING"}

| | |
|:---------------------------------|:-------------------------------------------------------------------------|
| Programming<br/>language | [Swift](https://www.swift.org/about/) |
| IDE | [Xcode](https://developer.apple.com/xcode/) |
| Dependency<br/>manager | [CocoaPods](https://cocoapods.org/) |
| UI Framework | [UIKit](https://developer.apple.com/documentation/uikit) |
| Handling of<br/>async events | [Combine](https://developer.apple.com/documentation/combine) |
| Reactive<br/>programming | [RxSwift](https://github.com/ReactiveX/RxSwift) |
| Unit and<br/>performance tests | [XCTest](https://developer.apple.com/documentation/xctest) |
| Automated<br/>screenshot testing | [SnapshotTesting](https://github.com/pointfreeco/swift-snapshot-testing) |

#### Android

| | |
|:---------------------------------|:------------------------------------------------------------------------------------------------------|
| Programming<br/>language | [Kotlin](https://kotlinlang.org/docs/home.html)<br/>[Java](https://www.java.com/en/) |
| IDE | [Android Studio](https://developer.android.com/studio) |
| Dependency<br/>manager | [Gradle](https://gradle.org/) |
| UI Framework | [Android UI](https://developer.android.com/develop/ui)<br/>[Material Design](https://m2.material.io/) |
| Dependency<br/>Injection | [Koin](https://insert-koin.io/) |
| Concurrency<br/>design pattern | [Coroutines](https://developer.android.com/kotlin/coroutines) |
| Unit tests | [JUnit](https://junit.org/junit4/) |
| Mocking data | [Mockito](https://github.com/mockito/mockito) |
| UI testing<br/>automation | [Espresso](https://developer.android.com/training/testing/espresso) |
| Automated<br/>screenshot testing | [Shot](https://github.com/pedrovgs/Shot) |

### Backend

Backend solution is built with Java language on the top of Spring Framework. Backend solution is very elastic and configurable.

Check warning on line 131 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L131

[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 131, "column": 18}}}, "severity": "WARNING"}

Check warning on line 131 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L131

[write-good.Weasel] 'very' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'very' is a weasel word!", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 131, "column": 98}}}, "severity": "WARNING"}
It currently supports several Database and Messaging solutions.

Check warning on line 132 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L132

[write-good.Weasel] 'currently' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'currently' is a weasel word!", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 132, "column": 4}}}, "severity": "WARNING"}

| | |
|:--------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Programming<br/>language | [Java](https://www.java.com/en/) |
| Dependency<br/>manager | [Maven](https://maven.apache.org) |
| Frameworks | [Spring Framework](https://spring.io/)<br/>[Spring Boot](https://spring.io/projects/spring-boot)<br/>[Spring Cloud](https://spring.io/projects/spring-data) |

Check warning on line 138 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L138

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 138, "column": 140}}}, "severity": "WARNING"}
| Integration<br/>framework | [Apache Camel](https://camel.apache.org) |
| Service Discovery | [Netflix Eureka](https://cloud.spring.io/spring-cloud-netflix/reference/html/) |
| API | [RESTful](https://restfulapi.net)<br/>[OpenAPI](https://www.openapis.org/) |
| Databases | [MySQL](https://www.mysql.com/)<br/>[MSSQL](https://www.microsoft.com/en-us/sql-server)<br/>[Oracle](https://www.oracle.com/database/) |
| ORM | [Spring Data](https://spring.io/projects/spring-data) |
| Database schema managemnt | [Liquibase](https://www.liquibase.org/) |
| Messaging | [ActiveMQ](https://activemq.apache.org/)<br/>[RabbitMQ](https://www.rabbitmq.com/)<br/>[Azure Service Bus](https://azure.microsoft.com/en-us/products/service-bus) |

#### IAM

IAM is an Identity and Access Management solution. It uses under the hood the Keycloak Identity Provider which is much expanded compared to the original version.
It uses Quarkus Java Framework. IAM leverages not only Identity Provider but also internal, custom services for Access Management and Authorization purposes.

Check warning on line 150 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L150

[write-good.Weasel] 'only' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'only' is a weasel word!", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 150, "column": 51}}}, "severity": "WARNING"}
These are quite important set of services which are integral part of entire Backbase platform.

| | |
|:----------|:--------------------------------------|
| Framework | [Quarkus](https://quarkus.io) |
| Solution | [Keycloak](https://www.keycloak.org/) |

### Infrastructure

OK, we shortly discussed the tech stack and high level architecture but these services need to be hosted somehow and somewhere.

Check warning on line 160 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L160

[Google.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Google.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 160, "column": 5}}}, "severity": "WARNING"}

Check warning on line 160 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L160

[write-good.Weasel] 'shortly' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'shortly' is a weasel word!", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 160, "column": 8}}}, "severity": "WARNING"}

Check warning on line 160 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L160

[write-good.Passive] 'be hosted' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'be hosted' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 160, "column": 96}}}, "severity": "WARNING"}
Thanks to containerisation and used technology, Backbase services are ready to be deployed almost everywhere

Check warning on line 161 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L161

[write-good.Passive] 'be deployed' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'be deployed' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 161, "column": 80}}}, "severity": "WARNING"}
starting from classic application servers and on-premises environments ending with the container platforms such us Kubernetes or OpenShift

Check warning on line 162 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L162

[Google.WordList] Use 'app' instead of 'application'.
Raw output
{"message": "[Google.WordList] Use 'app' instead of 'application'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 162, "column": 23}}}, "severity": "WARNING"}

Check warning on line 162 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L162

[Google.We] Try to avoid using first-person plural like 'us'.
Raw output
{"message": "[Google.We] Try to avoid using first-person plural like 'us'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 162, "column": 113}}}, "severity": "WARNING"}
deployed in different cloud environments.

Backbase recommends dedicated hosting solution called BaaS - Backbase as a Service.
It is built on the top of Azure and GitHub, and it is fully supported by operational team.

Check warning on line 166 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L166

[write-good.TooWordy] 'It is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'It is' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 166, "column": 1}}}, "severity": "WARNING"}

Check warning on line 166 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L166

[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 166, "column": 4}}}, "severity": "WARNING"}

Check warning on line 166 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L166

[write-good.TooWordy] 'it is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'it is' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 166, "column": 49}}}, "severity": "WARNING"}

#### BaaS (Backbase as a Service)

Check warning on line 168 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L168

[Google.Headings] 'BaaS (Backbase as a Service)' should use sentence-style capitalization.
Raw output
{"message": "[Google.Headings] 'BaaS (Backbase as a Service)' should use sentence-style capitalization.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 168, "column": 6}}}, "severity": "WARNING"}

| | |
|:-----------------------|:------------------------------------------------------------------------|
| Cloud vendor | [Azure](https://azure.microsoft.com/) |

Check warning on line 172 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L172

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 172, "column": 3}}}, "severity": "WARNING"}
| Container solution | [Docker](https://www.docker.com/) |
| Container orchestrator | [Kubernetes](https://kubernetes.io/) |
| Package manager | https://helm.sh/docs/ |
| Service Mesh | [Istio](https://istio.io) |
| GitOps tools | [Argo](https://argoproj.github.io) |
| Version control | [GitHub](https://github.com) |
| CI/CD | [GitHub Actions](https://github.com/features/actions) |
| Observabiity | [Datadog](https://www.datadoghq.com)<br/>[Grafana](https://grafana.com) |

### Security

Security is a key principal in reliable banking environment. Backbase places great emphasis on data security and the safety of using the platform.
All the services and included features are designed in such a way that no unauthorized person gets access to data, functionalities or to perform operations.

Check warning on line 185 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L185

[Google.OxfordComma] Use the Oxford comma in 'All the services and included features are designed in such a way that no unauthorized person gets access to data, functionalities or'.
Raw output
{"message": "[Google.OxfordComma] Use the Oxford comma in 'All the services and included features are designed in such a way that no unauthorized person gets access to data, functionalities or'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 185, "column": 1}}}, "severity": "WARNING"}

Check warning on line 185 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L185

[write-good.Passive] 'are designed' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'are designed' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 185, "column": 40}}}, "severity": "WARNING"}
Security in Backbase is built on global standards. It is focused on Zero Trust approaches, and it is regurally tested, audited and certified.

Check warning on line 186 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L186

[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 186, "column": 22}}}, "severity": "WARNING"}

Check warning on line 186 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L186

[Google.OxfordComma] Use the Oxford comma in 'It is focused on Zero Trust approaches, and it is regurally tested, audited and'.
Raw output
{"message": "[Google.OxfordComma] Use the Oxford comma in 'It is focused on Zero Trust approaches, and it is regurally tested, audited and'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 186, "column": 52}}}, "severity": "WARNING"}

Check warning on line 186 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L186

[write-good.TooWordy] 'It is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'It is' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 186, "column": 52}}}, "severity": "WARNING"}

Check warning on line 186 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L186

[write-good.Passive] 'is focused' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is focused' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 186, "column": 55}}}, "severity": "WARNING"}

Check warning on line 186 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L186

[write-good.TooWordy] 'it is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'it is' is too wordy.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 186, "column": 96}}}, "severity": "WARNING"}

| | |
|:---------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [OAuth](https://oauth.net/2/) | OAuth 2.0 is the industry-standard protocol for authorization. |

Check warning on line 190 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L190

[Google.WordList] Use 'OAuth 2.0' instead of 'OAuth 2'.
Raw output
{"message": "[Google.WordList] Use 'OAuth 2.0' instead of 'OAuth 2'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 190, "column": 134}}}, "severity": "WARNING"}
| [Authentication](https://auth0.com/intro-to-iam/what-is-authentication) | Authentication is the process that companies use to confirm that only the right people, services, and apps with the right permissions can get organizational resources. |

Check warning on line 191 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L191

[write-good.Weasel] 'only' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'only' is a weasel word!", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 191, "column": 199}}}, "severity": "WARNING"}
| [Authorization](https://auth0.com/intro-to-iam/what-is-authorization) | Authorization is the process of giving someone the ability to access a resource. |
| [mTLS](https://www.cloudflare.com/en-gb/learning/access-management/what-is-mutual-tls/) | Mutual TLS is a method for mutual authentication. mTLS ensures that the parties at each end of a network connection are who they claim to be by verifying that they both have the correct private key. |
| [Data at rest<br/>encryption](https://www.ibm.com/docs/en/strategicsm/10.1.3?topic=security-data-rest-encryption) | The encryption of the data that is stored in the databases and is not moving through networks |

Check warning on line 194 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L194

[write-good.Passive] 'is stored' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is stored' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 194, "column": 166}}}, "severity": "WARNING"}
| [Encryption<br/>in transit](https://docs.tenable.com/cyber-exposure-studies/data-protection/Content/EncryptionDataInTransit.htm) | Encryption in Transit refers to encrypting data that is transferred between two nodes of the network |

Check warning on line 195 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L195

[write-good.Passive] 'is transferred' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is transferred' may be passive voice. Use active voice if you can.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 195, "column": 187}}}, "severity": "WARNING"}
| [OWASP](https://owasp.org) | An online community that produces freely available articles, methodologies, documentation, tools, and technologies in the fields of IoT, system software and web application security. |

Check warning on line 196 in content/posts/unpublished/backbase-tech-stack/post.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/posts/unpublished/backbase-tech-stack/post.md#L196

[Google.WordList] Use 'app' instead of 'application'.
Raw output
{"message": "[Google.WordList] Use 'app' instead of 'application'.", "location": {"path": "content/posts/unpublished/backbase-tech-stack/post.md", "range": {"start": {"line": 196, "column": 295}}}, "severity": "WARNING"}


Loading