1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,3 +4,4 @@ dist
|
||||
node_modules
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
aoe_technology_radar.iml
|
||||
|
||||
@@ -32,7 +32,7 @@ export const rings = [
|
||||
const messages = {
|
||||
'languages-and-frameworks': 'Languages & Frameworks',
|
||||
'methods-and-patterns': 'Methods & Patterns',
|
||||
'platforms-and-aoe-services': 'Platforms and AOE Services',
|
||||
'platforms-and-aoe-services': 'Platforms and Operations',
|
||||
'tools': 'Tools',
|
||||
};
|
||||
|
||||
|
||||
@@ -39,7 +39,6 @@ export default function PageHelp({ leaving, onLeave, ...props }) {
|
||||
<li><strong>Assess:</strong> We have tried it out and we find it promising. We recommend having a look at these items when you face a specific need for the technology in your project.</li>
|
||||
<li><strong>Hold:</strong> This category is a bit special. Unlike the others, we recommend to stop doing or using something. That does not mean that there are bad and it often might be ok to use them in existing projects. But we move things here if we think we shouldn't do them anymore - because we see better options or alternatives now.</li>
|
||||
</ul>
|
||||
<p>We also maintain a short list of useful tools - that are not worth putting on the radar - but that can belong in everyone's "toolbox". We call the list of these technologies the AOE Toolbox and you can find information about them here: <a href="aoe-toolbox.html">AOE Toolbox</a></p>
|
||||
<p>Contributions and source code of the radar are on github: <a href="https://github.com/AOEpeople/aoe_technology_radar" target="_blank">AOE Tech Radar on Github</a></p>
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import React from 'react';
|
||||
import PageIndex from './PageIndex';
|
||||
import PageOverview from './PageOverview';
|
||||
import PageHelp from './PageHelp';
|
||||
import PageToolbox from './PageToolbox';
|
||||
import PageQuadrant from './PageQuadrant';
|
||||
import PageItem from './PageItem';
|
||||
import PageItemMobile from './PageItemMobile';
|
||||
@@ -18,9 +17,6 @@ const getPageByName = (items, pageName) => {
|
||||
if (pageName === 'help-and-about-tech-radar') {
|
||||
return PageHelp;
|
||||
}
|
||||
if (pageName === 'aoe-toolbox') {
|
||||
return PageToolbox;
|
||||
}
|
||||
if (quadrants.includes(pageName)) {
|
||||
return PageQuadrant;
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
---
|
||||
title: "Helm/Terraform"
|
||||
ring: trial
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
|
||||
For the infrastructure of our OM3 projects we run multiple Kubernetes clusters, and to orchestrate the infrastructure provisioning we quickly decided to go with Terraform.
|
||||
Terraform allows us to easily manage our infrastructure, from AWS EC2 instances to RabbitMQ message queues.
|
||||
Also, the Kops installer for Kubernetes on AWS uses Terraform as its main building brick, and we can trigger Kops via Terraform.
|
||||
|
||||
For managing deployments within Kubernetes we use Helm, which makes templating Kubernetes configuration files super easy (also known as Helm charts).
|
||||
|
||||
We bring both tools together to manage similar parts of the infrastructure, for example a shared file with domainname to application mappings allows us to provision Route 53 DNS entries via Terraform and then roll out Kubernetes Ingress definitions with the appropriate hostname to service mapping via Helm.
|
||||
8
radar/2018-03-01/helm.md
Normal file
8
radar/2018-03-01/helm.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Helm"
|
||||
ring: trial
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
|
||||
For managing deployments within Kubernetes we use Helm, which makes templating Kubernetes configuration files super easy (also known as Helm charts).
|
||||
12
radar/2018-03-01/terraform.md
Normal file
12
radar/2018-03-01/terraform.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "Terraform"
|
||||
ring: trial
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
|
||||
For the infrastructure of our OM3 projects we run multiple Kubernetes clusters, and to orchestrate the infrastructure provisioning we quickly decided to go with Terraform.
|
||||
Terraform allows us to easily manage our infrastructure, from AWS EC2 instances to RabbitMQ message queues.
|
||||
Also, the Kops installer for Kubernetes on AWS uses Terraform as its main building brick, and we can trigger Kops via Terraform.
|
||||
|
||||
We bring terraform together with [Helm](/tools/helm.html) to manage similar parts of the infrastructure, for example a shared file with domainname to application mappings allows us to provision Route 53 DNS entries via Terraform and then roll out Kubernetes Ingress definitions with the appropriate hostname to service mapping via Helm.
|
||||
3
radar/2019-11-01/akeneo.md
Normal file
3
radar/2019-11-01/akeneo.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
7
radar/2019-11-01/akka-streams.md
Normal file
7
radar/2019-11-01/akka-streams.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: "Akka Streams"
|
||||
ring: adopt
|
||||
quadrant: languages-and-frameworks
|
||||
featured: false
|
||||
|
||||
---
|
||||
6
radar/2019-11-01/alpakka.md
Normal file
6
radar/2019-11-01/alpakka.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: "Alpakka"
|
||||
ring: adopt
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
3
radar/2019-11-01/ant.md
Normal file
3
radar/2019-11-01/ant.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
5
radar/2019-11-01/anypoint-platform.md
Normal file
5
radar/2019-11-01/anypoint-platform.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
|
||||
Recently our teams migrated some project from anypoint to ["Apache Camel"](/tools/apache-camel.html) or use ["Alpakka"](/tools/alpakka.html) for integration work.
|
||||
9
radar/2019-11-01/aoe-sso.md
Normal file
9
radar/2019-11-01/aoe-sso.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "AOE SSO"
|
||||
ring: adopt
|
||||
quadrant: platforms-and-aoe-services
|
||||
|
||||
---
|
||||
To improve security and user experience we decided to install an organisation wide SSO and use OpenID Connect integrate with existing tools.
|
||||
We use [Keycloak](/tools/keycloak.html) as the SSO server, which is backed by our LDAP.
|
||||
This also helps to implement new infrastructure security based on ["BeyondCorp"](/methods-and-patterns/beyondcorp.html).
|
||||
10
radar/2019-11-01/apache-camel.md
Normal file
10
radar/2019-11-01/apache-camel.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Apache Camel"
|
||||
ring: trial
|
||||
quadrant: languages-and-frameworks
|
||||
featured: false
|
||||
---
|
||||
|
||||
["Camel"](https://camel.apache.org/) is an open source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data.
|
||||
|
||||
Our teams are using Apache Camel as API Gateway that offers APIs and takes care of Federation to various Backends as well as Authorisation tasks.
|
||||
9
radar/2019-11-01/apollo-client.md
Normal file
9
radar/2019-11-01/apollo-client.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Apollo Client"
|
||||
ring: trial
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
|
||||
The [Apollo Client](https://github.com/apollographql/apollo-client) is a tool to efficiently work together with an GraphQL server.
|
||||
It makes it easy to run your queries and mutations, cache results, brings tooling to download schemas and generate types to name a few of the useful features.
|
||||
3
radar/2019-11-01/asciidoc.md
Normal file
3
radar/2019-11-01/asciidoc.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
3
radar/2019-11-01/aws-lambda.md
Normal file
3
radar/2019-11-01/aws-lambda.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
12
radar/2019-11-01/beyondcorp.md
Normal file
12
radar/2019-11-01/beyondcorp.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "BeyondCorp"
|
||||
ring: trial
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
|
||||
BeyondCorp is a Zero Trust framework that evolved at Google.
|
||||
With the surge of cloud technologies and micro services the network perimeter is ever disappearing.
|
||||
This provides challenges for authentication of subjects that used to heavily rely on network segments.
|
||||
With Zero Trust no assumption is made about how far something can be trusted, everything is untrusted by default and authentication and authorisation happens all the time, not just once.
|
||||
While network segments and VPN connections may still have relevance in specific areas AOE is increasingly implementing BeyondCorp in all its components and services with implementing OAuth and OpenID Connect.
|
||||
3
radar/2019-11-01/blameless-post-mortems.md
Normal file
3
radar/2019-11-01/blameless-post-mortems.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
3
radar/2019-11-01/bower.md
Normal file
3
radar/2019-11-01/bower.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
7
radar/2019-11-01/cockpit.md
Normal file
7
radar/2019-11-01/cockpit.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: "Cockpit"
|
||||
ring: assess
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
[Cockpit](https://getcockpit.com/) is a self-hosted headless and api-driven content management system.
|
||||
8
radar/2019-11-01/container-based-builds.md
Normal file
8
radar/2019-11-01/container-based-builds.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Container-based builds"
|
||||
ring: adopt
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
|
||||
Updated to "adopt". Container based builds has getting to the defacto standard for our pipelines in [Gitlab](/tools/gitlab.html) or other CI Tools.
|
||||
39
radar/2019-11-01/cypress.md
Normal file
39
radar/2019-11-01/cypress.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "Cypress"
|
||||
ring: assess
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
[Cypress](https://www.cypress.io/) is a new front-end testing tool (end2end). It comes as a simple node package and is therefore easy to use and maintain for front-end developers and testers. Cypress has a different approach than selenium, it runs in the browser and in the same loop as the device under test.
|
||||
|
||||
Good:
|
||||
|
||||
* [Open source](https://github.com/cypress-io/cypress)
|
||||
* [Locally installed](https://docs.cypress.io/guides/getting-started/installing-cypress.html#System-requirements)
|
||||
* Straightforward (installed via npm and all tests are written in Javascript)
|
||||
* Good [documentation](https://docs.cypress.io/guides/overview/why-cypress.html#In-a-nutshell) and learning material
|
||||
* Can be run in a [headless mode](https://docs.cypress.io/guides/guides/command-line.html#cypress-run)
|
||||
|
||||
Not so good:
|
||||
|
||||
* No cross-browser testing (only chrome and electron)
|
||||
* Scenarios with multiple browser tabs can not be tested
|
||||
* Relatively new test tool, though it is becoming more popular
|
||||
|
||||
Example of a test :
|
||||
|
||||
```js
|
||||
describe('My First Test', function() {
|
||||
it('Visits the Kitchen Sink', function() {
|
||||
cy.visit('https://example.cypress.io')
|
||||
|
||||
cy.contains('type').click()
|
||||
|
||||
cy.url().should('include', '/commands/actions')
|
||||
|
||||
cy.get('.action-email')
|
||||
.type('fake@email.com')
|
||||
.should('have.value', 'fake@email.com')
|
||||
})
|
||||
})
|
||||
```
|
||||
3
radar/2019-11-01/dagger.md
Normal file
3
radar/2019-11-01/dagger.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
3
radar/2019-11-01/datadog.md
Normal file
3
radar/2019-11-01/datadog.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
11
radar/2019-11-01/distributed-tracing.md
Normal file
11
radar/2019-11-01/distributed-tracing.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Distributed Tracing"
|
||||
ring: trial
|
||||
quadrant: platforms-and-aoe-services
|
||||
|
||||
---
|
||||
|
||||
Distributed Tracing creates visibility over processes spanning multiple applications.
|
||||
In a microservice world where a request or operation involves multiple applications it is helpful to have an overview of what system is involved, at what point.
|
||||
Also visibility of communicated data and errors helps to quickly identify issues in a microservice environment.
|
||||
Our tool of choice is [Jaeger](/platforms-and-aoe-services/jaeger.html) with [B3 Propagation](https://github.com/openzipkin/b3-propagation).
|
||||
26
radar/2019-11-01/event-storming.md
Normal file
26
radar/2019-11-01/event-storming.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
title: "Event Storming"
|
||||
ring: assess
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
|
||||
Event Storming is a method of modeling business processes using domain events.
|
||||
|
||||
With complex business processes, people usually know their part of the process very well.
|
||||
Having people from different departments in one room, allows (and requires!) a conversation.
|
||||
Knowledge silos get opened up. All learnings can be directly visualized.
|
||||
|
||||
We tried this method a couple of times with different sized scopes. We believe it can be of value and has potential.
|
||||
|
||||
## Method Overview
|
||||
It's like brainstorming - with the goal to visualize a business line or process.
|
||||
|
||||
Event Storming is done in a workshop format.
|
||||
|
||||
To get a business process modeled quickly and complete, it's important to get domain experts, developers, UX and
|
||||
everybody else who is involved to some extend in the related business line into one room.
|
||||
With virtually unlimited space for modeling using big paper rolls put onto the walls, equipped with colored stickies
|
||||
and markers, the modeling workshop can start.
|
||||
|
||||
During the workshop, the goal is to model the big picture, without limiting or focusing just on parts of a process.
|
||||
3
radar/2019-11-01/explicit-test-strategy.md
Normal file
3
radar/2019-11-01/explicit-test-strategy.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
11
radar/2019-11-01/falco.md
Normal file
11
radar/2019-11-01/falco.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Falco"
|
||||
ring: assess
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
|
||||
Falco is an open source project for intrusion and abnormality detection for Cloud Native platforms such as Kubernetes.
|
||||
It detects abnormal application behavior and sends alerts via Slack, Fluentd, NATS, and more.
|
||||
|
||||
We are assessing Falco to add another angle to host based intrusion detection and alerting.
|
||||
39
radar/2019-11-01/flamingo.md
Normal file
39
radar/2019-11-01/flamingo.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "Flamingo"
|
||||
ring: adopt
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
|
||||
Flamingo is a high productivity go based framework for rapidly building fast and pluggable web projects.
|
||||
It is used to build scalable and maintainable (web)applications.
|
||||
|
||||
Flamingo is:
|
||||
|
||||
* open source
|
||||
* written in go
|
||||
* easy to learn
|
||||
* fast and flexible
|
||||
|
||||
Go as simple, powerful and typesafe language is great to implement and scale serverside logic.
|
||||
Flamingo has a clean architecture with clear dependencies in mind and offers a typical features and support for nowadays web applications:
|
||||
|
||||
* Powerful Templating Engines. E.g. support for Pug templates with reusable mixins and lightweight scripting.
|
||||
* Configuration concepts using yml and support for multiple areas and contexts
|
||||
* Powerful Dependency Injection
|
||||
* A Module concept for building modular and pluggable applications
|
||||
* Authentication concepts and security middleware
|
||||
* Flexible routing with support for prefix routes and reverse routing
|
||||
* Web Controller Support with: Request / Response / Form Handling etc
|
||||
* Operational Readyness: Logging, (distributed) Tracing, Metrics and Healthchecks with seperate endpoint
|
||||
* Localisation
|
||||
* Commands
|
||||
* Sessionhandling and Management
|
||||
* GraphQL support and therefore support to build nice SPA and PWAs on top of it
|
||||
* Resilience and Caching for external APIs calls.
|
||||
|
||||
Flamingo itself does not contain ORM Mapper or libraries - instead it emphasizes ["ports and adapters"](/methods-and-patterns/ports-and-adapters.html) architecture - so that you have a technology free (domain) model and any possible (and replaceable) persitence behind it.
|
||||
That makes Flamingo useful to build microservices and applications - especially to build "frontends" or portals that require interaction with other (micro) services in a distributed architecture.
|
||||
When sticking to the architectural recommendation you can build modular applications with replaceable adapters that gives you independed testability.
|
||||
|
||||
With **"Flamingo Commerce"** there is an additional active projects that offer rich and flexible features to build modern e-commerce applications.
|
||||
8
radar/2019-11-01/flowtype.md
Normal file
8
radar/2019-11-01/flowtype.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Flow"
|
||||
ring: assess
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
[Flow](https://flow.org/) is a static type checker for JavaScript code. It's goal is to make code faster, smarter,
|
||||
more confidently, and to a bigger scale.
|
||||
9
radar/2019-11-01/flux.md
Normal file
9
radar/2019-11-01/flux.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Flux"
|
||||
ring: assess
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
[Flux](https://facebook.github.io/flux/) is an application architecture for building client-side web applications,
|
||||
which is based on React's composable view components.
|
||||
|
||||
3
radar/2019-11-01/galen.md
Normal file
3
radar/2019-11-01/galen.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
17
radar/2019-11-01/gitflow.md
Normal file
17
radar/2019-11-01/gitflow.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "GitFlow"
|
||||
ring: hold
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
Ever since there are recurring discussions about the version control strategy that a team should use.
|
||||
|
||||
We have also made the experience when new teams start off with using blocking or long lived feature branches (merge late once all review comments are done) it has a negative impact on team performance.
|
||||
|
||||
We recommend to use trunk based development with short lived (<1day) feature branches, because this has shown to support continuous integration and team collaboration the best. However we do accept teams choices to use GitFlow, we just do not try to encourage them in the first place.
|
||||
|
||||
See also:
|
||||
* trunk based development https://trunkbaseddevelopment.com/
|
||||
* https://medium.com/@fagnerbrack/one-commit-one-change-3d10b10cebbf
|
||||
* https://martinfowler.com/bliki/FeatureBranch.html
|
||||
* https://www.continuousdeliveryconsulting.com/blog/organisation-antipattern-build-feature-branching/
|
||||
7
radar/2019-11-01/gitlab-ci.md
Normal file
7
radar/2019-11-01/gitlab-ci.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: "Gitlab CI"
|
||||
ring: adopt
|
||||
quadrant: tools
|
||||
---
|
||||
|
||||
Moved to "adopt".
|
||||
10
radar/2019-11-01/gitlab.md
Normal file
10
radar/2019-11-01/gitlab.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Gitlab"
|
||||
ring: adopt
|
||||
quadrant: tools
|
||||
---
|
||||
|
||||
Moved to "adopt": Gitlab has proven to be a very useful tool for code and the collaboration around it.
|
||||
With [Gitlab CI](/tools/gitlab-ci.html) there is also a powerful tool to automate continuous integration and delivery.
|
||||
|
||||
|
||||
8
radar/2019-11-01/go-lang.md
Normal file
8
radar/2019-11-01/go-lang.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Go / Golang"
|
||||
ring: adopt
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
|
||||
We have moved Go to "adopt".
|
||||
9
radar/2019-11-01/grafana.md
Normal file
9
radar/2019-11-01/grafana.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Grafana"
|
||||
ring: adopt
|
||||
quadrant: platforms-and-aoe-services
|
||||
---
|
||||
|
||||
[Grafana](https://grafana.com//) is an Open Source data visualization platform written in Go and NodeJS. It provides a vast choice of different graph types that can be easily combined into dashboards for displaying any kind of numerical or time-based data.
|
||||
|
||||
At AOE, we usually use Grafana in conjunction with [Prometheus](https://prometheus.io/) or [AWS CloudWatch](https://prometheus.io/) for visualizing both application and infrastructure metrics.
|
||||
22
radar/2019-11-01/graphql.md
Normal file
22
radar/2019-11-01/graphql.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: "GraphQL"
|
||||
ring: adopt
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
|
||||
GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data. GraphQL isn't tied to any specific database or storage engine and is instead backed by your existing code and data.
|
||||
|
||||
GraphQL was developed by Facebook around 2010 and releases 2015.
|
||||
The main challenge it solves is to improve communication between browser and server on high dynamic web apps.
|
||||
|
||||
The advantages are:
|
||||
* schema and schema validation together with a useful type system
|
||||
* the client (browser) controls what data should be send (data reduction)
|
||||
* whith one request you can fetch "all" required data
|
||||
|
||||
We are using it together with [Apollo Client](/tools/apollo-client.html) in our [React.js](/languages-and-frameworks/react.html) based frontend.
|
||||
This way the React components have their relevant GraphQL snippet, defining what data they request or mutate from the "backend for frontend", directly coupled.
|
||||
That makes it transparent what data is available. Apollo takes care of sending an aggregated GraphQL query to the backend.
|
||||
|
||||
The framework [Flamingo offers support for GraphQL](https://docs.flamingo.me/3.%20Flamingo%20Modules/graphql.html) and also Flamingo Commerce offers a full featured GraphQL API for e-commerce features. ([Example GraphQL Console for Commerce](https://demoshop.flamingo.me/en/graphql-console))
|
||||
8
radar/2019-11-01/groovy.md
Normal file
8
radar/2019-11-01/groovy.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Groovy"
|
||||
ring: hold
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
|
||||
Since the rise of Kotlin, we seen no need why to still use Groovy as an alternative to Java running on the JVM.
|
||||
15
radar/2019-11-01/grpc.md
Normal file
15
radar/2019-11-01/grpc.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "GRPC"
|
||||
ring: adopt
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
|
||||
gRPC, "A high-performance, Open Source, universal RPC framework," is a framework to easily connect clients and servers in an RPC setup.
|
||||
gRPC was initially built at Google, and uses protobuf service definitions for method and payload specification.
|
||||
Essentially, this makes it possible to define methods that a server exposes, with either a single payload or an incoming stream - either as a single response or a stream of responses.
|
||||
The definition itself is carried out with the help of protobuf to define message types and method signatures, and then client and server interfaces are compiled for the language(s) you want. Currently there is support for languages such as C++, Java, Python, Go and many more.
|
||||
The shared language-neutral protobuf definition allows you to create all code for all languages automatically and helps with the interoperability of different systems.
|
||||
|
||||
From a technical point of view, gRPC uses HTTP/2 as a transport, directly benefitting from the default TLS encryption.
|
||||
Besides gRPC, other frameworks also use protobuf RPC definitions. These frameworks include twirp from twitch, which makes it easy to change the transport/control layer with only very small changes to the application code.
|
||||
3
radar/2019-11-01/grunt.md
Normal file
3
radar/2019-11-01/grunt.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
5
radar/2019-11-01/hal-hateoas.md
Normal file
5
radar/2019-11-01/hal-hateoas.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
|
||||
We use HAL in cases where we need to link ressources in payloads. HATEOAS has not proven to be very useful in our projects.
|
||||
9
radar/2019-11-01/helm.md
Normal file
9
radar/2019-11-01/helm.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Helm"
|
||||
ring: trial
|
||||
quadrant: platforms-and-aoe-services
|
||||
|
||||
---
|
||||
[Helm](https://helm.sh/) is a package manager for [Kubernetes](https://kubernetes.io/), which simplifies the deployment
|
||||
of applications into a Kubernetes cluster and provides additional features like e.g. versioning and rollbacks.
|
||||
|
||||
5
radar/2019-11-01/hystrix.md
Normal file
5
radar/2019-11-01/hystrix.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
|
||||
Hystrix is not actively mainatined anymore and some of its goals can now be handled with service meshs.
|
||||
6
radar/2019-11-01/infrastructure-as-code.md
Normal file
6
radar/2019-11-01/infrastructure-as-code.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: "Infrastructure as Code"
|
||||
ring: adopt
|
||||
quadrant: platforms-and-aoe-services
|
||||
|
||||
---
|
||||
11
radar/2019-11-01/jaeger.md
Normal file
11
radar/2019-11-01/jaeger.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Jaeger"
|
||||
ring: trial
|
||||
quadrant: platforms-and-aoe-services
|
||||
|
||||
---
|
||||
|
||||
[Jaeger](https://www.jaegertracing.io/) is a tool for [Distributed Tracing](/platforms-and-aoe-services/distributed-tracing.html). Developed at Uber and inspired by Dapper and OpenZipkin it grew into an [Cloud Native Computing Foundation](https://www.cncf.io/) project.
|
||||
|
||||
Jaeger is a great tool for troubleshooting distributed systems, such as microservice architectures. Developers and Operation can quickly see communicaiton between services, and what data is communicated where.
|
||||
Errors in services can be traced to the originating system. Global trace identifiers are communicated using B3 headers. Jaeger supports Zipkin, which allows easy migration von OpenZipkin & co.
|
||||
3
radar/2019-11-01/job-dsl.md
Normal file
3
radar/2019-11-01/job-dsl.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
16
radar/2019-11-01/kotlin.md
Normal file
16
radar/2019-11-01/kotlin.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: "Kotlin"
|
||||
ring: adopt
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
|
||||
Kotlin is used successfully in production by multiple teams.
|
||||
|
||||
Kotlin is 100% interoperable with Java. It means the code can live side-by-side in one code base and interact.
|
||||
From the beginning it was designed with practical thought in mind. So the IDE Support in IntelliJ is really great.
|
||||
|
||||
The Spring Framework Developer put a lot of effort that Springs play well together with Kotlin.
|
||||
|
||||
With it's concise syntax, null safety,
|
||||
Due to its explicit type system, this language is also great replacement for Groovy usage with Gradle.
|
||||
11
radar/2019-11-01/micro-frontends.md
Normal file
11
radar/2019-11-01/micro-frontends.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Micro Frontends"
|
||||
ring: trial
|
||||
quadrant: methods-and-patterns
|
||||
---
|
||||
|
||||
When deciding on a system architecture we are always striving for technology neutralism. This is to allow us to stay
|
||||
flexible with future decisions. Micro Frontends can be a tool to support us with this goal.
|
||||
We favor protocols and methods, such as plain HTML and HTTP, over specific technologies when designing Micro Frontends.
|
||||
|
||||
Since Micro Frontends have proven to allow use move fast and agile, we moved this pattern to "trial".
|
||||
8
radar/2019-11-01/next-js.md
Normal file
8
radar/2019-11-01/next-js.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Next.js"
|
||||
ring: trial
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
|
||||
[Next.js](https://nextjs.org/) is a JavaScript and React based framework which makes use of server side rendering.
|
||||
9
radar/2019-11-01/nosql.md
Normal file
9
radar/2019-11-01/nosql.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "NoSQL"
|
||||
ring: trial
|
||||
quadrant: methods-and-patterns
|
||||
featured: false
|
||||
---
|
||||
|
||||
NoSQL technologies are established solutions that allows for scaling and handling big datasets.
|
||||
We use Technologies like Redis, Elasticsearch and Neo4J but there are many others that are powering the NoSQL space.
|
||||
3
radar/2019-11-01/npm.md
Normal file
3
radar/2019-11-01/npm.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
20
radar/2019-11-01/open-api.md
Normal file
20
radar/2019-11-01/open-api.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: "Open API"
|
||||
ring: adopt
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
|
||||
The OpenAPI Specification is becoming a broadly adopted industry standard for describing modern REST APIs. Other initiatives like RAML have [joined](https://blogs.mulesoft.com/dev/api-dev/open-api-raml-better-together/) the OpenAPI Initiative.
|
||||
|
||||
OpenAPI v2 version is basically the former Swagger - and Swagger provides useful tools for OpenAPI like the online editor and viewer http://editor.swagger.io/
|
||||
We have also found that this version currently have a good tool support accross languages, so you will find API client and server generation tools for a lot of languages, which makes it quite easy to connect to an API that is described in OpenAPI standard.
|
||||
|
||||
|
||||
**OpenAPI v3**
|
||||
|
||||
OpenAPI v3 adds more features to the specification - for example the ability to describe APIs supporting request/callback pattern.
|
||||
|
||||
There is a very good api designer https://www.apicur.io/ and a good mock generator http://microcks.github.io/index.html
|
||||
|
||||
The general tool support is excellent. See https://openapi.tools/
|
||||
10
radar/2019-11-01/packer.md
Normal file
10
radar/2019-11-01/packer.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Packer"
|
||||
ring: adopt
|
||||
quadrant: platforms-and-aoe-services
|
||||
|
||||
---
|
||||
|
||||
Machine images are important for modern deployment pipelines and fast ramp of of new infrastructure.
|
||||
|
||||
We are using [Packer](https://www.packer.io/intro/getting-started/build-image.html) to build so called "Golden images" that are used in our [Infrastructure as Code](/methods-and-patterns/infrastructure-as-code.html) based provisionings.
|
||||
12
radar/2019-11-01/plant-uml.md
Normal file
12
radar/2019-11-01/plant-uml.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "Plant UML"
|
||||
ring: trial
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
|
||||
[PlantUML](https://plantuml.com/) is an open source project that allows to create UML diagrams in a text-based and declarative way.
|
||||
|
||||
Since it is integrated in tools like Confluence, IntelliJ and Gitlab we use it a lot to quickly document results of software design sessions.
|
||||
|
||||
Another similar tools that use just plain javascript to render the diagrams is [mermaid](https://mermaid-js.github.io/mermaid/#/)
|
||||
3
radar/2019-11-01/play-framework.md
Normal file
3
radar/2019-11-01/play-framework.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
6
radar/2019-11-01/ports-and-adapters.md
Normal file
6
radar/2019-11-01/ports-and-adapters.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: "Ports and Adapters"
|
||||
ring: adopt
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
9
radar/2019-11-01/postgres.md
Normal file
9
radar/2019-11-01/postgres.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "PostgreSQL"
|
||||
ring: adopt
|
||||
quadrant: tools
|
||||
featured: false
|
||||
---
|
||||
|
||||
[PostgreSQL](https://www.postgresql.org/) is a powerful, open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.
|
||||
|
||||
10
radar/2019-11-01/postman.md
Normal file
10
radar/2019-11-01/postman.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Postman"
|
||||
ring: trial
|
||||
quadrant: tools
|
||||
featured: false
|
||||
---
|
||||
[Postman](https://www.getpostman.com/) is an API testing and documentation tool. Requests can be bundled into folders
|
||||
and easily be configured to be executed against multiple environments. Responses can be evaluated using the "test" feature.
|
||||
|
||||
Even automated testing is possible using [Newman](https://www.npmjs.com/package/newman) as an addition to Postman.
|
||||
3
radar/2019-11-01/protobuf.md
Normal file
3
radar/2019-11-01/protobuf.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
3
radar/2019-11-01/puppet-environments.md
Normal file
3
radar/2019-11-01/puppet-environments.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
7
radar/2019-11-01/rabbitmq.md
Normal file
7
radar/2019-11-01/rabbitmq.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: "RabbitMQ"
|
||||
ring: adopt
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
RabbitMQ has proven to work very well for messaging in our projects, thats why we updated it to "adopt".
|
||||
10
radar/2019-11-01/raml.md
Normal file
10
radar/2019-11-01/raml.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "RAML"
|
||||
ring: hold
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
|
||||
Since the RAML project has decided to [join](https://blogs.mulesoft.com/dev/api-dev/open-api-raml-better-together/) the OpenAPI initiative and the RAML ecosystem lacks further development and additional tools, we decided to use and recommend using ["OpenAPI specififcation (OAS)"](/tools/open-api.html) as description standard instead.
|
||||
|
||||
RAML still provides advantages in modeling an API through it's more expressive modeling language and can produce OAS
|
||||
15
radar/2019-11-01/reactive-programming.md
Normal file
15
radar/2019-11-01/reactive-programming.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "Reactive Programming"
|
||||
ring: adopt
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
|
||||
The reactive style of programming promotes event-based thinking and modeling --
|
||||
and by that assists in creating more decoupled solutions.
|
||||
|
||||
Synergies arise, when people understand the concepts of this pattern: by using marble diagrams,
|
||||
which are a de-facto standard in visualizing algorithms in a reactive style, a common ground for communication
|
||||
is available regardless of the programming language used.
|
||||
|
||||
When appropriate, we choose more explicitly the Reactive Programming pattern and therefore moved this to "adopt".
|
||||
8
radar/2019-11-01/self-service-infrastructure.md
Normal file
8
radar/2019-11-01/self-service-infrastructure.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Self-service infrastructure"
|
||||
ring: trial
|
||||
quadrant: platforms-and-aoe-services
|
||||
|
||||
---
|
||||
|
||||
Moved to "trial".
|
||||
9
radar/2019-11-01/sonarqube.md
Normal file
9
radar/2019-11-01/sonarqube.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "SonarQube"
|
||||
ring: trial
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
|
||||
At AOE, we are using SonarQube to get a historical overview of the code quality in our Projects. With SonarQube, you can get a quick insight into the condition of your code. It analyzes many languages and provides numerous static analysis rules.
|
||||
SonarQube is also being used for Static Application Security Testing (SAST) which scans our code for potential security vulnerabilities and is an essential element of our Secure Software Development Lifecycle.
|
||||
10
radar/2019-11-01/spring-boot.md
Normal file
10
radar/2019-11-01/spring-boot.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title: "Spring Boot"
|
||||
ring: adopt
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
|
||||
We now have several years of experiences with Spring Boot,
|
||||
and a big projects Microservice Environment runs completely on Spring Boot,
|
||||
so it's time to update it to "adopt".
|
||||
8
radar/2019-11-01/storybook.md
Normal file
8
radar/2019-11-01/storybook.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Storybook"
|
||||
ring: assess
|
||||
quadrant: tools
|
||||
|
||||
---
|
||||
[Storybook](https://storybook.js.org/) is a user interface development environment and playground for UI components. The tool enables developers to create components independently and showcase components interactively in an isolated development environment.
|
||||
Storybook runs outside of the main app so users can develop UI components in isolation without worrying about app specific dependencies and requirements.
|
||||
19
radar/2019-11-01/stride-threat-modeling.md
Normal file
19
radar/2019-11-01/stride-threat-modeling.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: "STRIDE Threat Modeling"
|
||||
ring: trial
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
|
||||
STRIDE is a model of threat groups that helps to identify security threats to any application, component or infrastructure.
|
||||
|
||||
The acronym stands for:
|
||||
|
||||
* Spoofing
|
||||
* Tampering
|
||||
* Repudiation
|
||||
* Information disclosure
|
||||
* Denial of service
|
||||
* Elevation of privilege
|
||||
|
||||
AOE is applying the threat model in collaborative sessions using the [Elevation of Privilege Card Game](https://social.technet.microsoft.com/wiki/contents/articles/285.elevation-of-privilege-the-game.aspx) which helps to spark imagination and makes threats more tangible.
|
||||
3
radar/2019-11-01/styleguide-driven-development.md
Normal file
3
radar/2019-11-01/styleguide-driven-development.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
3
radar/2019-11-01/symfony-components.md
Normal file
3
radar/2019-11-01/symfony-components.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
21
radar/2019-11-01/temporal-modeling.md
Normal file
21
radar/2019-11-01/temporal-modeling.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: "Temporal Modeling"
|
||||
ring: assess
|
||||
quadrant: methods-and-patterns
|
||||
|
||||
---
|
||||
|
||||
Temporal Modeling is way of modeling software systems and components by putting events first.
|
||||
|
||||
The usual way of modeling software is to find structures, things and relations.
|
||||
We try to find the relevant aspects of a domain and put all properties into an object-oriented model.
|
||||
Trying to create a second model for a related business process, having the structural model already in place,
|
||||
might result in a process representation that is tightly coupled with the assumptions built up from the structural
|
||||
model and too far away from reality.
|
||||
|
||||
By focusing on the domain processes first, one can visualize all aspects of a process over time.
|
||||
Having the process visualized, allows to see potential pitfalls or forgotten aspects.
|
||||
With a temporal model at hand, it is easy to create a object-oriented or structural model that perfectly
|
||||
represents all required information.
|
||||
|
||||
We tried this method when tackling big or complex domains.
|
||||
9
radar/2019-11-01/terraform.md
Normal file
9
radar/2019-11-01/terraform.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Terraform"
|
||||
ring: adopt
|
||||
quadrant: platforms-and-aoe-services
|
||||
|
||||
---
|
||||
[Terraform](https://www.terraform.io/) is a tool to manage and provision infrastructure as code.
|
||||
|
||||
Here at AOE we use terraform in multiple teams to provision infrastructure and manage their lifecycle on cloud platforms such as AWS and for platforms such as Kubernetes.
|
||||
7
radar/2019-11-01/typescript.md
Normal file
7
radar/2019-11-01/typescript.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: "Typescript"
|
||||
ring: adopt
|
||||
quadrant: languages-and-frameworks
|
||||
---
|
||||
|
||||
As writing frontend applications becomes more complex, [TypeScript](https://www.typescriptlang.org/) allows us to scale client side code easily, even with large code bases. We use typescript successfully at production for many projects and we are only going to use it even more in the future. We highly recommend using typescript over javascript, therefore we have decided to move it to adopt.
|
||||
7
radar/2019-11-01/vuex.md
Normal file
7
radar/2019-11-01/vuex.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: "Vuex"
|
||||
ring: assess
|
||||
quadrant: languages-and-frameworks
|
||||
|
||||
---
|
||||
[Vuex](https://vuex.vuejs.org/) is a state management pattern + library for Vue.js applications.
|
||||
3
radar/2019-11-01/xmlunit.md
Normal file
3
radar/2019-11-01/xmlunit.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
3
radar/2019-11-01/yarn.md
Normal file
3
radar/2019-11-01/yarn.md
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
featured: false
|
||||
---
|
||||
Reference in New Issue
Block a user