Skip to content

Commit e2c2c92

Browse files
committed
PLT-1074 - Switch to other technology
* build only on master * update README.md to reflect latest changes * remove useless ```
1 parent 0bffed5 commit e2c2c92

32 files changed

+81
-111
lines changed

.github/workflows/pages.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
pull_request:
55
push:
66
branches:
7-
#- master
7+
- master
88

99
permissions:
1010
contents: read
@@ -29,7 +29,7 @@ jobs:
2929
- name: Setup Pages ⚙️
3030
id: pages
3131
uses: actions/configure-pages@v4
32-
#if: ${{ github.ref == 'refs/heads/master' }}
32+
if: ${{ github.ref == 'refs/heads/master' }}
3333
with:
3434
static_site_generator: next
3535

@@ -42,6 +42,7 @@ jobs:
4242
path: ./build
4343

4444
deploy:
45+
if: ${{ github.ref == 'refs/heads/master' }}
4546
environment:
4647
name: github-pages
4748
url: ${{ steps.deployment.outputs.page_url }}

README.md

+55-79
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,82 @@
1-
# Motivation
1+
# Flaconi Technology Radar
2+
This Tech Radar is built by using the [AOE Technology Radar](https://github.com/AOEpeople/aoe_technology_radar), which contains the skeleton app.
23

3-
At [Flaconi](http://flaconi.de), we maintain a [public Tech
4-
Radar](http://flaconi.github.io/tech-radar/) to help our engineering teams
5-
align on technology choices. It is based on the [pioneering work
6-
by ThoughtWorks](https://www.thoughtworks.com/radar) and [zalando](https://zalando.github.io/tech-radar).
4+
## Contribute to the Technical Radar
75

8-
This repository contains the code to generate the visualization:
9-
[`radar.js`](/docs/radar.js) (based on [d3.js v4](https://d3js.org)).
10-
Feel free to use and adapt it for your own purposes.
6+
### Create a new Technology Radar release
7+
For a new Technology Radar release, create a folder of the release date (YYYY-MM-DD) under `./radar`.
118

12-
## Usage
9+
### Maintaining content
10+
The items are written in Markdown (`.md`) format.
1311

14-
1. include `d3.js` and `radar.js`:
12+
Each file has a meta header where the attributes of the item are listed:
1513

16-
```html
17-
<script src="https://d3js.org/d3.v4.min.js"></script>
18-
<script src="https://flaconi.github.io/tech-radar/release/radar-0.9.js"></script>
14+
```
15+
---
16+
title: "JavaScript"
17+
ring: adopt
18+
quadrant: languages-and-frameworks
19+
tags: [frontend, coding]
20+
---
21+
22+
Text goes here. You can use **markdown** here.
1923
```
2024

21-
2. insert an empty `svg` tag:
25+
Following front-matter attributes are possible:
2226

23-
```html
24-
<svg id="radar"></svg>
25-
```
27+
- **title**: Name of the Item
28+
- **quadrant**: Quadrant. One of `languages-and-frameworks` (for `Languages and Frameworks` quadrant),
29+
`methods-and-patterns`(for `Techniques` quadrant), `platforms-and-aoe-services`
30+
(for `Platforms` quadrant), `tools` (for `Tools` quadrant)
31+
- **ring**: Ring section in radar. One of `trial`, `assess`, `adopt`, `stop`
32+
- **tags**: Optional tags for filtering.
33+
- **featured**: (Optional, default "true") If you set this to "false", the item
34+
will not be visible in the radar quadrants but still be available in the overview.
2635

27-
3. configure the radar visualization:
28-
29-
```js
30-
radar_visualization({
31-
repo_url: "https://github.com/flaconi/tech-radar",
32-
svg_id: "radar",
33-
width: 1450,
34-
height: 1000,
35-
scale: 1.0,
36-
colors: {
37-
background: "#fff",
38-
grid: "#bbb",
39-
inactive: "#ddd"
40-
},
41-
// Some font families might lead to font size issues
42-
// Arial, Helvetica, or Source Sans Pro seem to work well though
43-
font_family: "Arial, Helvetica",
44-
title: "My Radar",
45-
quadrants: [
46-
{ name: "Bottom Right" },
47-
{ name: "Bottom Left" },
48-
{ name: "Top Left" },
49-
{ name: "Top Right" }
50-
],
51-
rings: [
52-
{ name: "INNER", color: "#5ba300" },
53-
{ name: "SECOND", color: "#009eb0" },
54-
{ name: "THIRD", color: "#c7ba00" },
55-
{ name: "OUTER", color: "#e09b96" }
56-
],
57-
print_layout: true,
58-
links_in_new_tabs: true,
59-
entries: [
60-
{
61-
label: "Some Entry",
62-
quadrant: 3, // 0,1,2,3 (counting clockwise, starting from bottom right)
63-
ring: 2, // 0,1,2,3 (starting from inside)
64-
moved: -1 // -1 = moved out (triangle pointing down)
65-
// 0 = not moved (circle)
66-
// 1 = moved in (triangle pointing up)
67-
// 2 = new (star)
68-
},
69-
// ...
70-
]
71-
});
72-
```
36+
The name of the .md file acts as item identifier and may overwrite items with
37+
the same name from older releases.
7338

