From df3582eed8fa41e9dc7d25db5164c701f025f7d7 Mon Sep 17 00:00:00 2001 From: Bernhard Behrendt Date: Mon, 30 Apr 2018 12:27:45 +0200 Subject: [PATCH 01/22] New article skeletons for complete AOE tech radar --- radar/2017-03-01/adr.md | 6 ++++++ radar/2017-03-01/alpakka.md | 6 ++++++ radar/2017-03-01/app-and-business-metrics.md | 6 ++++++ radar/2017-03-01/automatic-linting.md | 6 ++++++ radar/2017-03-01/blameless-post-mortems.md | 6 ++++++ radar/2017-03-01/consumer-based-contract.md | 6 ++++++ radar/2017-03-01/crc.md | 6 ++++++ radar/2017-03-01/google-container-engine.md | 6 ++++++ radar/2017-03-01/grafana.md | 4 ++++ radar/2017-03-01/graph-ql.md | 6 ++++++ radar/2017-03-01/grpc.md | 4 ++++ radar/2017-03-01/helm-terraform.md | 6 ++++++ radar/2017-03-01/invision.md | 6 ++++++ radar/2017-03-01/mkdocks.md | 6 ++++++ radar/2017-03-01/oauth-and-secure-apis.md | 6 ++++++ radar/2017-03-01/pact.md | 6 ++++++ radar/2017-03-01/part-adapters.md | 6 ++++++ radar/2017-03-01/self-service-infrastructure.md | 6 ++++++ radar/2017-03-01/spark.md | 6 ++++++ radar/2017-03-01/swift.md | 6 ++++++ yarn.lock | 6 +++--- 21 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 radar/2017-03-01/adr.md create mode 100644 radar/2017-03-01/alpakka.md create mode 100644 radar/2017-03-01/app-and-business-metrics.md create mode 100644 radar/2017-03-01/automatic-linting.md create mode 100644 radar/2017-03-01/blameless-post-mortems.md create mode 100644 radar/2017-03-01/consumer-based-contract.md create mode 100644 radar/2017-03-01/crc.md create mode 100644 radar/2017-03-01/google-container-engine.md create mode 100644 radar/2017-03-01/grafana.md create mode 100644 radar/2017-03-01/graph-ql.md create mode 100644 radar/2017-03-01/grpc.md create mode 100644 radar/2017-03-01/helm-terraform.md create mode 100644 radar/2017-03-01/invision.md create mode 100644 radar/2017-03-01/mkdocks.md create mode 100644 radar/2017-03-01/oauth-and-secure-apis.md create mode 100644 radar/2017-03-01/pact.md create mode 100644 radar/2017-03-01/part-adapters.md create mode 100644 radar/2017-03-01/self-service-infrastructure.md create mode 100644 radar/2017-03-01/spark.md create mode 100644 radar/2017-03-01/swift.md diff --git a/radar/2017-03-01/adr.md b/radar/2017-03-01/adr.md new file mode 100644 index 0000000..c8671d7 --- /dev/null +++ b/radar/2017-03-01/adr.md @@ -0,0 +1,6 @@ +--- +title: "ADR" +ring: assess +quadrant: pattern + +--- \ No newline at end of file diff --git a/radar/2017-03-01/alpakka.md b/radar/2017-03-01/alpakka.md new file mode 100644 index 0000000..75e393c --- /dev/null +++ b/radar/2017-03-01/alpakka.md @@ -0,0 +1,6 @@ +--- +title: "Alpakka" +ring: assess +quadrant: languages-and-frameworks + +--- \ No newline at end of file diff --git a/radar/2017-03-01/app-and-business-metrics.md b/radar/2017-03-01/app-and-business-metrics.md new file mode 100644 index 0000000..fb91028 --- /dev/null +++ b/radar/2017-03-01/app-and-business-metrics.md @@ -0,0 +1,6 @@ +--- +title: "Application and business metrics" +ring: TBD +quadrant: pattern + +--- \ No newline at end of file diff --git a/radar/2017-03-01/automatic-linting.md b/radar/2017-03-01/automatic-linting.md new file mode 100644 index 0000000..3cd1998 --- /dev/null +++ b/radar/2017-03-01/automatic-linting.md @@ -0,0 +1,6 @@ +--- +title: "Automatic linting" +ring: trial +quadrant: pattern + +--- \ No newline at end of file diff --git a/radar/2017-03-01/blameless-post-mortems.md b/radar/2017-03-01/blameless-post-mortems.md new file mode 100644 index 0000000..0e81c9d --- /dev/null +++ b/radar/2017-03-01/blameless-post-mortems.md @@ -0,0 +1,6 @@ +--- +title: "Blameless post mortems" +ring: TBD +quadrant: pattern + +--- \ No newline at end of file diff --git a/radar/2017-03-01/consumer-based-contract.md b/radar/2017-03-01/consumer-based-contract.md new file mode 100644 index 0000000..15e70f2 --- /dev/null +++ b/radar/2017-03-01/consumer-based-contract.md @@ -0,0 +1,6 @@ +--- +title: "Consumer Based Contract" +ring: TBD +quadrant: pattern + +--- \ No newline at end of file diff --git a/radar/2017-03-01/crc.md b/radar/2017-03-01/crc.md new file mode 100644 index 0000000..dec1b84 --- /dev/null +++ b/radar/2017-03-01/crc.md @@ -0,0 +1,6 @@ +--- +title: "CRC" +ring: assess +quadrant: pattern + +--- \ No newline at end of file diff --git a/radar/2017-03-01/google-container-engine.md b/radar/2017-03-01/google-container-engine.md new file mode 100644 index 0000000..c965220 --- /dev/null +++ b/radar/2017-03-01/google-container-engine.md @@ -0,0 +1,6 @@ +--- +title: "Google container engine" +ring: trial +quadrant: platforms-and-aoe-services + +--- \ No newline at end of file diff --git a/radar/2017-03-01/grafana.md b/radar/2017-03-01/grafana.md new file mode 100644 index 0000000..a79f51a --- /dev/null +++ b/radar/2017-03-01/grafana.md @@ -0,0 +1,4 @@ +--- +title: "Grafana" +ring: assess +quadrant: platforms-and-aoe-services \ No newline at end of file diff --git a/radar/2017-03-01/graph-ql.md b/radar/2017-03-01/graph-ql.md new file mode 100644 index 0000000..1103758 --- /dev/null +++ b/radar/2017-03-01/graph-ql.md @@ -0,0 +1,6 @@ +--- +title: "GraphQL" +ring: assess +quadrant: TBD + +--- \ No newline at end of file diff --git a/radar/2017-03-01/grpc.md b/radar/2017-03-01/grpc.md new file mode 100644 index 0000000..1606d6b --- /dev/null +++ b/radar/2017-03-01/grpc.md @@ -0,0 +1,4 @@ +--- +title: "GRPC" +ring: assess +quadrant: TBD \ No newline at end of file diff --git a/radar/2017-03-01/helm-terraform.md b/radar/2017-03-01/helm-terraform.md new file mode 100644 index 0000000..26ddb41 --- /dev/null +++ b/radar/2017-03-01/helm-terraform.md @@ -0,0 +1,6 @@ +--- +title: "Helm- Terraform" +ring: trial +quadrant: TBD + +--- \ No newline at end of file diff --git a/radar/2017-03-01/invision.md b/radar/2017-03-01/invision.md new file mode 100644 index 0000000..020ba0d --- /dev/null +++ b/radar/2017-03-01/invision.md @@ -0,0 +1,6 @@ +--- +title: "Invision" +ring: trial +quadrant: tools + +--- \ No newline at end of file diff --git a/radar/2017-03-01/mkdocks.md b/radar/2017-03-01/mkdocks.md new file mode 100644 index 0000000..4113f6c --- /dev/null +++ b/radar/2017-03-01/mkdocks.md @@ -0,0 +1,6 @@ +--- +title: "MKDOCS" +ring: asses +quadrant: tools + +--- \ No newline at end of file diff --git a/radar/2017-03-01/oauth-and-secure-apis.md b/radar/2017-03-01/oauth-and-secure-apis.md new file mode 100644 index 0000000..eb8a3d6 --- /dev/null +++ b/radar/2017-03-01/oauth-and-secure-apis.md @@ -0,0 +1,6 @@ +--- +title: "Google container engine" +ring: trial +quadrant: pattern + +--- \ No newline at end of file diff --git a/radar/2017-03-01/pact.md b/radar/2017-03-01/pact.md new file mode 100644 index 0000000..ce446b5 --- /dev/null +++ b/radar/2017-03-01/pact.md @@ -0,0 +1,6 @@ +--- +title: "PACT" +ring: assess +quadrant: tools + +--- \ No newline at end of file diff --git a/radar/2017-03-01/part-adapters.md b/radar/2017-03-01/part-adapters.md new file mode 100644 index 0000000..43a2e0f --- /dev/null +++ b/radar/2017-03-01/part-adapters.md @@ -0,0 +1,6 @@ +--- +title: "Port and Adapters" +ring: trial +quadrant: TBD + +--- \ No newline at end of file diff --git a/radar/2017-03-01/self-service-infrastructure.md b/radar/2017-03-01/self-service-infrastructure.md new file mode 100644 index 0000000..b3a43a4 --- /dev/null +++ b/radar/2017-03-01/self-service-infrastructure.md @@ -0,0 +1,6 @@ +--- +title: "Self service infrastructure" +ring: assess +quadrant: pattern + +--- \ No newline at end of file diff --git a/radar/2017-03-01/spark.md b/radar/2017-03-01/spark.md new file mode 100644 index 0000000..e3aa53c --- /dev/null +++ b/radar/2017-03-01/spark.md @@ -0,0 +1,6 @@ +--- +title: "Spark" +ring: asses +quadrant: languages-and-frameworks + +--- \ No newline at end of file diff --git a/radar/2017-03-01/swift.md b/radar/2017-03-01/swift.md new file mode 100644 index 0000000..203f1a5 --- /dev/null +++ b/radar/2017-03-01/swift.md @@ -0,0 +1,6 @@ +--- +title: "Swift" +ring: trial +quadrant: languages-and-frameworks + +--- \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e5aa5ed..9bf713e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2513,9 +2513,9 @@ minimist@^1.2.0: dependencies: minimist "0.0.8" -moment@2.19.2: - version "2.19.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe" +moment@2.19.3: + version "2.19.3" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.3.tgz#bdb99d270d6d7fda78cc0fbace855e27fe7da69f" morgan@^1.6.1: version "1.8.1" From 0b84804ab72efea3f90a8089a81200772594340f Mon Sep 17 00:00:00 2001 From: Bernhard Behrendt Date: Mon, 30 Apr 2018 13:36:48 +0200 Subject: [PATCH 02/22] New article skeletons for complete AOE tech radar --- radar/2017-03-01/security-awareness-training.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 radar/2017-03-01/security-awareness-training.md diff --git a/radar/2017-03-01/security-awareness-training.md b/radar/2017-03-01/security-awareness-training.md new file mode 100644 index 0000000..140d197 --- /dev/null +++ b/radar/2017-03-01/security-awareness-training.md @@ -0,0 +1,4 @@ +--- +title: "Security awareness training" +ring: assess +quadrant: TBD \ No newline at end of file From d9bd283ad5c90b1313abff616232a928fea22d86 Mon Sep 17 00:00:00 2001 From: Carsten Lenz Date: Mon, 30 Apr 2018 15:57:11 +0200 Subject: [PATCH 03/22] Add Alpakka --- radar/2017-10-01/alpakka.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/radar/2017-10-01/alpakka.md b/radar/2017-10-01/alpakka.md index 9bd1cf8..e8c6633 100644 --- a/radar/2017-10-01/alpakka.md +++ b/radar/2017-10-01/alpakka.md @@ -4,3 +4,16 @@ ring: assess quadrant: languages-and-frameworks --- + +When using [Akka Streams](/languages-and-frameworks/akka-streams.html) to build +reactive data transformation services you usually need to connect to several +different services like FTP, S3 buckets, AMQP brokers or different databases. + +[Alpakka](https://developer.lightbend.com/docs/alpakka/current/) provides +integration building blocks for Akka Streams to access these services in a +reactive fashion and also contains transformations for working with XML, CSV or +JSON structured data. + +Akka Streams and Alpakka combined enables us to build small reactive +integration services with minimal resource consumption and good performance and +are good alternative to bigger ESB solutions or integration tools. From 049a5afd887910d1c5bb16de4575caf535be9e3e Mon Sep 17 00:00:00 2001 From: Bernhard Behrendt Date: Mon, 30 Apr 2018 16:14:57 +0200 Subject: [PATCH 04/22] Q3 updates and new (empty articles) --- radar/2017-03-01/app-and-business-metrics.md | 6 ----- radar/2017-03-01/automatic-linting.md | 6 ----- radar/2017-03-01/blameless-post-mortems.md | 6 ----- radar/2017-03-01/consumer-based-contract.md | 6 ----- radar/2017-03-01/elasticsearch.md | 5 +---- radar/2017-03-01/graph-ql.md | 6 ----- radar/2017-03-01/helm-terraform.md | 6 ----- radar/2017-03-01/jest.md | 18 +++------------ radar/2017-03-01/kubernetes.md | 2 +- radar/2017-03-01/part-adapters.md | 6 ----- radar/2017-03-01/pipeline-as-code.md | 2 +- radar/2017-03-01/port-adapters.md | 6 +++++ radar/2017-03-01/puppet-environments.md | 18 +-------------- .../2017-03-01/security-awareness-training.md | 4 ---- radar/2017-03-01/vue.md | 2 +- radar/2017-03-01/wiremock.md | 11 +--------- radar/{2017-03-01 => 2017-10-01}/adr.md | 2 +- radar/2017-10-01/blameless-post-mortems.md | 6 +++++ radar/2017-10-01/consumer-based-contract.md | 6 +++++ radar/{2017-03-01 => 2017-10-01}/crc.md | 2 +- radar/2017-10-01/elasticsearch.md | 9 ++++++++ .../google-container-engine.md | 0 radar/{2017-03-01 => 2017-10-01}/grafana.md | 4 +++- .../alpakka.md => 2017-10-01/graph-ql.md} | 2 +- radar/{2017-03-01 => 2017-10-01}/grpc.md | 4 +++- radar/2017-10-01/helm-terraform.md | 6 +++++ radar/{2017-03-01 => 2017-10-01}/invision.md | 0 radar/2017-10-01/jest.md | 15 +++++++++++-- radar/{2017-03-01 => 2017-10-01}/mkdocks.md | 2 +- .../oauth-and-secure-apis.md | 2 +- radar/{2017-03-01 => 2017-10-01}/pact.md | 0 radar/2017-10-01/puppet-environments.md | 22 +++++++++++++++++++ .../self-service-infrastructure.md | 2 +- radar/{2017-03-01 => 2017-10-01}/spark.md | 2 +- radar/{2017-03-01 => 2017-10-01}/swift.md | 0 radar/2017-10-01/wiremock.md | 15 +++++++++++++ 36 files changed, 105 insertions(+), 106 deletions(-) delete mode 100644 radar/2017-03-01/app-and-business-metrics.md delete mode 100644 radar/2017-03-01/automatic-linting.md delete mode 100644 radar/2017-03-01/blameless-post-mortems.md delete mode 100644 radar/2017-03-01/consumer-based-contract.md delete mode 100644 radar/2017-03-01/graph-ql.md delete mode 100644 radar/2017-03-01/helm-terraform.md delete mode 100644 radar/2017-03-01/part-adapters.md create mode 100644 radar/2017-03-01/port-adapters.md delete mode 100644 radar/2017-03-01/security-awareness-training.md rename radar/{2017-03-01 => 2017-10-01}/adr.md (53%) create mode 100644 radar/2017-10-01/blameless-post-mortems.md create mode 100644 radar/2017-10-01/consumer-based-contract.md rename radar/{2017-03-01 => 2017-10-01}/crc.md (53%) create mode 100644 radar/2017-10-01/elasticsearch.md rename radar/{2017-03-01 => 2017-10-01}/google-container-engine.md (100%) rename radar/{2017-03-01 => 2017-10-01}/grafana.md (51%) rename radar/{2017-03-01/alpakka.md => 2017-10-01/graph-ql.md} (70%) rename radar/{2017-03-01 => 2017-10-01}/grpc.md (50%) create mode 100644 radar/2017-10-01/helm-terraform.md rename radar/{2017-03-01 => 2017-10-01}/invision.md (100%) rename radar/{2017-03-01 => 2017-10-01}/mkdocks.md (66%) rename radar/{2017-03-01 => 2017-10-01}/oauth-and-secure-apis.md (62%) rename radar/{2017-03-01 => 2017-10-01}/pact.md (100%) create mode 100644 radar/2017-10-01/puppet-environments.md rename radar/{2017-03-01 => 2017-10-01}/self-service-infrastructure.md (64%) rename radar/{2017-03-01 => 2017-10-01}/spark.md (73%) rename radar/{2017-03-01 => 2017-10-01}/swift.md (100%) create mode 100644 radar/2017-10-01/wiremock.md diff --git a/radar/2017-03-01/app-and-business-metrics.md b/radar/2017-03-01/app-and-business-metrics.md deleted file mode 100644 index fb91028..0000000 --- a/radar/2017-03-01/app-and-business-metrics.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Application and business metrics" -ring: TBD -quadrant: pattern - ---- \ No newline at end of file diff --git a/radar/2017-03-01/automatic-linting.md b/radar/2017-03-01/automatic-linting.md deleted file mode 100644 index 3cd1998..0000000 --- a/radar/2017-03-01/automatic-linting.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Automatic linting" -ring: trial -quadrant: pattern - ---- \ No newline at end of file diff --git a/radar/2017-03-01/blameless-post-mortems.md b/radar/2017-03-01/blameless-post-mortems.md deleted file mode 100644 index 0e81c9d..0000000 --- a/radar/2017-03-01/blameless-post-mortems.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Blameless post mortems" -ring: TBD -quadrant: pattern - ---- \ No newline at end of file diff --git a/radar/2017-03-01/consumer-based-contract.md b/radar/2017-03-01/consumer-based-contract.md deleted file mode 100644 index 15e70f2..0000000 --- a/radar/2017-03-01/consumer-based-contract.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Consumer Based Contract" -ring: TBD -quadrant: pattern - ---- \ No newline at end of file diff --git a/radar/2017-03-01/elasticsearch.md b/radar/2017-03-01/elasticsearch.md index 9378ce0..76e7ec4 100644 --- a/radar/2017-03-01/elasticsearch.md +++ b/radar/2017-03-01/elasticsearch.md @@ -3,7 +3,4 @@ title: "Elasticsearch" ring: trial quadrant: platforms-and-aoe-services ---- -Elasticsearch is a REST-based search and analytics engine based on Lucene. Unlike its competitor Apache Solr, it was developed in the beginning with clustering and scaling in mind. It allows you to create complex queries while still delivering results very fast. - -At AOE, we use Elasticsearch for logging as well as our own search solution [Searchperience](http://www.searchperience.com/). We recently moved the Searchperience stack from Solr to Elasticsearch and think this was the right decision. Especially in terms of scaling, ease of use and performance, Elasticsearch really shines. Also, the API design took some of the learnings from Apache SOLR into account - for example, the queryDSL is a powerful way of describing different search use cases with highly flexible support of aggregations, etc. +--- \ No newline at end of file diff --git a/radar/2017-03-01/graph-ql.md b/radar/2017-03-01/graph-ql.md deleted file mode 100644 index 1103758..0000000 --- a/radar/2017-03-01/graph-ql.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "GraphQL" -ring: assess -quadrant: TBD - ---- \ No newline at end of file diff --git a/radar/2017-03-01/helm-terraform.md b/radar/2017-03-01/helm-terraform.md deleted file mode 100644 index 26ddb41..0000000 --- a/radar/2017-03-01/helm-terraform.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Helm- Terraform" -ring: trial -quadrant: TBD - ---- \ No newline at end of file diff --git a/radar/2017-03-01/jest.md b/radar/2017-03-01/jest.md index 8d66c90..b4e18a0 100644 --- a/radar/2017-03-01/jest.md +++ b/radar/2017-03-01/jest.md @@ -1,18 +1,6 @@ --- -title: "Jest " -ring: assess +title: "Jest" +ring: trial quadrant: tools ---- -[Jest](https://facebook.github.io/jest/) is a javascript testing framework by facebook to test javascript code **and** react applications / components. - -We started using Jest (and [watchmen](https://github.com/facebook/watchman)) instead of Karma because it: - -- gives us integrated mocking library -- gives us integrated support for testing "promises" -- gives us integrated code coverage report -- automatically runs tests related to changed files (instead of all tests) -- gives us parallel test execution -- gives us snapshot testing for react components - -It is easy to set up. And even if you have a running setup with karma/chai you can easily replace karma with jest. With a small [workaround](https://medium.com/@RubenOostinga/combining-chai-and-jest-matchers-d12d1ffd0303#.3callo273), chai and jest test matchers work fine together. +--- \ No newline at end of file diff --git a/radar/2017-03-01/kubernetes.md b/radar/2017-03-01/kubernetes.md index 6f32bb2..e84ae85 100644 --- a/radar/2017-03-01/kubernetes.md +++ b/radar/2017-03-01/kubernetes.md @@ -1,6 +1,6 @@ --- title: "Kubernetes" -ring: assess +ring: trial quadrant: platforms-and-aoe-services --- diff --git a/radar/2017-03-01/part-adapters.md b/radar/2017-03-01/part-adapters.md deleted file mode 100644 index 43a2e0f..0000000 --- a/radar/2017-03-01/part-adapters.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Port and Adapters" -ring: trial -quadrant: TBD - ---- \ No newline at end of file diff --git a/radar/2017-03-01/pipeline-as-code.md b/radar/2017-03-01/pipeline-as-code.md index 69c4e0e..e5d2068 100644 --- a/radar/2017-03-01/pipeline-as-code.md +++ b/radar/2017-03-01/pipeline-as-code.md @@ -1,6 +1,6 @@ --- title: "Pipeline as Code" -ring: assess +ring: adopt quadrant: methods-and-patterns --- diff --git a/radar/2017-03-01/port-adapters.md b/radar/2017-03-01/port-adapters.md new file mode 100644 index 0000000..5ce2850 --- /dev/null +++ b/radar/2017-03-01/port-adapters.md @@ -0,0 +1,6 @@ +--- +title: "Port and Adapters" +ring: assess +quadrant: methods-and-patterns + +--- \ No newline at end of file diff --git a/radar/2017-03-01/puppet-environments.md b/radar/2017-03-01/puppet-environments.md index a500aab..6c420d7 100644 --- a/radar/2017-03-01/puppet-environments.md +++ b/radar/2017-03-01/puppet-environments.md @@ -3,20 +3,4 @@ title: "Puppet Environments" ring: assess quadrant: platforms-and-aoe-services ---- - -Puppet ------- - -Puppet is an Open Source configuration management tool. It is used by a wide range of different companies world-wide, e.g. the Wikimedia Foundation, Mozilla, Reddit, CERN, Dell, Rackspace, Twitter, the New York Stock Exchange, PayPal, Disney, Citrix Systems, Spotify, Oracle, the University of California Los Angeles, the University of North Texas, QVC, Intel, Google and others. - -Puppet has been the basic tool to address Continuous Configuration Automation (CCA) in AOE's [Infrastructure as Code](/methods-and-patterns/infrastructure-as-code.html) strategy (IaC) for more than 4 years. - -Puppet Environments -------------------- - -Intended to give projects the means to develop and maintain their own infrastructure, separated and not influenced by other projects, Puppet environments, together with Puppet module versioning and ENC, have been introduced.\ -Puppet Environments are rated "Trial". It supports our strategy of Infrastructure as Code (IaC) and links it to our DevOps approach, enabling project teams to set up and customize their own infrastructure.  - -Teams that want to use the Puppet Environments service from the AOE IT Team will find detailed information about the implemented CI/CD process for this. - +--- \ No newline at end of file diff --git a/radar/2017-03-01/security-awareness-training.md b/radar/2017-03-01/security-awareness-training.md deleted file mode 100644 index 140d197..0000000 --- a/radar/2017-03-01/security-awareness-training.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Security awareness training" -ring: assess -quadrant: TBD \ No newline at end of file diff --git a/radar/2017-03-01/vue.md b/radar/2017-03-01/vue.md index 2f0e308..ea3603f 100644 --- a/radar/2017-03-01/vue.md +++ b/radar/2017-03-01/vue.md @@ -1,6 +1,6 @@ --- title: "Vue.js" -ring: assess +ring: trial quadrant: languages-and-frameworks --- diff --git a/radar/2017-03-01/wiremock.md b/radar/2017-03-01/wiremock.md index 8b03b03..9cc4f7b 100644 --- a/radar/2017-03-01/wiremock.md +++ b/radar/2017-03-01/wiremock.md @@ -3,13 +3,4 @@ title: "Wiremock" ring: trial quadrant: tools ---- -**[WireMock](http://wiremock.org/docs/)** is an HTTP mock server - it can be used to mock APIs for testing. - -At its core, it is a web server that can be prepared to serve canned responses to particular requests (stubbing), and that captures incoming requests so that they can be checked later (verification). It also has an assortment of other useful features including record/playback of interactions with other APIs, injection of faults and delays, simulation of stateful behavior.  - -It can be used as a library by any JVM application, or run as a standalone process either on the same host as the system under test or a remote server. All of WireMock's features are accessible via its REST (JSON) interface and its Java API. Additionally, the mock server can be configured via JSON files. - -At AOE, we use WireMock as a standalone server to mock APIs that are outside our system context to get a stable environment for testing and rapid feedback. Besides the decoupled test and development advantages, the mocked APIs can also be used in contract-based tests. We also use embedded WireMock in functional tests to stub external services. The explicit test of faults are especially helpful in building and testing the [resilience of your application](/methods-and-patterns/resilience-thinking.html). - -Because of the features such as flexible deployment, powerful request matching and record/payback interactions, as well as the fact that the server runs stable in our project environments, we classify WireMock as *trial*. +--- \ No newline at end of file diff --git a/radar/2017-03-01/adr.md b/radar/2017-10-01/adr.md similarity index 53% rename from radar/2017-03-01/adr.md rename to radar/2017-10-01/adr.md index c8671d7..0e1bfe8 100644 --- a/radar/2017-03-01/adr.md +++ b/radar/2017-10-01/adr.md @@ -1,6 +1,6 @@ --- title: "ADR" ring: assess -quadrant: pattern +quadrant: methods-and-patterns --- \ No newline at end of file diff --git a/radar/2017-10-01/blameless-post-mortems.md b/radar/2017-10-01/blameless-post-mortems.md new file mode 100644 index 0000000..baac110 --- /dev/null +++ b/radar/2017-10-01/blameless-post-mortems.md @@ -0,0 +1,6 @@ +--- +title: "Blameless post mortems" +ring: trial +quadrant: methods-and-patterns + +--- \ No newline at end of file diff --git a/radar/2017-10-01/consumer-based-contract.md b/radar/2017-10-01/consumer-based-contract.md new file mode 100644 index 0000000..7e9a699 --- /dev/null +++ b/radar/2017-10-01/consumer-based-contract.md @@ -0,0 +1,6 @@ +--- +title: "Consumer Based Contract" +ring: trial +quadrant: methods-and-patterns + +--- \ No newline at end of file diff --git a/radar/2017-03-01/crc.md b/radar/2017-10-01/crc.md similarity index 53% rename from radar/2017-03-01/crc.md rename to radar/2017-10-01/crc.md index dec1b84..08b8f93 100644 --- a/radar/2017-03-01/crc.md +++ b/radar/2017-10-01/crc.md @@ -1,6 +1,6 @@ --- title: "CRC" ring: assess -quadrant: pattern +quadrant: methods-and-patterns --- \ No newline at end of file diff --git a/radar/2017-10-01/elasticsearch.md b/radar/2017-10-01/elasticsearch.md new file mode 100644 index 0000000..8fd5821 --- /dev/null +++ b/radar/2017-10-01/elasticsearch.md @@ -0,0 +1,9 @@ +--- +title: "Elasticsearch" +ring: adopt +quadrant: platforms-and-aoe-services + +--- +Elasticsearch is a REST-based search and analytics engine based on Lucene. Unlike its competitor Apache Solr, it was developed in the beginning with clustering and scaling in mind. It allows you to create complex queries while still delivering results very fast. + +At AOE, we use Elasticsearch for logging as well as our own search solution [Searchperience](http://www.searchperience.com/). We recently moved the Searchperience stack from Solr to Elasticsearch and think this was the right decision. Especially in terms of scaling, ease of use and performance, Elasticsearch really shines. Also, the API design took some of the learnings from Apache SOLR into account - for example, the queryDSL is a powerful way of describing different search use cases with highly flexible support of aggregations, etc. diff --git a/radar/2017-03-01/google-container-engine.md b/radar/2017-10-01/google-container-engine.md similarity index 100% rename from radar/2017-03-01/google-container-engine.md rename to radar/2017-10-01/google-container-engine.md diff --git a/radar/2017-03-01/grafana.md b/radar/2017-10-01/grafana.md similarity index 51% rename from radar/2017-03-01/grafana.md rename to radar/2017-10-01/grafana.md index a79f51a..6aa77f9 100644 --- a/radar/2017-03-01/grafana.md +++ b/radar/2017-10-01/grafana.md @@ -1,4 +1,6 @@ --- title: "Grafana" ring: assess -quadrant: platforms-and-aoe-services \ No newline at end of file +quadrant: platforms-and-aoe-services + +--- \ No newline at end of file diff --git a/radar/2017-03-01/alpakka.md b/radar/2017-10-01/graph-ql.md similarity index 70% rename from radar/2017-03-01/alpakka.md rename to radar/2017-10-01/graph-ql.md index 75e393c..44d683f 100644 --- a/radar/2017-03-01/alpakka.md +++ b/radar/2017-10-01/graph-ql.md @@ -1,5 +1,5 @@ --- -title: "Alpakka" +title: "GraphQL" ring: assess quadrant: languages-and-frameworks diff --git a/radar/2017-03-01/grpc.md b/radar/2017-10-01/grpc.md similarity index 50% rename from radar/2017-03-01/grpc.md rename to radar/2017-10-01/grpc.md index 1606d6b..588bd2b 100644 --- a/radar/2017-03-01/grpc.md +++ b/radar/2017-10-01/grpc.md @@ -1,4 +1,6 @@ --- title: "GRPC" ring: assess -quadrant: TBD \ No newline at end of file +quadrant: languages-and-frameworks + +--- \ No newline at end of file diff --git a/radar/2017-10-01/helm-terraform.md b/radar/2017-10-01/helm-terraform.md new file mode 100644 index 0000000..515e7e5 --- /dev/null +++ b/radar/2017-10-01/helm-terraform.md @@ -0,0 +1,6 @@ +--- +title: "Helm- Terraform" +ring: assess +quadrant: tools + +--- \ No newline at end of file diff --git a/radar/2017-03-01/invision.md b/radar/2017-10-01/invision.md similarity index 100% rename from radar/2017-03-01/invision.md rename to radar/2017-10-01/invision.md diff --git a/radar/2017-10-01/jest.md b/radar/2017-10-01/jest.md index 3eeea5d..066ef64 100644 --- a/radar/2017-10-01/jest.md +++ b/radar/2017-10-01/jest.md @@ -2,6 +2,17 @@ title: "Jest" ring: adopt quadrant: tools ---- -TODO +--- +[Jest](https://facebook.github.io/jest/) is a javascript testing framework by facebook to test javascript code **and** react applications / components. + +We started using Jest (and [watchmen](https://github.com/facebook/watchman)) instead of Karma because it: + +- gives us integrated mocking library +- gives us integrated support for testing "promises" +- gives us integrated code coverage report +- automatically runs tests related to changed files (instead of all tests) +- gives us parallel test execution +- gives us snapshot testing for react components + +It is easy to set up. And even if you have a running setup with karma/chai you can easily replace karma with jest. With a small [workaround](https://medium.com/@RubenOostinga/combining-chai-and-jest-matchers-d12d1ffd0303#.3callo273), chai and jest test matchers work fine together. diff --git a/radar/2017-03-01/mkdocks.md b/radar/2017-10-01/mkdocks.md similarity index 66% rename from radar/2017-03-01/mkdocks.md rename to radar/2017-10-01/mkdocks.md index 4113f6c..46ecd44 100644 --- a/radar/2017-03-01/mkdocks.md +++ b/radar/2017-10-01/mkdocks.md @@ -1,6 +1,6 @@ --- title: "MKDOCS" -ring: asses +ring: assess quadrant: tools --- \ No newline at end of file diff --git a/radar/2017-03-01/oauth-and-secure-apis.md b/radar/2017-10-01/oauth-and-secure-apis.md similarity index 62% rename from radar/2017-03-01/oauth-and-secure-apis.md rename to radar/2017-10-01/oauth-and-secure-apis.md index eb8a3d6..6b6bbda 100644 --- a/radar/2017-03-01/oauth-and-secure-apis.md +++ b/radar/2017-10-01/oauth-and-secure-apis.md @@ -1,6 +1,6 @@ --- title: "Google container engine" ring: trial -quadrant: pattern +quadrant: methods-and-patterns --- \ No newline at end of file diff --git a/radar/2017-03-01/pact.md b/radar/2017-10-01/pact.md similarity index 100% rename from radar/2017-03-01/pact.md rename to radar/2017-10-01/pact.md diff --git a/radar/2017-10-01/puppet-environments.md b/radar/2017-10-01/puppet-environments.md new file mode 100644 index 0000000..feb5de9 --- /dev/null +++ b/radar/2017-10-01/puppet-environments.md @@ -0,0 +1,22 @@ +--- +title: "Puppet Environments" +ring: trial +quadrant: platforms-and-aoe-services + +--- + +Puppet +------ + +Puppet is an Open Source configuration management tool. It is used by a wide range of different companies world-wide, e.g. the Wikimedia Foundation, Mozilla, Reddit, CERN, Dell, Rackspace, Twitter, the New York Stock Exchange, PayPal, Disney, Citrix Systems, Spotify, Oracle, the University of California Los Angeles, the University of North Texas, QVC, Intel, Google and others. + +Puppet has been the basic tool to address Continuous Configuration Automation (CCA) in AOE's [Infrastructure as Code](/methods-and-patterns/infrastructure-as-code.html) strategy (IaC) for more than 4 years. + +Puppet Environments +------------------- + +Intended to give projects the means to develop and maintain their own infrastructure, separated and not influenced by other projects, Puppet environments, together with Puppet module versioning and ENC, have been introduced.\ +Puppet Environments are rated "Trial". It supports our strategy of Infrastructure as Code (IaC) and links it to our DevOps approach, enabling project teams to set up and customize their own infrastructure.  + +Teams that want to use the Puppet Environments service from the AOE IT Team will find detailed information about the implemented CI/CD process for this. + diff --git a/radar/2017-03-01/self-service-infrastructure.md b/radar/2017-10-01/self-service-infrastructure.md similarity index 64% rename from radar/2017-03-01/self-service-infrastructure.md rename to radar/2017-10-01/self-service-infrastructure.md index b3a43a4..026f6dd 100644 --- a/radar/2017-03-01/self-service-infrastructure.md +++ b/radar/2017-10-01/self-service-infrastructure.md @@ -1,6 +1,6 @@ --- title: "Self service infrastructure" ring: assess -quadrant: pattern +quadrant: methods-and-patterns --- \ No newline at end of file diff --git a/radar/2017-03-01/spark.md b/radar/2017-10-01/spark.md similarity index 73% rename from radar/2017-03-01/spark.md rename to radar/2017-10-01/spark.md index e3aa53c..fb716b2 100644 --- a/radar/2017-03-01/spark.md +++ b/radar/2017-10-01/spark.md @@ -1,6 +1,6 @@ --- title: "Spark" -ring: asses +ring: assess quadrant: languages-and-frameworks --- \ No newline at end of file diff --git a/radar/2017-03-01/swift.md b/radar/2017-10-01/swift.md similarity index 100% rename from radar/2017-03-01/swift.md rename to radar/2017-10-01/swift.md diff --git a/radar/2017-10-01/wiremock.md b/radar/2017-10-01/wiremock.md new file mode 100644 index 0000000..516e494 --- /dev/null +++ b/radar/2017-10-01/wiremock.md @@ -0,0 +1,15 @@ +--- +title: "Wiremock" +ring: adopt +quadrant: tools + +--- +**[WireMock](http://wiremock.org/docs/)** is an HTTP mock server - it can be used to mock APIs for testing. + +At its core, it is a web server that can be prepared to serve canned responses to particular requests (stubbing), and that captures incoming requests so that they can be checked later (verification). It also has an assortment of other useful features including record/playback of interactions with other APIs, injection of faults and delays, simulation of stateful behavior.  + +It can be used as a library by any JVM application, or run as a standalone process either on the same host as the system under test or a remote server. All of WireMock's features are accessible via its REST (JSON) interface and its Java API. Additionally, the mock server can be configured via JSON files. + +At AOE, we use WireMock as a standalone server to mock APIs that are outside our system context to get a stable environment for testing and rapid feedback. Besides the decoupled test and development advantages, the mocked APIs can also be used in contract-based tests. We also use embedded WireMock in functional tests to stub external services. The explicit test of faults are especially helpful in building and testing the [resilience of your application](/methods-and-patterns/resilience-thinking.html). + +Because of the features such as flexible deployment, powerful request matching and record/payback interactions, as well as the fact that the server runs stable in our project environments, we classify WireMock as *trial*. From c65a00016691d084754b2e0631c96bb06fb13f35 Mon Sep 17 00:00:00 2001 From: Bernhard Behrendt Date: Mon, 30 Apr 2018 16:59:54 +0200 Subject: [PATCH 05/22] Q3 updates and new (empty articles) and deployment update --- .travis.yml | 2 +- radar/2017-10-01/oauth-and-secure-apis.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 93ca555..5feb84f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,4 +28,4 @@ deploy: local_dir: dist detect_encoding: true on: - branch: next \ No newline at end of file + branch: finalize \ No newline at end of file diff --git a/radar/2017-10-01/oauth-and-secure-apis.md b/radar/2017-10-01/oauth-and-secure-apis.md index 6b6bbda..e01d174 100644 --- a/radar/2017-10-01/oauth-and-secure-apis.md +++ b/radar/2017-10-01/oauth-and-secure-apis.md @@ -1,5 +1,5 @@ --- -title: "Google container engine" +title: "oAuth and secure API's" ring: trial quadrant: methods-and-patterns From 2032e0dfe7b0775ed69a3da0c7bd5b7e8a9b6093 Mon Sep 17 00:00:00 2001 From: Bernhard Behrendt Date: Wed, 2 May 2018 09:05:41 +0200 Subject: [PATCH 06/22] Explicitly marked empty files content as "TBD" --- radar/2017-03-01/scala-lang.md | 10 +--------- radar/2017-10-01/adr.md | 3 ++- radar/2017-10-01/blameless-post-mortems.md | 3 ++- radar/2017-10-01/consumer-based-contract.md | 6 ------ radar/2017-10-01/crc.md | 3 ++- radar/2017-10-01/google-container-engine.md | 3 ++- radar/2017-10-01/grafana.md | 3 ++- radar/2017-10-01/graph-ql.md | 6 ------ radar/2017-10-01/grpc.md | 3 ++- radar/2017-10-01/helm-terraform.md | 3 ++- radar/2017-10-01/invision.md | 3 ++- radar/2017-10-01/mkdocks.md | 3 ++- radar/2017-10-01/oauth-and-secure-apis.md | 6 ------ radar/2017-10-01/pact.md | 3 ++- radar/2017-10-01/redux.md | 7 ------- radar/2017-10-01/scala-lang.md | 10 +++++++++- radar/2017-10-01/self-service-infrastructure.md | 3 ++- radar/2017-10-01/spark.md | 3 ++- radar/2017-10-01/swift.md | 6 ------ radar/2017-10-01/yarn.md | 4 +++- 20 files changed, 37 insertions(+), 54 deletions(-) delete mode 100644 radar/2017-10-01/consumer-based-contract.md delete mode 100644 radar/2017-10-01/graph-ql.md delete mode 100644 radar/2017-10-01/oauth-and-secure-apis.md delete mode 100644 radar/2017-10-01/redux.md delete mode 100644 radar/2017-10-01/swift.md diff --git a/radar/2017-03-01/scala-lang.md b/radar/2017-03-01/scala-lang.md index 507a555..30158eb 100644 --- a/radar/2017-03-01/scala-lang.md +++ b/radar/2017-03-01/scala-lang.md @@ -3,12 +3,4 @@ title: "Scala Lang" ring: trial quadrant: languages-and-frameworks ---- - -Besides Java, Scala is the most mature language on the Java Virtual Machine. Its unique blend of object-oriented and functional language features and rich type system with advanced type inference enables one to write concise code. - -It is fully interoperable with Java but has a big ecosystem of tools and frameworks on its own. - -Scala provides one of the best high-level concurrency- and async features on the language level as well as on the framework level, making it the default choice of twitter and the like. - -At AOE, we already use Scala in various projects to create scalable backend systems (Play, Akka) or for batch processing (Spark). +--- \ No newline at end of file diff --git a/radar/2017-10-01/adr.md b/radar/2017-10-01/adr.md index 0e1bfe8..d1f68ea 100644 --- a/radar/2017-10-01/adr.md +++ b/radar/2017-10-01/adr.md @@ -3,4 +3,5 @@ title: "ADR" ring: assess quadrant: methods-and-patterns ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/blameless-post-mortems.md b/radar/2017-10-01/blameless-post-mortems.md index baac110..c172e6d 100644 --- a/radar/2017-10-01/blameless-post-mortems.md +++ b/radar/2017-10-01/blameless-post-mortems.md @@ -3,4 +3,5 @@ title: "Blameless post mortems" ring: trial quadrant: methods-and-patterns ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/consumer-based-contract.md b/radar/2017-10-01/consumer-based-contract.md deleted file mode 100644 index 7e9a699..0000000 --- a/radar/2017-10-01/consumer-based-contract.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Consumer Based Contract" -ring: trial -quadrant: methods-and-patterns - ---- \ No newline at end of file diff --git a/radar/2017-10-01/crc.md b/radar/2017-10-01/crc.md index 08b8f93..0c72dc1 100644 --- a/radar/2017-10-01/crc.md +++ b/radar/2017-10-01/crc.md @@ -3,4 +3,5 @@ title: "CRC" ring: assess quadrant: methods-and-patterns ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/google-container-engine.md b/radar/2017-10-01/google-container-engine.md index c965220..79a6960 100644 --- a/radar/2017-10-01/google-container-engine.md +++ b/radar/2017-10-01/google-container-engine.md @@ -3,4 +3,5 @@ title: "Google container engine" ring: trial quadrant: platforms-and-aoe-services ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/grafana.md b/radar/2017-10-01/grafana.md index 6aa77f9..c381757 100644 --- a/radar/2017-10-01/grafana.md +++ b/radar/2017-10-01/grafana.md @@ -3,4 +3,5 @@ title: "Grafana" ring: assess quadrant: platforms-and-aoe-services ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/graph-ql.md b/radar/2017-10-01/graph-ql.md deleted file mode 100644 index 44d683f..0000000 --- a/radar/2017-10-01/graph-ql.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "GraphQL" -ring: assess -quadrant: languages-and-frameworks - ---- \ No newline at end of file diff --git a/radar/2017-10-01/grpc.md b/radar/2017-10-01/grpc.md index 588bd2b..ce65f75 100644 --- a/radar/2017-10-01/grpc.md +++ b/radar/2017-10-01/grpc.md @@ -3,4 +3,5 @@ title: "GRPC" ring: assess quadrant: languages-and-frameworks ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/helm-terraform.md b/radar/2017-10-01/helm-terraform.md index 515e7e5..852912d 100644 --- a/radar/2017-10-01/helm-terraform.md +++ b/radar/2017-10-01/helm-terraform.md @@ -3,4 +3,5 @@ title: "Helm- Terraform" ring: assess quadrant: tools ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/invision.md b/radar/2017-10-01/invision.md index 020ba0d..3e175a4 100644 --- a/radar/2017-10-01/invision.md +++ b/radar/2017-10-01/invision.md @@ -3,4 +3,5 @@ title: "Invision" ring: trial quadrant: tools ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/mkdocks.md b/radar/2017-10-01/mkdocks.md index 46ecd44..1699e47 100644 --- a/radar/2017-10-01/mkdocks.md +++ b/radar/2017-10-01/mkdocks.md @@ -3,4 +3,5 @@ title: "MKDOCS" ring: assess quadrant: tools ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/oauth-and-secure-apis.md b/radar/2017-10-01/oauth-and-secure-apis.md deleted file mode 100644 index e01d174..0000000 --- a/radar/2017-10-01/oauth-and-secure-apis.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "oAuth and secure API's" -ring: trial -quadrant: methods-and-patterns - ---- \ No newline at end of file diff --git a/radar/2017-10-01/pact.md b/radar/2017-10-01/pact.md index ce446b5..ff84219 100644 --- a/radar/2017-10-01/pact.md +++ b/radar/2017-10-01/pact.md @@ -3,4 +3,5 @@ title: "PACT" ring: assess quadrant: tools ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/redux.md b/radar/2017-10-01/redux.md deleted file mode 100644 index d234fa4..0000000 --- a/radar/2017-10-01/redux.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Redux" -ring: adopt -quadrant: languages-and-frameworks ---- - -TODO diff --git a/radar/2017-10-01/scala-lang.md b/radar/2017-10-01/scala-lang.md index 1e10bb7..8a27b7e 100644 --- a/radar/2017-10-01/scala-lang.md +++ b/radar/2017-10-01/scala-lang.md @@ -2,5 +2,13 @@ title: "Scala Lang" ring: adopt quadrant: languages-and-frameworks + --- -Scala is used in many projects here at AOE and therefore we moved it into the adopt level. \ No newline at end of file + +Besides Java, Scala is the most mature language on the Java Virtual Machine. Its unique blend of object-oriented and functional language features and rich type system with advanced type inference enables one to write concise code. + +It is fully interoperable with Java but has a big ecosystem of tools and frameworks on its own. + +Scala provides one of the best high-level concurrency- and async features on the language level as well as on the framework level, making it the default choice of twitter and the like. + +At AOE, we already use Scala in various projects to create scalable backend systems (Play, Akka) or for batch processing (Spark). diff --git a/radar/2017-10-01/self-service-infrastructure.md b/radar/2017-10-01/self-service-infrastructure.md index 026f6dd..a3986a5 100644 --- a/radar/2017-10-01/self-service-infrastructure.md +++ b/radar/2017-10-01/self-service-infrastructure.md @@ -3,4 +3,5 @@ title: "Self service infrastructure" ring: assess quadrant: methods-and-patterns ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/spark.md b/radar/2017-10-01/spark.md index fb716b2..219bdfd 100644 --- a/radar/2017-10-01/spark.md +++ b/radar/2017-10-01/spark.md @@ -3,4 +3,5 @@ title: "Spark" ring: assess quadrant: languages-and-frameworks ---- \ No newline at end of file +--- +TBD \ No newline at end of file diff --git a/radar/2017-10-01/swift.md b/radar/2017-10-01/swift.md deleted file mode 100644 index 203f1a5..0000000 --- a/radar/2017-10-01/swift.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Swift" -ring: trial -quadrant: languages-and-frameworks - ---- \ No newline at end of file diff --git a/radar/2017-10-01/yarn.md b/radar/2017-10-01/yarn.md index 1b5db8c..a8fbcbd 100644 --- a/radar/2017-10-01/yarn.md +++ b/radar/2017-10-01/yarn.md @@ -4,6 +4,8 @@ ring: trial quadrant: tools --- -Yarn is dependency management tool for frontend (node) projects similar to npm. It also uses the npm registry and infrastructure. According to yarn the benefits are that yarn is much faster, automatically writes a .lock file and builds up an local cache to be even faster when installing packages again. +Yarn is dependency management tool for frontend (node) projects similar to npm. It also uses the npm registry and +infrastructure. According to yarn the benefits are that yarn is much faster, automatically writes a .lock file and +builds up an local cache to be even faster when installing packages again. At AOE, we started using yarn in different projects to evaluate if we can switch to yarn for all projects. From a1d9bbf8901653cfe3600421410c5722b051fbab Mon Sep 17 00:00:00 2001 From: Bastian Ike Date: Wed, 2 May 2018 17:13:18 +0200 Subject: [PATCH 07/22] gRPC text --- radar/2017-10-01/grpc.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/radar/2017-10-01/grpc.md b/radar/2017-10-01/grpc.md index ce65f75..e9d0678 100644 --- a/radar/2017-10-01/grpc.md +++ b/radar/2017-10-01/grpc.md @@ -4,4 +4,14 @@ ring: assess quadrant: languages-and-frameworks --- -TBD \ No newline at end of file + +gRPC, "A high performance, open-source universal RPC framework", is a framework to easily connect clients and servers in a RPC setup. +gRPC is initially build at google, and uses protobuf service definitions for method and payload specification. +Essentially this allows to define methods a server exposes, with either a single payload or an incoming stream, and either a single response or a stream of responses. +The definition itself is done 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 to automatically create all code for all languages and helps with the interoperability of different systems. + +From a technical point of view gRPC uses HTTP/2 as a transport, direcly benefitting from the default TLS encryption. +Beside gRPC there exist other frameworks as well which use protobuf RPC definitions, such as twirp from twitch, which makes it easy to change the transport/control layer with only very small changes to the application code. + +We at AOE plan to assess gRPC for microservice architectures which are more RPC style and less REST style. From 94b722eecac3c9212758347f3c94ee4c0f2151f1 Mon Sep 17 00:00:00 2001 From: Bastian Ike Date: Wed, 2 May 2018 17:18:46 +0200 Subject: [PATCH 08/22] Helm/Terraform --- radar/2017-10-01/helm-terraform.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/radar/2017-10-01/helm-terraform.md b/radar/2017-10-01/helm-terraform.md index 852912d..540970b 100644 --- a/radar/2017-10-01/helm-terraform.md +++ b/radar/2017-10-01/helm-terraform.md @@ -1,7 +1,14 @@ --- -title: "Helm- Terraform" +title: "Helm/Terraform" ring: assess quadrant: tools --- -TBD \ No newline at end of file + +For our OM3 projects infrastructure we run multiple Kubernetes clusters, and to orchestrate the infrastructure provisioning decided quite fast 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 it's 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. From 6cb3d9126fc3676d420c952cd964517f3ba6e98e Mon Sep 17 00:00:00 2001 From: Bastian Ike Date: Wed, 2 May 2018 17:25:33 +0200 Subject: [PATCH 09/22] Self Service Infrastructure --- radar/2017-10-01/self-service-infrastructure.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/radar/2017-10-01/self-service-infrastructure.md b/radar/2017-10-01/self-service-infrastructure.md index a3986a5..b56e274 100644 --- a/radar/2017-10-01/self-service-infrastructure.md +++ b/radar/2017-10-01/self-service-infrastructure.md @@ -4,4 +4,9 @@ ring: assess quadrant: methods-and-patterns --- -TBD \ No newline at end of file + +With growing teams, growing projects and growing infrastructure we decided to follow the "You build it, you run it"-approach, and when we started to run Kubernetes, where we have a great abstraction layer between infrastructure and applications, we decided to make the developer teams write their own Helm charts. +By agreeing on just a couple of patters, this allows us to easily manage a microservice architecture with more than 60 Applications, without too much hassle managing infrastructure/runtimes for (amongst others) JVM, Go and PHP applications. +Most of the hosting/provisioning decisions are better kept at the team, as they are the ones who know how their application works. By providing a clear interface this became the cornerstone for running our microservice architecture, and keeping the amount of actual servers much lower than in projects with a centralized operations/IT team. + +Eventually self service infrastructure, and "You build it, you run it", allowed us to give both our application developers as well as our infrastructure engineers more flexibility than one team explaining another team what to do, resulting in a better collaboration than before. From de58d5e36a496482ebae51a331a704d08b9161cb Mon Sep 17 00:00:00 2001 From: Bernhard Behrendt Date: Fri, 4 May 2018 13:45:22 +0200 Subject: [PATCH 10/22] Removed topics without author activity --- radar/2017-10-01/google-container-engine.md | 7 ------- radar/2017-10-01/mkdocks.md | 7 ------- radar/2017-10-01/spark.md | 7 ------- 3 files changed, 21 deletions(-) delete mode 100644 radar/2017-10-01/google-container-engine.md delete mode 100644 radar/2017-10-01/mkdocks.md delete mode 100644 radar/2017-10-01/spark.md diff --git a/radar/2017-10-01/google-container-engine.md b/radar/2017-10-01/google-container-engine.md deleted file mode 100644 index 79a6960..0000000 --- a/radar/2017-10-01/google-container-engine.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Google container engine" -ring: trial -quadrant: platforms-and-aoe-services - ---- -TBD \ No newline at end of file diff --git a/radar/2017-10-01/mkdocks.md b/radar/2017-10-01/mkdocks.md deleted file mode 100644 index 1699e47..0000000 --- a/radar/2017-10-01/mkdocks.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "MKDOCS" -ring: assess -quadrant: tools - ---- -TBD \ No newline at end of file diff --git a/radar/2017-10-01/spark.md b/radar/2017-10-01/spark.md deleted file mode 100644 index 219bdfd..0000000 --- a/radar/2017-10-01/spark.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Spark" -ring: assess -quadrant: languages-and-frameworks - ---- -TBD \ No newline at end of file From 698944ee577202263e050481e4510b5706b2928b Mon Sep 17 00:00:00 2001 From: Bernhard Behrendt Date: Fri, 4 May 2018 13:52:37 +0200 Subject: [PATCH 11/22] fixed typos --- radar/2017-10-01/angular.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/radar/2017-10-01/angular.md b/radar/2017-10-01/angular.md index d35489c..6baf69e 100644 --- a/radar/2017-10-01/angular.md +++ b/radar/2017-10-01/angular.md @@ -5,7 +5,7 @@ quadrant: languages-and-frameworks --- Beside that many major upgrades from version 2 to 5 which often needed manual hands on a lot has happened in the Angular -ecosystem in 2017. Like in particular the improvements on the HTTP-Client which requires less coding effort from now or +ecosystem in 2017. Like in particular the improvements on the HTTP-Client which require less coding effort from now or the great improvements on angular.cli like aot (ahead of time compile) for faster rendering, fewer requests and much smaller builds to name just the most important ones. @@ -13,5 +13,5 @@ Beside that many facts about, we made many good experiences using Angular in lar it's the choice in our telecommunication sector teams as single page application framework (SPA) for micro service front ends. -The convenient scaffolding of unit- and end-2-end-tests provides a very quality driven workflow. -Also the component architecture helps to keep the codebase understandable end maintainable. \ No newline at end of file +The convenient scaffolding of unit- and end-2-end-tests provide a very quality driven workflow. +Also the module and component architecture helps to keep the codebase understandable end maintainable. \ No newline at end of file From c5348dd4f430daa119aaf6446ba24d144b633f6b Mon Sep 17 00:00:00 2001 From: Stefan Rotsch Date: Fri, 4 May 2018 14:34:30 +0200 Subject: [PATCH 12/22] Blameless Post Mortems --- radar/2017-10-01/blameless-post-mortems.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/radar/2017-10-01/blameless-post-mortems.md b/radar/2017-10-01/blameless-post-mortems.md index c172e6d..afcc181 100644 --- a/radar/2017-10-01/blameless-post-mortems.md +++ b/radar/2017-10-01/blameless-post-mortems.md @@ -1,7 +1,17 @@ --- -title: "Blameless post mortems" +title: "Blameless Post Mortems" ring: trial quadrant: methods-and-patterns - --- -TBD \ No newline at end of file + +> Failure and invention are inseparable twins. +> +> — Jeff Bezos + +Blameless Post Mortems provide a concept of dealing with failures inevitably occuring when developing and operating complex software solutions. After any major incident or outage the team gets together, performing an in-depth analysis of what has happened and what can be done to mitigate the risk of similar issues to happen in the future. + +Based on trust and under the assumption that every person involved had good intentions doing the best given the information at hand, Blameless Post Mortems provide an opportunity to continuously improve the quality of software and infrastructure and the processes to deal with critical situations. + +The post mortem documentation usually consist of both a timeline of the events leading to an incident and the steps taken to its remediation, and future actions and learnings for increasing reslience and stability of our services. + +At AOE, we strive to conduct a Blameless Post Mortem meeting after every user-visible incident. From 6e8c8fafee5569bf74da518e771f8899d0fc6812 Mon Sep 17 00:00:00 2001 From: Stefan Rotsch Date: Fri, 4 May 2018 15:08:06 +0200 Subject: [PATCH 13/22] Grafana --- radar/2017-10-01/grafana.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/radar/2017-10-01/grafana.md b/radar/2017-10-01/grafana.md index c381757..5d60b73 100644 --- a/radar/2017-10-01/grafana.md +++ b/radar/2017-10-01/grafana.md @@ -2,6 +2,8 @@ title: "Grafana" ring: assess quadrant: platforms-and-aoe-services - --- -TBD \ No newline at end of file + +[Grafana](https://grafana.com//) is an open source data visualization platform written in Go and NodeJS. It provides a vast choice of differen 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. From a6da1245e517ef018c9a83cfbcd55ae53616487f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:08:34 +0200 Subject: [PATCH 14/22] work on articles --- radar/2017-10-01/adr.md | 21 +++++++++++++++- radar/2017-10-01/crc.md | 35 ++++++++++++++++++++++++-- radar/2017-10-01/invision.md | 8 +++++- radar/2017-10-01/pact.md | 14 +++++++++-- radar/2017-10-01/ports-and-adapters.md | 34 +++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 radar/2017-10-01/ports-and-adapters.md diff --git a/radar/2017-10-01/adr.md b/radar/2017-10-01/adr.md index d1f68ea..d8387ca 100644 --- a/radar/2017-10-01/adr.md +++ b/radar/2017-10-01/adr.md @@ -4,4 +4,23 @@ ring: assess quadrant: methods-and-patterns --- -TBD \ No newline at end of file +Architecture Decision Records + +Is a lightweight documentation of important architecture decisions taken by the team. +Without documentation of the architecture and the architecture decisions, new team members can only do two things: +* either (blindy) accept what they find and see or +* (blindy) change things + +Both is of course not right. + +Therefore we suggest to document the important architecture decisions. We are using a simple tool like https://github.com/npryce/adr-tools and store them in version control. +In bigger projects with many teams we also establish a regular "architecture board / coi" with regular meetings. +Often the architecture decision are taken in such meetings. + +The main purpose of this documentation is: +* inform new team members about the previous architecture decisions and its purpose and backgrounds +* inform the whole team (also all the people who where absent) +* documentation that can be used to remeber things (e.g. conventions, patterns, etc) + + + diff --git a/radar/2017-10-01/crc.md b/radar/2017-10-01/crc.md index 0c72dc1..4f4f127 100644 --- a/radar/2017-10-01/crc.md +++ b/radar/2017-10-01/crc.md @@ -1,7 +1,38 @@ --- -title: "CRC" +title: "CRC Games" ring: assess quadrant: methods-and-patterns --- -TBD \ No newline at end of file + +Class Responsibility Collaboration Card Games are a method to discuss and align the software design - especially useful for object-oriented software. + +A proper software design is one of the most important things to ensure the sucess and the maintainability of your software. +Especially for iterative development methods where you work on a software task by task, it is important to have designs sessions that also look forward to the next iterations and the conceptional whole. + +And for software design to be sucessfull, it is very important that everybody (in the team) has the same understanding of the design and stands behind it. + +CRC sessions help to design and align the high level object design and collaboration of your system with the whole team. During such sessions new team members can learn from the experience and explainations of tropers. + +This is how we often do this CRC Sessions: +* Preparation: + * Make sure everybody has a high level overview of the software (bounded context / use case overview). Because design should also focus on the long term. + * Choose some szenarios (like "customer adds a promoted product to cart and see the discounts..") that you want to discuss in this session +* Collect candidates for classes: + * For the first session it makes sense to search for potential candidates for classes. + * Just put them on a whiteboard. Often nouns in szenarios are good candidates. + * Put the most promising ones on post its. (You can add more at any time) +* CRC session: + * 1 or 2 people stand up and try to explain the szenario with the help of the classes. + * This is much like explaining a sequence diagramm and the cards are put on the table from left to right. During or after this you can discuss design decissions and alternatives with the team. + * After this someone else can stand up and present a potential alternative sequence. + * Once the team aligned on a version they want to implement, it makes sense that it is repeated by different persons. Beeing exact is very important and avoids the situation where some people have "his" understanding of the model. The model and the collaboration lives in the heads of the people in the team - therefore it is important that everyone understands it the same way. +* Closing: + * We are often not too enthusiatic about adding a list of "collaborators" to the cards, since the sequence explains this very well. + * So just take a picture and document the result somewhere, so that you can review the status for the next CRC session. + * Maybe some decisions are worth beeing documented in your [Architecture decision records](/methods-and-patterns/adr.html) + + + + + diff --git a/radar/2017-10-01/invision.md b/radar/2017-10-01/invision.md index 3e175a4..460fa4e 100644 --- a/radar/2017-10-01/invision.md +++ b/radar/2017-10-01/invision.md @@ -4,4 +4,10 @@ ring: trial quadrant: tools --- -TBD \ No newline at end of file + +Invision is an online tool used to work and collaborate on design and prototypes and to share them between clients and the team. + +We use it in many projects now to present prototypes and designs and it helps in understanding the planned user experience. +Also we use this directly as a reference from the User stories, to help the development teams in understanding and implementing the right frontend and backend functionalities. + + diff --git a/radar/2017-10-01/pact.md b/radar/2017-10-01/pact.md index ff84219..6e05cec 100644 --- a/radar/2017-10-01/pact.md +++ b/radar/2017-10-01/pact.md @@ -1,7 +1,17 @@ --- title: "PACT" -ring: assess +ring: trial quadrant: tools --- -TBD \ No newline at end of file + +PACT (http://pact.io/) is a family of frameworks that provide support for *Consumer Driven Contract testing* accross different langauages and frameworks. + +Consumer Driven Contract testing is a pattern for testing interfaces/boundaries between services. + +It allows "consumers" to run tests against a defined Mock and record the defined interactions (=PACT). +It puts "providers" in the position, that they can run the PACT tests inside theire Continuous Integration Pipelines, so that the provider knows if he might break any consumers. + +This approach makes sense in organisations where teams collaborate more closely (See [Strategic Domain Driven Design](/methods-and-patterns/strategic-domain-driven-design.html) ), e.g. to build [Microservice oriented architectures](/methods-and-patterns/microservices.html) + +Consumer Driven Contract Testing and how they can be done with Pact is documented very nicely on the official Pact website: https://docs.pact.io/. diff --git a/radar/2017-10-01/ports-and-adapters.md b/radar/2017-10-01/ports-and-adapters.md new file mode 100644 index 0000000..e60e77c --- /dev/null +++ b/radar/2017-10-01/ports-and-adapters.md @@ -0,0 +1,34 @@ +--- +title: "Ports and Adapters" +ring: trial +quadrant: methods-and-patterns + +--- + +Ports and Adapters is an architecture or layering approach for software design. As with other layering approaches it seperates different concerns in different layers, where dependencies are only allowed to be from the outside to the inside. + +We use "ports and adapters" with success for (bigger) applications which contains certain business logic and/or provides several ways to access the services. +We often use it hand in hands with domain driven design. In comparison with other layering patterns (e.g. layered architecture) it allows to have a true technologie free core (domain) model, because with the concept of "secondary ports" (=interfaces) it inverts the control and allows outer layers to provide adapters (=implementations of the defined interface). +It also defines clear boundaries for where to put what logic of your application. + +You can find more about the details and its origins in famous blog posts like [The Clean Architecture](https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html) or [Hexagonal architecture](http://alistair.cockburn.us/Hexagonal+architecture) + +In short here is how we often layer such applications: +* Domain: + * Is the inner layer and contains the technology free domain model + * Often using building blocks from domain driven design + * It defines primary and secondary ports. (E.g. a secondary port is in "interface" that need to be implemented in the infrastructure layer.) +* Application: + * Contains the Applications API and Services, that are developed around the use cases in the application requirements. + * This use cases orchestrate the flow of data to and from the domain +* Interfaces: + * set of adapters that convert data from the 
format most convenient for the 
use cases to the format most convenient for 
some external agency/access + * e.g. (Web) Controllers / DTOs for handling forms etc +* Infrastructure: + * This layer is where all the details go. The Web is a detail. 
 The database is a detail. We keep these things on the 
