Merge pull request #45 from AOEpeople/v3

Release V3
This commit is contained in:
Bastian
2019-12-20 15:08:47 +01:00
committed by GitHub
79 changed files with 675 additions and 21 deletions

1
.gitignore vendored
View File

@@ -4,3 +4,4 @@ dist
node_modules
npm-debug.log
yarn-error.log
aoe_technology_radar.iml

View File

@@ -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',
};

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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
View 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).

View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View File

@@ -0,0 +1,7 @@
---
title: "Akka Streams"
ring: adopt
quadrant: languages-and-frameworks
featured: false
---

View File

@@ -0,0 +1,6 @@
---
title: "Alpakka"
ring: adopt
quadrant: languages-and-frameworks
---

3
radar/2019-11-01/ant.md Normal file
View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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.

View 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).

View 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.

View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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.

View 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.

View 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')
})
})
```

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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).

View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

11
radar/2019-11-01/falco.md Normal file
View 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.

View 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.

View 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
View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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/

View File

@@ -0,0 +1,7 @@
---
title: "Gitlab CI"
ring: adopt
quadrant: tools
---
Moved to "adopt".

View 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.

View File

@@ -0,0 +1,8 @@
---
title: "Go / Golang"
ring: adopt
quadrant: languages-and-frameworks
---
We have moved Go to "adopt".

View 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.

View 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))

View 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
View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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
View 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.

View 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.

View File

@@ -0,0 +1,6 @@
---
title: "Infrastructure as Code"
ring: adopt
quadrant: platforms-and-aoe-services
---

View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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.

View 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".

View 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.

View 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
View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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/

View 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.

View 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/#/)

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View File

@@ -0,0 +1,6 @@
---
title: "Ports and Adapters"
ring: adopt
quadrant: methods-and-patterns
---

View 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.

View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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
View 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

View 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".

View File

@@ -0,0 +1,8 @@
---
title: "Self-service infrastructure"
ring: trial
quadrant: platforms-and-aoe-services
---
Moved to "trial".

View 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.

View 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".

View 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.

View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View File

@@ -0,0 +1,3 @@
---
featured: false
---

View 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.

View 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.

View 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
View 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.

View File

@@ -0,0 +1,3 @@
---
featured: false
---

3
radar/2019-11-01/yarn.md Normal file
View File

@@ -0,0 +1,3 @@
---
featured: false
---