74-
Entries are positioned automatically so that they don't overlap. The "scale" parameter can help
75-
in adjusting the size of the radar.
39+
If an item is overwritten in a new release, the attributes from the new item are
40+
merged with the old ones, and a new history entry is created for that item.
7641

77-
As a working example, you can check out `docs/index.html` &mdash; the source of our [public Tech
78-
Radar](http://flaconi.github.io/tech-radar/).
42+
You can integrate images in your markdown. Put the image files in your public folder and reference them:
7943

80-
## Deployment
44+
```
45+
![an image](/images/an-image.png)
46+
```
8147

82-
Tech Radar is a static page, so it can be deployed using any hosting provider of your choice offering static page hosting.
48+
### Content Guidelines
49+
You can update the rings and the quadrants in the `config.json` file. If you update the names of the rings and quadrants,
50+
you will need to update the technologies .md files accordingly.
8351

84-
## Local Development
52+
The text on the "How to use the Flaconi Technology Radar" page can be updated in the `about.md` file.
8553

86-
1. install dependencies with yarn (or npm):
54+
## Development
8755

88-
```
89-
yarn
90-
```
56+
### Host the application under a sub path
57+
To host the application under a sub path, set the environment variable `PUBLIC_URL`, e.g. "/tech-radar".
58+
The default is `/`.
9159

92-
2. start local dev server:
60+
> For local development you can use `/build` and use this for the following steps.
9361
62+
### Build the radar
9463
```
95-
yarn start
64+
yarn install
65+
yarn serve
9666
```
9767

98-
3. your default browser should automatically open and show the url
99-
68+
Then open the Tech Radar here: http://localhost:3000/tech-radar
69+
70+
### Build the radar with static files
10071
```
101-
http://localhost:3000/
72+
yarn install
73+
yarn build
10274
```
10375

76+
## Note
77+
The Flaconi Technology Radar are built starting from the [AOE Tech Radar content](https://www.aoe.com/techradar/index.html).
78+
If you want to build your own Technical Radar you may want to have a look at the [AOE Tech Radar GitHub repository](https://github.com/AOEpeople/aoe_technology_radar).
79+
10480
## License
10581

10682
```

radar/2024-01-02/adr.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: []
77
An Architecture Decision Record (ADR) is a document that captures an important architectural decision made during a project,
88
along with the context, reasoning, and consequences of the decision. It serves as a reference for why a particular
99
decision was made, helping teams understand the thought process behind architectural choices.
10-
```
10+

radar/2024-01-02/amazon_api_gateway.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ tags: [infrastructure, aws]
88
to create, publish, maintain, monitor, and secure APIs at any scale. It replaces our old Amazon ELB based gateway to improve
99
developer experience and improve the security of our APIs. It is used in various places to expose our services to the public internet.
1010
For new projects only the Amazon Api Gateway should be used to expose services to the public internet. All existing projects should be migrated to the Amazon Api Gateway.
11-
```
11+

radar/2024-01-02/amazon_cloudfront.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: [infrastructure, aws]
77
[Amazon CloudFront](https://aws.amazon.com/cloudfront/) securely delivers content with low latency and high transfer speeds.
88
We use it for our [own cdn](https://cdn.flaconi.net) to deliver static files and assets to our users. It is also in front
99
of our api gateway to provide caching for some api endpoints and to reduce the load on our backend services.
10-
```
10+

radar/2024-01-02/amazon_dynamodb.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: [infrastructure, aws]
77
[Amazon DynamoDB](https://aws.amazon.com/dynamodb/) is a serverless, NoSQL, fully managed database with single-digit millisecond performance at any scale.
88
We use it for projects where we need a NoSQL database and do not want to manage the database ourselves.
99
For new projects always a managed database should be used, but the choice between Amazon RDS and Amazon DynamoDB should be made based on the requirements of the project.
10-
```
10+

radar/2024-01-02/amazon_ecs.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ tags: [infrastructure, aws]
88
helps you to more efficiently deploy, manage, and scale containerized applications.
99
Currently, we are using it in a small amount of projects. We are still evaluating the service and its benefits for our use cases.
1010
We see a potential to use it as a replacement for costly lambda functions in some projects.
11-
```
11+

radar/2024-01-02/amazon_elastic_cache_redis.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ tags: [infrastructure, aws]
66
---
77
[Amazon ElastiCache Redis](https://aws.amazon.com/elasticache/redis/) is an in-memory data store that provides microsecond latency to power internet-scale, real-time applications.
88
We use that mostly in api facing services to cache data that is expensive to compute or retrieve.
9-
```
9+

radar/2024-01-02/amazon_lambda.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: [infrastructure, aws]
77
[Amazon Lambda](https://aws.amazon.com/lambda/) is a compute service that runs your code in response to events and automatically
88
manages the compute resources, making it the fastest way to turn an idea into a modern, production, serverless applications.
99
We use it for nearly all of our services.
10-
```
10+

radar/2024-01-02/amazon_rds_mysql.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: [infrastructure, aws]
77
[Amazon RDS for MySQL](https://aws.amazon.com/rds/mysql) is an easy to manage relational database optimized for total cost of ownership.
88
We only use it for some projects where we need a relational database and do not want to manage the database ourselves.
99
For new projects always a managed database should be used, but the choice between Amazon RDS and Amazon DynamoDB should be made based on the requirements of the project.
10-
```
10+

radar/2024-01-02/amazon_s3.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ tags: [infrastructure, aws]
66
---
77
[Amazon S3](https://aws.amazon.com/s3/) is an object storage built to retrieve any amount of data from anywhere.
88
It is used in various places to store securely data for our various backend services or serve as a storage for static files.
9-
```
9+

radar/2024-01-02/amazon_sns.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ tags: [infrastructure, aws]
88
It was used in the beginning to allow a simple way to send commercetools notifications to our services, but was
99
replaced by Amazon EventBridge. It is still used in some places, but should be replaced by Amazon EventBridge where possible.
1010
New Projects should not use Amazon SNS anymore.
11-
```
11+

radar/2024-01-02/amazon_sqs.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ tags: [infrastructure, aws]
88
It is used in various places to decouple services and allow them to communicate asynchronously.
99
It is used a lot in combination with Amazon Lambda, also step functions and EventBridge Pipes are using it.
1010
When ever you need to decouple services and want the ability to retry errors in processing later, Amazon SQS is a good choice.
11-
```
11+

radar/2024-01-02/amazon_step_functions.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ Step Functions is a good choice for simple processes like CRUD operations agains
1010
It is also a good choice for more complex workflows where only a few steps are run inside a lambda function. That
1111
overall reduces the maintenance overhead of lambda services as they become much smaller and less complex. Also,
1212
Step Functions visualizes the workflow in a state machine, which makes it easier to understand and debug.
13-
```
13+

radar/2024-01-02/cloudflare.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ tags: [infrastructure]
66
---
77
[Cloudflare](https://www.cloudflare.com) is used as our dns provider and for caching and security features.
88
It is used in front of our web shops for the various markets.
9-
```
9+

radar/2024-01-02/continuous_integration.md

-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,3 @@ after which automated builds and tests are run.
1010

1111
The webshop has a fully automated end-to-end testing suite which is executed in CI and must pass before any code change can be released to production.
1212
For our backend services, we use GitHub Actions to run our CI/CD pipelines. Only in cases of success a pull request can be merged to the main branch.
13-
```

radar/2024-01-02/ct_node_client.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: [engineering, backend, library]
77
[Commercetools Node Client](https://github.com/flaconi/ct-node-client) is a sharded library for commercetools.
88
It is a wrapper around the commercetools node.js SDK. It contains optioned setup for our backend services.
99
It should be used in all projects that are written in Node.js.
10-
```
10+

radar/2024-01-02/eslint.md

-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,3 @@ tags: []
66
---
77
[ESLint](https://eslint.org/) statically analyzes your code to quickly find problems.
88
It is built into most text editors and you can run ESLint as part of your continuous integration pipeline.
9-
```

radar/2024-01-02/github.md

-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,3 @@ tags: []
77
[GitHub](https://github.com) is a web-based platform that uses Git for version control and collaboration, allowing developers to store,
88
manage, and share code repositories. It provides tools for issue tracking, project management, and team collaboration,
99
making it easier for individuals and teams to work on software projects together.
10-
```

radar/2024-01-02/github_actions.md

-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@ ring: adopt
55
tags: []
66
---
77
[GitHub Actions](https://github.com/features/actions) is used extensively for Continuous Integration (CI) across Flaconi including testing and releasing.
8-
```

radar/2024-01-02/github_copilot.md

-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,3 @@ tags: []
88
Integrated into code editors like Intellij, it suggests code snippets, functions, and even whole lines as you type, based on natural
99
language prompts or existing code. Copilot learns from public code repositories, helping developers speed up coding, explore new libraries,
1010
and reduce repetitive work.
11-
```

radar/2024-01-02/iac.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: []
77
Infrastructure as code (IaC) is the ability to provision and support your computing infrastructure using code instead of manual processes and settings. Any application environment requires many infrastructure components like operating systems, database connections, and storage. Developers have to regularly set up, update, and maintain the infrastructure to develop, test, and deploy applications.
88

99
Manual infrastructure management is time-consuming and prone to error—especially when you manage applications at scale. Infrastructure as code lets you define your infrastructure's desired state without including all the steps to get to that state. It automates infrastructure management so developers can focus on building and improving applications instead of managing environments. Organizations use infrastructure as code to control costs, reduce risks, and respond with speed to new business opportunities.
10-
```
10+

radar/2024-01-02/java.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ tags: [engineering, backend]
88
To reduce the number of programming languages in use, we recommend to reduce the use of Java. Java is a great language
99
, but in engineering we have good knowledge in Node.js. Also, we maintain sharded libraries for
1010
various use cases, and we need to maintain and implement them also for java.
11-
```
11+

radar/2024-01-02/monitoring_service.md

-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,3 @@ tags: [monitoring]
77
[Monitoring Service](https://github.com/Flaconi/monitoring-service) creating NewRelic alerts and dashboards for the given definitions per repo.
88
It is invoked through a GitHub workflow and handles at the moment custom alerts static and baseline, it also provides
99
a json schema to be used by the GitHub action to check if the monitoring definitions are valid.
10-
```

radar/2024-01-02/monoliths.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: []
77
A monolithic architecture is a traditional model of a software program, which is built as a unified unit that is self-contained
88
and independent of other applications. The word “monolith” is often attributed to something large and glacial,
99
which isn’t far from the truth of a monolith architecture for software design.
10-
```
10+

radar/2024-01-02/node_logger.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ tags: [engineering, backend, library]
77
[Node Logger](https://github.com/Flaconi/lib-logger/tree/master/packages/node-logger) is a sharded library and wrapper around
88
[winston](https://github.com/winstonjs/winston). It contains best practices for logging in our backend services and also
99
a fingers crossed logger. It should be used in all projects that are written in Node.js.
10-
```
10+

radar/2024-01-02/nodejs.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ tags: [engineering, backend]
88
[Node.js](https://nodejs.org/en) is an open source, no browser JavaScript execution runtime.
99
In the engineering department, it is used for various backend services and microservices powered by Express.js in
1010
our AWS Lambda Environment.
11-
```
11+

radar/2024-01-02/python.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ tags: [engineering, backend]
88
To reduce the number of programming languages in use, we recommend to reduce the use of Python. Python is a great language
99
and perfect for data science, but in engineering we have good knowledge in nodejs. Also, we maintain sharded libraries for
1010
various use cases, and we need to maintain and implement them also for python.
11-
```
11+

radar/2024-01-02/shared_libraries.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ tags: []
66
---
77
With the creation of so many microservices, it is inevitable that we end up creating similar functionality.
88
Where possible we should look to create shared libraries to enable reuse of common functionality.
9-
```
9+

radar/2024-01-02/template_projects.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ tags: []
66
---
77
It is important that we standardise the approach we take when setting up new services, and where appropriate we supply template projects to facilitate this.
88
Currently, we have only one for Node.js based services: https://github.com/Flaconi/nodejs-api-lambda-boilerplate
9-
```
9+

radar/2024-01-02/terragrunt.md

-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@ ring: adopt
55
tags: []
66
---
77
[Terragrunt](https://terragrunt.gruntwork.io/) is a flexible orchestration tool that allows Infrastructure as Code to scale.
8-
```

radar/2024-01-02/typescript.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ tags: [engineering, backend]
88
[TypeScript](https://www.typescriptlang.org/) is a language that gets transpiled to native JavaScript code.
99
It is a superset of JavaScript and adds static typing to the language. This makes it easier to catch errors.
1010
It is currently used in all our Node.js projects and is the preferred language for new projects.
11-
```
11+

0 commit comments

Comments
 (0)