outside where they can do little harm. + * This is where you can use frameworks and tools such as the RDB Mappers etc. + * communication details with other external systems (and its DataTransferObjects and Mappers) + +This layers belong to every bounded context (modules) inside the application. + +So if you are searching for a potential timeless architecture for your critical application? Try to implement a potent technology free domain model in the core layer and use ports and adapters to layer your application. \ No newline at end of file From 049949c583e57fee6fd5cee226475b039a81605b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:11:03 +0200 Subject: [PATCH 15/22] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5feb84f..c972db6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,4 +28,4 @@ deploy: local_dir: dist detect_encoding: true on: - branch: finalize \ No newline at end of file + branch: next From 82b5c17e1bd3ca0434fed487a9c73d527604c117 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:14:28 +0200 Subject: [PATCH 16/22] Update elasticsearch.md --- radar/2017-03-01/elasticsearch.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/radar/2017-03-01/elasticsearch.md b/radar/2017-03-01/elasticsearch.md index 76e7ec4..8fd5821 100644 --- a/radar/2017-03-01/elasticsearch.md +++ b/radar/2017-03-01/elasticsearch.md @@ -1,6 +1,9 @@ --- title: "Elasticsearch" -ring: trial +ring: adopt quadrant: platforms-and-aoe-services ---- \ No newline at end of file +--- +Elasticsearch is a REST-based search and analytics engine based on Lucene. Unlike its competitor Apache Solr, it was developed in the beginning with clustering and scaling in mind. It allows you to create complex queries while still delivering results very fast. + +At AOE, we use Elasticsearch for logging as well as our own search solution [Searchperience](http://www.searchperience.com/). We recently moved the Searchperience stack from Solr to Elasticsearch and think this was the right decision. Especially in terms of scaling, ease of use and performance, Elasticsearch really shines. Also, the API design took some of the learnings from Apache SOLR into account - for example, the queryDSL is a powerful way of describing different search use cases with highly flexible support of aggregations, etc. From 7cb9316f8ca65a7f53b3187f29470ead96cbad2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:15:05 +0200 Subject: [PATCH 17/22] Update jest.md --- radar/2017-03-01/jest.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/radar/2017-03-01/jest.md b/radar/2017-03-01/jest.md index b4e18a0..066ef64 100644 --- a/radar/2017-03-01/jest.md +++ b/radar/2017-03-01/jest.md @@ -1,6 +1,18 @@ --- title: "Jest" -ring: trial +ring: adopt quadrant: tools ---- \ No newline at end of file +--- +[Jest](https://facebook.github.io/jest/) is a javascript testing framework by facebook to test javascript code **and** react applications / components. + +We started using Jest (and [watchmen](https://github.com/facebook/watchman)) instead of Karma because it: + +- gives us integrated mocking library +- gives us integrated support for testing "promises" +- gives us integrated code coverage report +- automatically runs tests related to changed files (instead of all tests) +- gives us parallel test execution +- gives us snapshot testing for react components + +It is easy to set up. And even if you have a running setup with karma/chai you can easily replace karma with jest. With a small [workaround](https://medium.com/@RubenOostinga/combining-chai-and-jest-matchers-d12d1ffd0303#.3callo273), chai and jest test matchers work fine together. From 26139d90827deace66380e0900912f5563436a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:15:40 +0200 Subject: [PATCH 18/22] Update puppet-environments.md --- radar/2017-03-01/puppet-environments.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/radar/2017-03-01/puppet-environments.md b/radar/2017-03-01/puppet-environments.md index 6c420d7..feb5de9 100644 --- a/radar/2017-03-01/puppet-environments.md +++ b/radar/2017-03-01/puppet-environments.md @@ -1,6 +1,22 @@ --- title: "Puppet Environments" -ring: assess +ring: trial quadrant: platforms-and-aoe-services ---- \ No newline at end of file +--- + +Puppet +------ + +Puppet is an Open Source configuration management tool. It is used by a wide range of different companies world-wide, e.g. the Wikimedia Foundation, Mozilla, Reddit, CERN, Dell, Rackspace, Twitter, the New York Stock Exchange, PayPal, Disney, Citrix Systems, Spotify, Oracle, the University of California Los Angeles, the University of North Texas, QVC, Intel, Google and others. + +Puppet has been the basic tool to address Continuous Configuration Automation (CCA) in AOE's [Infrastructure as Code](/methods-and-patterns/infrastructure-as-code.html) strategy (IaC) for more than 4 years. + +Puppet Environments +------------------- + +Intended to give projects the means to develop and maintain their own infrastructure, separated and not influenced by other projects, Puppet environments, together with Puppet module versioning and ENC, have been introduced.\ +Puppet Environments are rated "Trial". It supports our strategy of Infrastructure as Code (IaC) and links it to our DevOps approach, enabling project teams to set up and customize their own infrastructure.  + +Teams that want to use the Puppet Environments service from the AOE IT Team will find detailed information about the implemented CI/CD process for this. + From 308772733777317916a43711f582685a3d10758b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:16:08 +0200 Subject: [PATCH 19/22] Update scala-lang.md --- radar/2017-03-01/scala-lang.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/radar/2017-03-01/scala-lang.md b/radar/2017-03-01/scala-lang.md index 30158eb..8a27b7e 100644 --- a/radar/2017-03-01/scala-lang.md +++ b/radar/2017-03-01/scala-lang.md @@ -1,6 +1,14 @@ --- title: "Scala Lang" -ring: trial +ring: adopt quadrant: languages-and-frameworks ---- \ No newline at end of file +--- + +Besides Java, Scala is the most mature language on the Java Virtual Machine. Its unique blend of object-oriented and functional language features and rich type system with advanced type inference enables one to write concise code. + +It is fully interoperable with Java but has a big ecosystem of tools and frameworks on its own. + +Scala provides one of the best high-level concurrency- and async features on the language level as well as on the framework level, making it the default choice of twitter and the like. + +At AOE, we already use Scala in various projects to create scalable backend systems (Play, Akka) or for batch processing (Spark). From c74033b805ce17239c5c8a7ec54309b98297dd76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:16:39 +0200 Subject: [PATCH 20/22] Update wiremock.md --- radar/2017-03-01/wiremock.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/radar/2017-03-01/wiremock.md b/radar/2017-03-01/wiremock.md index 9cc4f7b..516e494 100644 --- a/radar/2017-03-01/wiremock.md +++ b/radar/2017-03-01/wiremock.md @@ -1,6 +1,15 @@ --- title: "Wiremock" -ring: trial +ring: adopt quadrant: tools ---- \ No newline at end of file +--- +**[WireMock](http://wiremock.org/docs/)** is an HTTP mock server - it can be used to mock APIs for testing. + +At its core, it is a web server that can be prepared to serve canned responses to particular requests (stubbing), and that captures incoming requests so that they can be checked later (verification). It also has an assortment of other useful features including record/playback of interactions with other APIs, injection of faults and delays, simulation of stateful behavior.  + +It can be used as a library by any JVM application, or run as a standalone process either on the same host as the system under test or a remote server. All of WireMock's features are accessible via its REST (JSON) interface and its Java API. Additionally, the mock server can be configured via JSON files. + +At AOE, we use WireMock as a standalone server to mock APIs that are outside our system context to get a stable environment for testing and rapid feedback. Besides the decoupled test and development advantages, the mocked APIs can also be used in contract-based tests. We also use embedded WireMock in functional tests to stub external services. The explicit test of faults are especially helpful in building and testing the [resilience of your application](/methods-and-patterns/resilience-thinking.html). + +Because of the features such as flexible deployment, powerful request matching and record/payback interactions, as well as the fact that the server runs stable in our project environments, we classify WireMock as *trial*. From c8957418b0efbf1f4ff48e52a2a6acdea801c38e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:26:29 +0200 Subject: [PATCH 21/22] add original articles from first radar again --- radar/2017-03-01/elasticsearch.md | 4 ++-- radar/2017-03-01/jest.md | 10 +++++----- radar/2017-03-01/puppet-environments.md | 7 +++---- radar/2017-03-01/scala-lang.md | 4 ++-- radar/2017-03-01/wiremock.md | 10 +++++----- 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/radar/2017-03-01/elasticsearch.md b/radar/2017-03-01/elasticsearch.md index 8fd5821..edb6be8 100644 --- a/radar/2017-03-01/elasticsearch.md +++ b/radar/2017-03-01/elasticsearch.md @@ -1,9 +1,9 @@ --- title: "Elasticsearch" -ring: adopt +ring: trial quadrant: platforms-and-aoe-services --- Elasticsearch is a REST-based search and analytics engine based on Lucene. Unlike its competitor Apache Solr, it was developed in the beginning with clustering and scaling in mind. It allows you to create complex queries while still delivering results very fast. -At AOE, we use Elasticsearch for logging as well as our own search solution [Searchperience](http://www.searchperience.com/). We recently moved the Searchperience stack from Solr to Elasticsearch and think this was the right decision. Especially in terms of scaling, ease of use and performance, Elasticsearch really shines. Also, the API design took some of the learnings from Apache SOLR into account - for example, the queryDSL is a powerful way of describing different search use cases with highly flexible support of aggregations, etc. +At AOE, we use Elasticsearch for logging as well as our own search solution [Searchperience](http://www.searchperience.com/). We recently moved the Searchperience stack from Solr to Elasticsearch and think this was the right decision. Especially in terms of scaling, ease of use and performance, Elasticsearch really shines. Also, the API design took some of the learnings from Apache SOLR into account - for example, the queryDSL is a powerful way of describing different search use cases with highly flexible support of aggregations, etc. \ No newline at end of file diff --git a/radar/2017-03-01/jest.md b/radar/2017-03-01/jest.md index 066ef64..d8703a3 100644 --- a/radar/2017-03-01/jest.md +++ b/radar/2017-03-01/jest.md @@ -1,12 +1,12 @@ --- -title: "Jest" -ring: adopt +title: "Jest " +ring: assess quadrant: tools --- -[Jest](https://facebook.github.io/jest/) is a javascript testing framework by facebook to test javascript code **and** react applications / components. +[Jest](https://facebook.github.io/jest/) is a javascript testing framework by facebook to test javascript code **and** react applications / components. -We started using Jest (and [watchmen](https://github.com/facebook/watchman)) instead of Karma because it: +We started using Jest (and [watchmen](https://github.com/facebook/watchman)) instead of Karma because it: - gives us integrated mocking library - gives us integrated support for testing "promises" @@ -15,4 +15,4 @@ We started using Jest (and [watchmen](https://github.com/facebook/watchman)) in - gives us parallel test execution - gives us snapshot testing for react components -It is easy to set up. And even if you have a running setup with karma/chai you can easily replace karma with jest. With a small [workaround](https://medium.com/@RubenOostinga/combining-chai-and-jest-matchers-d12d1ffd0303#.3callo273), chai and jest test matchers work fine together. +It is easy to set up. And even if you have a running setup with karma/chai you can easily replace karma with jest. With a small [workaround](https://medium.com/@RubenOostinga/combining-chai-and-jest-matchers-d12d1ffd0303#.3callo273), chai and jest test matchers work fine together. \ No newline at end of file diff --git a/radar/2017-03-01/puppet-environments.md b/radar/2017-03-01/puppet-environments.md index feb5de9..839bfee 100644 --- a/radar/2017-03-01/puppet-environments.md +++ b/radar/2017-03-01/puppet-environments.md @@ -1,6 +1,6 @@ --- title: "Puppet Environments" -ring: trial +ring: assess quadrant: platforms-and-aoe-services --- @@ -10,13 +10,12 @@ Puppet Puppet is an Open Source configuration management tool. It is used by a wide range of different companies world-wide, e.g. the Wikimedia Foundation, Mozilla, Reddit, CERN, Dell, Rackspace, Twitter, the New York Stock Exchange, PayPal, Disney, Citrix Systems, Spotify, Oracle, the University of California Los Angeles, the University of North Texas, QVC, Intel, Google and others. -Puppet has been the basic tool to address Continuous Configuration Automation (CCA) in AOE's [Infrastructure as Code](/methods-and-patterns/infrastructure-as-code.html) strategy (IaC) for more than 4 years. +Puppet has been the basic tool to address Continuous Configuration Automation (CCA) in AOE's [Infrastructure as Code](/methods-and-patterns/infrastructure-as-code.html) strategy (IaC) for more than 4 years. Puppet Environments ------------------- Intended to give projects the means to develop and maintain their own infrastructure, separated and not influenced by other projects, Puppet environments, together with Puppet module versioning and ENC, have been introduced.\ -Puppet Environments are rated "Trial". It supports our strategy of Infrastructure as Code (IaC) and links it to our DevOps approach, enabling project teams to set up and customize their own infrastructure.  +Puppet Environments are rated "Trial". It supports our strategy of Infrastructure as Code (IaC) and links it to our DevOps approach, enabling project teams to set up and customize their own infrastructure. Teams that want to use the Puppet Environments service from the AOE IT Team will find detailed information about the implemented CI/CD process for this. - diff --git a/radar/2017-03-01/scala-lang.md b/radar/2017-03-01/scala-lang.md index 8a27b7e..3460c79 100644 --- a/radar/2017-03-01/scala-lang.md +++ b/radar/2017-03-01/scala-lang.md @@ -1,6 +1,6 @@ --- title: "Scala Lang" -ring: adopt +ring: trial quadrant: languages-and-frameworks --- @@ -11,4 +11,4 @@ It is fully interoperable with Java but has a big ecosystem of tools and framewo Scala provides one of the best high-level concurrency- and async features on the language level as well as on the framework level, making it the default choice of twitter and the like. -At AOE, we already use Scala in various projects to create scalable backend systems (Play, Akka) or for batch processing (Spark). +At AOE, we already use Scala in various projects to create scalable backend systems (Play, Akka) or for batch processing (Spark). \ No newline at end of file diff --git a/radar/2017-03-01/wiremock.md b/radar/2017-03-01/wiremock.md index 516e494..4d5a1f0 100644 --- a/radar/2017-03-01/wiremock.md +++ b/radar/2017-03-01/wiremock.md @@ -1,15 +1,15 @@ --- title: "Wiremock" -ring: adopt +ring: trial quadrant: tools --- -**[WireMock](http://wiremock.org/docs/)** is an HTTP mock server - it can be used to mock APIs for testing. +**[WireMock](http://wiremock.org/docs/)** is an HTTP mock server - it can be used to mock APIs for testing. -At its core, it is a web server that can be prepared to serve canned responses to particular requests (stubbing), and that captures incoming requests so that they can be checked later (verification). It also has an assortment of other useful features including record/playback of interactions with other APIs, injection of faults and delays, simulation of stateful behavior.  +At its core, it is a web server that can be prepared to serve canned responses to particular requests (stubbing), and that captures incoming requests so that they can be checked later (verification). It also has an assortment of other useful features including record/playback of interactions with other APIs, injection of faults and delays, simulation of stateful behavior. It can be used as a library by any JVM application, or run as a standalone process either on the same host as the system under test or a remote server. All of WireMock's features are accessible via its REST (JSON) interface and its Java API. Additionally, the mock server can be configured via JSON files. -At AOE, we use WireMock as a standalone server to mock APIs that are outside our system context to get a stable environment for testing and rapid feedback. Besides the decoupled test and development advantages, the mocked APIs can also be used in contract-based tests. We also use embedded WireMock in functional tests to stub external services. The explicit test of faults are especially helpful in building and testing the [resilience of your application](/methods-and-patterns/resilience-thinking.html). +At AOE, we use WireMock as a standalone server to mock APIs that are outside our system context to get a stable environment for testing and rapid feedback. Besides the decoupled test and development advantages, the mocked APIs can also be used in contract-based tests. We also use embedded WireMock in functional tests to stub external services. The explicit test of faults are especially helpful in building and testing the [resilience of your application](/methods-and-patterns/resilience-thinking.html). -Because of the features such as flexible deployment, powerful request matching and record/payback interactions, as well as the fact that the server runs stable in our project environments, we classify WireMock as *trial*. +Because of the features such as flexible deployment, powerful request matching and record/payback interactions, as well as the fact that the server runs stable in our project environments, we classify WireMock as *trial*. \ No newline at end of file From 6a690e576eb4a17959ee51f8f6b3219be0d85914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=C3=B6tzinger?= Date: Mon, 7 May 2018 12:35:38 +0200 Subject: [PATCH 22/22] resolve wrong updates --- radar/2017-03-01/kubernetes.md | 2 +- radar/2017-03-01/pipeline-as-code.md | 2 +- radar/2017-03-01/port-adapters.md | 6 ------ radar/2017-03-01/vue.md | 2 +- radar/2017-10-01/kubernetes.md | 10 ++++++++++ radar/2017-10-01/pipeline-as-code.md | 12 ++++++++++++ radar/2017-10-01/redux.md | 14 ++++++++++++++ radar/2017-10-01/scala-lang.md | 2 ++ radar/2017-10-01/vue.md | 12 ++++++++++++ radar/2017-10-01/wiremock.md | 15 --------------- 10 files changed, 53 insertions(+), 24 deletions(-) delete mode 100644 radar/2017-03-01/port-adapters.md create mode 100644 radar/2017-10-01/kubernetes.md create mode 100644 radar/2017-10-01/pipeline-as-code.md create mode 100644 radar/2017-10-01/redux.md create mode 100644 radar/2017-10-01/vue.md delete mode 100644 radar/2017-10-01/wiremock.md diff --git a/radar/2017-03-01/kubernetes.md b/radar/2017-03-01/kubernetes.md index e84ae85..6f32bb2 100644 --- a/radar/2017-03-01/kubernetes.md +++ b/radar/2017-03-01/kubernetes.md @@ -1,6 +1,6 @@ --- title: "Kubernetes" -ring: trial +ring: assess quadrant: platforms-and-aoe-services --- diff --git a/radar/2017-03-01/pipeline-as-code.md b/radar/2017-03-01/pipeline-as-code.md index e5d2068..69c4e0e 100644 --- a/radar/2017-03-01/pipeline-as-code.md +++ b/radar/2017-03-01/pipeline-as-code.md @@ -1,6 +1,6 @@ --- title: "Pipeline as Code" -ring: adopt +ring: assess quadrant: methods-and-patterns --- diff --git a/radar/2017-03-01/port-adapters.md b/radar/2017-03-01/port-adapters.md deleted file mode 100644 index 5ce2850..0000000 --- a/radar/2017-03-01/port-adapters.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Port and Adapters" -ring: assess -quadrant: methods-and-patterns - ---- \ No newline at end of file diff --git a/radar/2017-03-01/vue.md b/radar/2017-03-01/vue.md index ea3603f..2f0e308 100644 --- a/radar/2017-03-01/vue.md +++ b/radar/2017-03-01/vue.md @@ -1,6 +1,6 @@ --- title: "Vue.js" -ring: trial +ring: assess quadrant: languages-and-frameworks --- diff --git a/radar/2017-10-01/kubernetes.md b/radar/2017-10-01/kubernetes.md new file mode 100644 index 0000000..1ae21fc --- /dev/null +++ b/radar/2017-10-01/kubernetes.md @@ -0,0 +1,10 @@ +--- +title: "Kubernetes" +ring: adopt +quadrant: platforms-and-aoe-services + +--- + +Kubernetes is a container orchestration platform, which supports many different infrastructure providers. It allows you to deploy containers and takes care of running, scaling or self-healing your applications based on configurations you provide. It's based on years of knowledge and experience Google gained by using containers. + +At AOE, we started Kubernetes in a test environment on bare metal to experiment with it. It's currently used for running AOE internal apps such as dashboards as well as running builds in containers. We also started to use it for upcoming projects to run and manage several services. There are Tools to automate the setup of kubernetes in AWS like [Cops](https://kubernetes.io/docs/getting-started-guides/kops/). Another helpful tool is [Minikube](https://github.com/kubernetes/minikube), which allows to test and run kubernetes locally. diff --git a/radar/2017-10-01/pipeline-as-code.md b/radar/2017-10-01/pipeline-as-code.md new file mode 100644 index 0000000..e5d2068 --- /dev/null +++ b/radar/2017-10-01/pipeline-as-code.md @@ -0,0 +1,12 @@ +--- +title: "Pipeline as Code" +ring: adopt +quadrant: methods-and-patterns + +--- + +Continuous Integration and Delivery is a critical part of our development and deployment process at AOE. Using Jenkins for many years the "instructions" how to build, test and deploy applications were scattered between many custom scripts and the pipeline was often maintained by manual maintenance of Jenkins jobs. Soon, we realized that we need a more native way to express the full CI/CD pipeline process in code and manage it in version control. + +Being an important part of each project, the pipeline configuration should be managed as code and rolled out automatically - this also allows us to manage the pipeline itself applying the same standards that apply to application code. + +While some teams started using Jenkins' [JobDSL plugin,](https://wiki.jenkins-ci.org/display/JENKINS/Job+DSL+Plugin) others explored the new [Jenkins Pipeline](https://jenkins.io/doc/book/pipeline/) - in both ways, the build artifacts should be published to an artifact repository such as [Artifactory.](/platforms-and-aoe-services/artifactory.html) diff --git a/radar/2017-10-01/redux.md b/radar/2017-10-01/redux.md new file mode 100644 index 0000000..bfd4e40 --- /dev/null +++ b/radar/2017-10-01/redux.md @@ -0,0 +1,14 @@ +--- +title: "Redux" +ring: trial +quadrant: languages-and-frameworks + +--- + +[Redux](http://redux.js.org/) helps us to maintain state in our frontend applications in a more predictable and clearer way. It is extendable though middleware, it has a great documentation and some awesome [devtools](https://github.com/gaearon/redux-devtools) that are especially helpful when you are new to Redux. + +The functional concepts for updating the state, combined with immutable data, lead to extremely easy and enjoyable [unit tests](http://redux.js.org/docs/recipes/WritingTests.html) - this is maybe the biggest plus for us developers. + +The official [react-redux bindings](https://github.com/reactjs/react-redux) also made it straightforward to weave Redux into our React applications. For asynchronous actions we use [redux-sagas](https://redux-saga.github.io/redux-saga/) which has proven itself as a better alternative for [redux-thunk](https://github.com/gaearon/redux-thunk). + +Currently, we use Redux only in our React projects, but we are evaluating it together with other frameworks such as Angular or Vue.js, as well. diff --git a/radar/2017-10-01/scala-lang.md b/radar/2017-10-01/scala-lang.md index 8a27b7e..524802c 100644 --- a/radar/2017-10-01/scala-lang.md +++ b/radar/2017-10-01/scala-lang.md @@ -5,6 +5,8 @@ quadrant: languages-and-frameworks --- +Scala is used in many projects here at AOE and therefore we moved it into the adopt level. + Besides Java, Scala is the most mature language on the Java Virtual Machine. Its unique blend of object-oriented and functional language features and rich type system with advanced type inference enables one to write concise code. It is fully interoperable with Java but has a big ecosystem of tools and frameworks on its own. diff --git a/radar/2017-10-01/vue.md b/radar/2017-10-01/vue.md new file mode 100644 index 0000000..ea3603f --- /dev/null +++ b/radar/2017-10-01/vue.md @@ -0,0 +1,12 @@ +--- +title: "Vue.js" +ring: trial +quadrant: languages-and-frameworks + +--- + +Vue is a progressive, incrementally adoptable framework for building user interfaces maintained by Evan You. Unlike [other monolithic frameworks](http://vuejs.org/v2/guide/comparison.html), the core library is focused on the view layer only and is very easy to pick up and integrate with other libraries or existing projects. Vue is also perfectly capable of powering sophisticated single-page applications when used in combination with modern tooling and supporting libraries such as [vuex](https://vuex.vuejs.org/en/) and [vue-router](http://router.vuejs.org/en/). + +Vue uses an HTML-based template syntax that allows you to declaratively bind the rendered DOM to the underlying Vue instance’s data. Under the hood, Vue compiles the templates into Virtual DOM render functions. Combined with the [reactivity system](http://vuejs.org/v2/guide/reactivity.html) Vue is able to intelligently figure out the minimal amount of components to re-render and apply the minimal amount of DOM manipulations when the app state changes, which provides for very high performance. + +Applications can be split into [Single File Components](http://vuejs.org/v2/guide/single-file-components.html) - a single file containing the template (HTML), style (CSS) and functionality (JS) - which simplifies maintainability and testability of the code and promotes reusability across other projects. diff --git a/radar/2017-10-01/wiremock.md b/radar/2017-10-01/wiremock.md deleted file mode 100644 index 516e494..0000000 --- a/radar/2017-10-01/wiremock.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Wiremock" -ring: adopt -quadrant: tools - ---- -**[WireMock](http://wiremock.org/docs/)** is an HTTP mock server - it can be used to mock APIs for testing. - -At its core, it is a web server that can be prepared to serve canned responses to particular requests (stubbing), and that captures incoming requests so that they can be checked later (verification). It also has an assortment of other useful features including record/playback of interactions with other APIs, injection of faults and delays, simulation of stateful behavior.  - -It can be used as a library by any JVM application, or run as a standalone process either on the same host as the system under test or a remote server. All of WireMock's features are accessible via its REST (JSON) interface and its Java API. Additionally, the mock server can be configured via JSON files. - -At AOE, we use WireMock as a standalone server to mock APIs that are outside our system context to get a stable environment for testing and rapid feedback. Besides the decoupled test and development advantages, the mocked APIs can also be used in contract-based tests. We also use embedded WireMock in functional tests to stub external services. The explicit test of faults are especially helpful in building and testing the [resilience of your application](/methods-and-patterns/resilience-thinking.html). - -Because of the features such as flexible deployment, powerful request matching and record/payback interactions, as well as the fact that the server runs stable in our project environments, we classify WireMock as *trial*.