From dc51f2d120dfdac404e4e5e14210ab3f4705a32c Mon Sep 17 00:00:00 2001 From: Carl Mowday Date: Tue, 27 Feb 2024 13:38:23 +0100 Subject: [PATCH 1/2] Added support for multiple alternative radars in JSON files --- spec/end_to_end_tests/config.json | 5 +- .../end_to_end_tests/pageObjects/byor_page.js | 5 + .../resources/multi_data.json | 272 ++++++++++++++++++ spec/end_to_end_tests/specs/end_to_end.cy.js | 65 +++++ src/util/factory.js | 39 ++- webpack.dev.js | 7 + 6 files changed, 384 insertions(+), 9 deletions(-) create mode 100644 spec/end_to_end_tests/resources/multi_data.json diff --git a/spec/end_to_end_tests/config.json b/spec/end_to_end_tests/config.json index 6ed6feca6..2940f82cc 100644 --- a/spec/end_to_end_tests/config.json +++ b/spec/end_to_end_tests/config.json @@ -1,6 +1,7 @@ { - "CSV_FILE_URL": "https://raw.githubusercontent.com/thoughtworks/build-your-own-radar/master/spec/end_to_end_tests/resources/sheet.csv", - "JSON_FILE_URL": "https://raw.githubusercontent.com/thoughtworks/build-your-own-radar/master/spec/end_to_end_tests/resources/data.json", + "CSV_FILE_URL": "/e2e_resources/sheet.csv", + "JSON_FILE_URL": "/e2e_resources/data.json", + "JSON_MULTI_RADAR_FILE_URL": "/e2e_resources/multi_data.json", "PUBLIC_GOOGLE_SHEET_URL": "https://docs.google.com/spreadsheets/d/1wZVb8V53O0Lzr4iMaz4qjJZKteA1xQhJNajGq0jE9sw", "PUBLIC_GOOGLE_SHEET_TITLE": "BYOR Test - Public Google Sheet", "PUBLIC_GOOGLE_SHEET_RADAR_SHEET_NAMES": ["Build your Technology Radar", "Build your Technology Radar - Sheet 2"], diff --git a/spec/end_to_end_tests/pageObjects/byor_page.js b/spec/end_to_end_tests/pageObjects/byor_page.js index cabe38f2f..cd7ec60a1 100644 --- a/spec/end_to_end_tests/pageObjects/byor_page.js +++ b/spec/end_to_end_tests/pageObjects/byor_page.js @@ -16,6 +16,11 @@ class ByorPage { cy.get(this.textBox).type(config.JSON_FILE_URL) } + provideMultiJsonName() { + cy.get(this.textBox).clear() + cy.get(this.textBox).type(config.JSON_MULTI_RADAR_FILE_URL) + } + providePublicSheetUrl() { cy.get(this.textBox).clear() cy.get(this.textBox).type(config.PUBLIC_GOOGLE_SHEET_URL) diff --git a/spec/end_to_end_tests/resources/multi_data.json b/spec/end_to_end_tests/resources/multi_data.json new file mode 100644 index 000000000..2e4ede7a7 --- /dev/null +++ b/spec/end_to_end_tests/resources/multi_data.json @@ -0,0 +1,272 @@ +{ + "First": [ + { + "name": "Path-to-production mapping", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Although path-to-production mapping has been a near-universal practice at Thoughtworks since codifying Continuous Delivery, we often come across organizations unfamiliar with the practice. The activity is most often done in a workshop with a cross-functional group of people — that includes everyone involved in designing, developing, releasing and operating the software — around a shared whiteboard (or virtual equivalent). First, the steps in the process are listed in order, from the developer workstation all the way to production. Then, a facilitated session is used to capture further information and pain points. The most common technique we see is based on value-stream mapping, although plenty of process map variants are equally valuable. The activity is often eye-opening for many of the participants, as they identify delays, risks and inconsistencies and continue to use the visual representation for the continuous improvement of the build and deploy process. We consider this technique so foundational that we were surprised to discover we hadn't blipped it before.

" + }, + { + "name": "Component visual regression testing", + "ring": "Trial", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

Visual regression testing is a useful and powerful tool to have in your toolbox, but it has a significant cost given it's done for the entire page. With the rise of component-based frameworks such as React and Vue, we've also seen the rise of component visual regression testing. This technique strikes a good balance between value and cost to ensure that no undesired visuals have been added to the application. In our experience, component visual regression testing presents fewer false positives and promotes a good architectural style. By using it with tools such as Vite and the webpack feature Hot Module Replacement (HMR), it could be seen as a paradigm shift for applying test-driven development to front-end development.

" + }, + { + "name": "Dragonfly", + "ring": "Assess", + "quadrant": "Platforms", + "isNew": "TRUE", + "description": "

Dragonfly is a new in-memory data store with compatible Redis and Memcached APIs. It leverages the new Linux-specific io_uring API for I/O and implements novel algorithms and data structures on top of a multithreaded, shared-nothing architecture. Because of these clever choices in implementation, Dragonfly achieves impressive results in performance. Although Redis continues to be our default choice for in-memory data store solutions, we do think Dragonfly is an interesting choice to assess.

" + }, + { + "name": "OrioleDB", + "ring": "Hold", + "quadrant": "Platforms", + "isNew": "FALSE", + "description": "

OrioleDB is a new storage engine for PostgreSQL. Our teams use PostgreSQL a lot, but its storage engine was originally designed for hard drives. Although there are several options to tune for modern hardware, it can be difficult and cumbersome to achieve optimal results. OrioleDB addresses these challenges by implementing a cloud-native storage engine with explicit support for solid-state drives (SSDs) and nonvolatile random-access memory (NVRAM). To try the new engine, first install the enhancement patches to the current table access methods and then install OrioleDB as a PostgreSQL extension. We believe OrioleDB has great potential to address several long-pending issues in PostgreSQL, and we encourage you to carefully assess it.

" + }, + { + "name": "AWS Backup Vault Lock", + "ring": "Trial", + "quadrant": "Tools", + "isNew": "TRUE", + "description": "

When implementing robust, secure and reliable disaster recovery, it’s necessary to ensure that backups can't be deleted or altered before their expiry, either maliciously or accidentally. Previously, with AWS Backup, these policies and guarantees had to be implemented by hand. Recently, AWS has added the Vault Lock feature to ensure backups are immutable and untamperable. AWS Backup Vault Lock enforces retention and deletion policies and prevents even those with administrator privileges from altering or deleting backup files. This has proved to be a valuable addition and fills a previously empty space.

" + } + ], + "Second": [ + { + "name": "Databricks Overwatch", + "ring": "Assess", + "quadrant": "Tools", + "isNew": "FALSE", + "description": "

Databricks Overwatch is a Databricks Labs project that enables teams to analyze various operational metrics of Databricks workloads around cost, governance and performance with support to run what-if experiments. It's essentially a set of data pipelines that populate tables in Databricks, which can then be analyzed using tools like notebooks. Overwatch is very much a power tool; however, it's still in its early stages and it may take some effort to set it up — our use of it required Databricks solution architects to help set it up and populate a price reference table for cost calculations — but we expect adoption to get easier over time. The level of analysis made possible by Overwatch is deeper than what is allowed by cloud providers' cost analysis tools. For example, we were able to analyze the cost of job failures — recognizing that failing fast saves money compared to jobs that only fail near the final step — and break down the cost by various groupings (workspace, cluster, job, notebook, team). We also appreciated the improved operational visibility, as we could easily audit access controls around cluster configurations and analyze operational metrics like finding the longest running notebook or largest read/write volume. Overwatch can analyze historical data, but its real-time mode allows for alerting which helps you to add appropriate controls to your Databricks workloads.

" + }, + { + "name": "io-ts", + "ring": "Adopt", + "quadrant": "Languages & Frameworks", + "isNew": "TRUE", + "description": "

Our teams developing in TypeScript are finding io-ts invaluable, especially when interacting with APIs that ultimately result in the creation of objects with specific types. When working with TypeScript, getting data into the bounds of the type system (i.e., from the aforementioned APIs) can lead to run-time errors that can be hard to find and debug. io-ts bridges the gap between compile-time type checking and run-time consumption of external data by providing encode and decode functions. Given the experiences of our teams and the elegance of its approach, we think io-ts is worth adopting.

" + }, + { + "name": "Carbon", + "ring": "Hold", + "quadrant": "Languages & Frameworks", + "isNew": "FALSE", + "description": "

We're seeing some interest in the Carbon programming language. That doesn't come as a surprise: it has Google's backing and is presented as a natural successor to C++. In our opinion C++ can't be replaced fast enough as software engineers have shown, over the past decades, that writing safe and error-free C++ code is extremely difficult and time-consuming. While Carbon is an interesting concept with its focus on migration from C++, without a working compiler, it's clearly a long way from being usable and there are other modern programming languages that are good choices if you want to migrate from C++. It's too early to tell whether Carbon will become the natural successor to C++, but, from today's perspective, we recommend that teams look at Rust and Go rather than postponing a migration because they're waiting for Carbon to arrive.

" + }, + { + "name": "Team cognitive load", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Team interaction is a key concept when redesigning an organization for business agility and speed. These interactions will be reflected in the software being built (see Conway's Law) and indicate how effectively teams can autonomously deliver value to their customers. Our advice is to be intentional about how teams are designed and how they interact. Because we believe that organizational design and team interactions evolve over time, we think it's particularly important to measure and keep track of the team cognitive load, which indicates how easy or difficult teams find building, testing and maintaining their services. We've been using a template to assess team cognitive load that is based on ideas by the authors of the Team Topologies book.

" + }, + { + "name": "Threat modeling", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

We continue to recommend that teams carry out threat modeling — a set of techniques to help you identify and classify potential threats during the development process — but we want to emphasize that this is not a one-off activity only done at the start of projects; teams need to avoid the security sandwich. This is because throughout the lifetime of any software, new threats will emerge and existing ones will continue to evolve thanks to external events and ongoing changes to requirements and architecture. This means that threat modeling needs to be repeated periodically — the frequency of repetition will depend on the circumstances and will need to consider factors such as the cost of running the exercise and the potential risk to the business. When used in conjunction with other techniques, such as establishing cross-functional security requirements to address common risks in the project's technologies and using automated security scanners, threat modeling can be a powerful asset.

" + }, + { + "name": "Backstage", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

In an increasingly digital world, improving developer effectiveness in large organizations is often a core concern of senior leaders. We've seen enough value with developer portals in general and Backstage in particular that we're happy to recommend it in Adopt. Backstage is an open-source developer portal platform created by Spotify that improves discovery of software assets across the organization. It uses Markdown TechDocs that live alongside the code for each service, which nicely balances the needs of centralized discovery with the need for distributed ownership of assets. Backstage supports software templates to accelerate new development and a plugin architecture that allows for extensibility and adaptability into an organization's infrastructure ecosystem. Backstage Service Catalog uses YAML files to track ownership and metadata for all the software in an organization's ecosystem; it even lets you track third-party SaaS software, which usually requires tracking ownership.

" + }, + { + "name": "Delta Lake", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

Delta Lake is an open-source storage layer, implemented by Databricks, that attempts to bring ACID transactions to big data processing. In our Databricks-enabled data lake or data mesh projects, our teams prefer using Delta Lake storage over the direct use of file storage types such as AWS S3 or ADLS. Until recently, Delta Lake has been a closed proprietary product from Databricks, but it's now open source and accessible to non-Databricks platforms. However, our recommendation of Delta Lake as a default choice currently extends only to Databricks projects that use Parquet file formats. Delta Lake facilitates concurrent data read/write use cases where file-level transactionality is required. We find Delta Lake's seamless integration with Apache Spark batch and micro-batch APIs very helpful, particularly features such as time travel (accessing data at a particular point in time or commit reversion) as well as schema evolution support on write.

" + }, + { + "name": "Delta Lake", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

Delta Lake is an open-source storage layer, implemented by Databricks, that attempts to bring ACID transactions to big data processing. In our Databricks-enabled data lake or data mesh projects, our teams prefer using Delta Lake storage over the direct use of file storage types such as AWS S3 or ADLS. Until recently, Delta Lake has been a closed proprietary product from Databricks, but it's now open source and accessible to non-Databricks platforms. However, our recommendation of Delta Lake as a default choice currently extends only to Databricks projects that use Parquet file formats. Delta Lake facilitates concurrent data read/write use cases where file-level transactionality is required. We find Delta Lake's seamless integration with Apache Spark batch and micro-batch APIs very helpful, particularly features such as time travel (accessing data at a particular point in time or commit reversion) as well as schema evolution support on write.

" + }, + { + "name": "Great Expectations", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

Great Expectations has become a sensible default for our teams in the data quality space, which is why we recommend adopting it — not only for the lack of better alternatives but also because our teams have reported great results in several client projects. Great Expectations is a framework that allows you to craft built-in controls that flag anomalies or quality issues in data pipelines. Just as unit tests run in a build pipeline, Great Expectations makes assertions during the execution of a data pipeline. We like its simplicity and ease of use — the rules stored in JSON can be modified by our data domain experts without necessarily needing data engineering skills.

" + }, + { + "name": "Kotest", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

Kotest (previously KotlinTest) is a stand-alone testing tool for the Kotlin ecosystem that is widely used among our teams across various Kotlin implementations — native, JVM or JavaScript. Its key advantages are that it offers a variety of testing styles in order to structure test suites and that it comes with a comprehensive set of matchers, which allow for expressive tests in an elegant internal DSL. In addition to its support for property-based testing, our teams like the solid IntelliJ plugin and the support community. Many of our developers consider it their first choice and recommend those who are still using JUnit in Kotlin consider switching over to Kotest.

" + }, + { + "name": "NestJS", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

In the past, we've cautioned about Node overload, and we're still cautious about the reasons to choose it. However, in scenarios where Node.js is required to build back-end applications, our teams are reporting that NestJS is a suitable option to enable developers to create testable, scalable, loosely coupled and easily maintainable applications in enterprises. NestJS is a TypeScript-first framework that makes the development of Node.js applications safer and less error-prone. NestJS is opinionated and comes with SOLID principles and an Angular-inspired architecture out of the box.

" + }, + { + "name": "React Query", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

React Query is often described as the missing data-fetching library for React. Fetching, caching, synchronizing and updating server state is a common requirement in many React applications, and although the requirements are well understood, getting the implementation right is notoriously difficult. React Query provides a straightforward solution using hooks. It works hand-in-hand with existing async data-fetching libraries like axios, Fetch and GraphQL since they are built on promises. As an application developer, you simply pass a function that resolves your data and leave everything else to the framework. We like that it works out of the box but still offers a lot of configuration when needed. The developer tools, unfortunately not yet available for React Native, also help developers new to the framework understand how it works. For React Native, you can use a third-party developer tools plugin utilizing Flipper. In our experience, version 3 of React Query brought the stability needed to be used in production with our clients.

" + }, + { + "name": "Swift Package Manager", + "ring": "Adopt", + "quadrant": "Techniques", + "isNew": "FALSE", + "description": "

When introduced in 2014, Swift didn't come with a package manager. Later, Swift Package Manager was created as an official Apple open-source project, and this solution has continued to develop and mature. Our teams rely increasingly on SwiftPM because most packages can be included through it and the processes for both creators and consumers of packages have been streamlined. In the previous Radar, we recommended trialing, but we now believe it makes sense to select it as the default when starting new projects. For existing projects using tools like CocoaPods or Carthage, it might be worth a quick experiment to gauge the level of effort to migrate and to check whether all dependencies are available.

" + }, + { + "name": "Carbon efficiency as an architectural characteristic", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Sustainability is a topic that demands the attention of enterprises. In the software development space its importance has increased, and we're now seeing different ways to approach this topic. Looking at the carbon footprint of building software, for example, we recommend assessing carbon efficiency as an architectural characteristic. An architecture that takes into consideration carbon efficiency is one where design and infrastructure choices have been made in order to to minimize energy consumption and therefore carbon emissions. The measurement tooling and advice in this space is maturing, making it feasible for teams to consider carbon efficiency alongside other factors such as performance, scalability, financial cost and security. Like almost everything in software architecture, this should be considered a trade-off; our advice is to think about this as one additional characteristic in a whole set of relevant quality attributes that are driven and prioritized by organizational goals and not left to a small cadre of experts to ponder in a siloed manner.

" + }, + { + "name": "CUPID", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

How do you approach writing good code? How do you judge if you've written good code? As software developers, we're always looking for catchy rules, principles and patterns that we can use to share a language and values with each other when it comes to writing simple, easy-to-change code.

Daniel Terhorst-North has recently made a new attempt at creating such a checklist for good code. He argues that instead of sticking to a set of rules like SOLID, using a set of properties to aim for is more generally applicable. He came up with what he calls the CUPID properties to describe what we should strive for to achieve \"joyful\" code: Code should be composable, follow the Unix philosophy and be predictable, idiomatic and domain based.

" + }, + { + "name": "GitHub push protection", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

The accidental publication of secrets seems to be a perennial issue with tools such as Talisman popping up to help with the problem. Before now, GitHub Enterprise Cloud users with an Advanced Security License could enable security scanning on their accounts, and any secrets (API keys, access tokens, credentials, etc.) that were accidentally committed and pushed would trigger an alert. GitHub push protection takes this one step further, and brings it one step earlier in the development workflow, by blocking changes from being pushed at all if secrets are detected. This needs to be configured for the organization and applies, of course, only to license holders, but additional protection from publishing secrets is to be welcomed.

" + }, + { + "name": "Local-first application", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

In a centralized application, the data on the server is the single source of truth — any modification to the data must go through the server. Local data is subordinate to the server version. This seems like a natural and inevitable choice to enable collaboration among multiple users of the software. Local-first application, or local-first software, is a set of principles that enables both collaboration and local data ownership. It prioritizes the use of local storage and local networks over servers in remote data centers or the cloud. Techniques like conflict-free replicated data types (CRDTs) and peer-to-peer (P2P) networks have the potential to be a foundational technology for realizing local-first software.

" + }, + { + "name": "Metrics store", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Metrics store, sometimes referred to as headless business intelligence (BI), is a layer that decouples metrics definitions from their usage in reports and visualizations. Traditionally, metrics are defined inside the context of BI tools, but this approach leads to duplication and inconsistencies as different teams use them in different contexts. By decoupling the definition in the metrics store, we get clear and consistent reuse across BI reports, visualizations and even embedded analytics. This technique is not new; for example, Airbnb introduced Minerva a year ago. However, we're now seeing considerable traction in the data and analytics ecosystem with more tools supporting metrics stores out of the box.

" + }, + { + "name": "Server-driven UI", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Server-driven UI continues to be a hot topic of discussion in mobile circles because it offers the potential for developers to take advantage of faster change cycles without falling foul of an app store's policies around revalidation of the mobile app itself. Server-driven UI separates the rendering into a generic container in the mobile app while the structure and data for each view is provided by the server. This means that changes that once required a round trip to an app store can now be accomplished via simple changes to the responses the server sends. While some very large mobile app teams have had great success with this technique, it also requires a substantial investment in building and maintaining a complex proprietary framework. Such an investment requires a compelling business case. Until the case is made, it might be best to proceed with caution; indeed, we've experienced some horrendous, overly configurable messes that didn't actually deliver on the promised benefits. But with the backing of behemoths such as Airbnb and Lyft, we may very well see some useful frameworks emerge that help tame the complexity. Watch this space.

" + }, + { + "name": "SLIs and SLOs as code", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Since Google first popularized service-level indicators (SLIs) and service-level objectives (SLOs) as part of their site reliability engineering (SRE) practice, observability tools like Datadog, Honeycomb and Dynatrace started incorporating SLO monitoring into their toolchains. OpenSLO is an emerging standard that allows defining SLIs and SLOs as code, using a declarative, vendor-neutral specification language based on the YAML format used by Kubernetes. While the standard is still quite new, we're seeing some encouraging momentum, as with Sumo Logic's contribution of the slogen tool to generate monitoring and dashboards. We're excited by the promise of versioning SLI and SLO definitions in code and updating observability tooling as part of the CI/CD pipeline of the service being deployed.

" + }, + { + "name": "Synthetic data for testing models", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

During our discussions for this edition of the Radar, several tools and applications for synthetic data generation came up. As the tools mature, we've found that using synthetic data for testing models is a powerful and broadly useful technique. Although not intended as a substitute for real data in validating the discrimination power of machine-learning models, synthetic data can be used in a variety of situations. For example, it can be used to guard against catastrophic model failure in response to rarely occurring events or to test data pipelines without exposing personally identifiable information. Synthetic data is also useful for exploring edge cases that lack real data or for identifying model bias. Some helpful tools for generating data include Faker or Synth, which generate data that conforms to desired statistical properties, and tools like Synthetic Data Vault that can generate data that mimics the properties of an input data set.

" + }, + { + "name": "TinyML", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

We continue to be excited by the TinyML technique and the ability to create machine learning (ML) models designed to run on low-powered and mobile devices. Until recently, executing an ML model was seen as computationally expensive and, in some cases, required special-purpose hardware. While creating the models still broadly sits within this classification, they can now be created in a way that allows them to be run on small, low-cost and low-power consumption devices. If you've been considering using ML but thought it unrealistic because of compute or network constraints, then this technique is worth assessing.

" + }, + { + "name": "Verifiable credentials", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

When we first included it in the Radar two years ago, verifiable credentials (VC) was an intriguing standard with some promising potential applications, but it wasn't widely known or understood outside the community of enthusiasts. This was particularly true when it came to the credential-granting institutions, such as state governments, who would be responsible for implementing the standards. Two years and one pandemic later, the demand for cryptographically secure, privacy-respecting and machine-verifiable electronic credentials has grown and, as a result, governments are starting to wake up to VC's potential. We're now starting to see VC crop up in our work for public-sector clients. The W3C standard puts credential holders at the center, which is similar to our experience when using physical credentials: users can put their verifiable credentials in their own digital wallets and show them to anyone at any time without the permission of the credentials' issuer. This decentralized approach also enables users to better manage and selectively disclose their own information which greatly improves data privacy protection. For example, powered by zero-knowledge proof technology, you can construct a verifiable credential to prove that you're an adult without revealing your birthday. It’s important to note that although many VC-based decentralized identity solutions rely on blockchain technology, blockchain is not a prerequisite for all VC implementations.

" + }, + { + "name": "Clasp", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Unfortunately, a big part of the world still runs on spreadsheets and will continue to do so. They're the ultimate tool to let anyone build those small custom tools tailored to their exact needs. However, when you want to enhance them with a level of logic that requires \"real\" code, the low-code nature of spreadsheets can then become a constraint. If you're with a company that, like Thoughtworks, uses Google's G-Suite, Clasp enables you to apply at least some Continuous Delivery practices to Apps Script code. You can write the code outside of the Apps Script project, which creates options for testing, source control and build pipelines; it even lets you use TypeScript. Clasp has been around for a while, and you shouldn’t expect a programming environment with all of the usual comforts, but it can greatly improve the experience of using Apps Script.

" + }, + { + "name": "Databricks Overwatch", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Databricks Overwatch is a Databricks Labs project that enables teams to analyze various operational metrics of Databricks workloads around cost, governance and performance with support to run what-if experiments. It's essentially a set of data pipelines that populate tables in Databricks, which can then be analyzed using tools like notebooks. Overwatch is very much a power tool; however, it's still in its early stages and it may take some effort to set it up — our use of it required Databricks solution architects to help set it up and populate a price reference table for cost calculations — but we expect adoption to get easier over time. The level of analysis made possible by Overwatch is deeper than what is allowed by cloud providers' cost analysis tools. For example, we were able to analyze the cost of job failures — recognizing that failing fast saves money compared to jobs that only fail near the final step — and break down the cost by various groupings (workspace, cluster, job, notebook, team). We also appreciated the improved operational visibility, as we could easily audit access controls around cluster configurations and analyze operational metrics like finding the longest running notebook or largest read/write volume. Overwatch can analyze historical data, but its real-time mode allows for alerting which helps you to add appropriate controls to your Databricks workloads.

" + }, + { + "name": "dbtvault", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Data Vault 2.0 is a data modeling methodology and design pattern intended to improve the flexibility of data warehouses compared to other popular modeling approaches. Data Vault 2.0 can be applied to any data store such as Snowflake or Databricks. When implementing Data Vault warehouses, we've found the dbtvault package for dbt to be a helpful tool. dbtvault provides a set of jinja templates that generate and execute the ETL scripts necessary to populate a Data Vault warehouse. Although dbtvault has some rough edges — it lacks support for enforcing implied uniqueness or performing incremental loads — overall, it fills a niche and requires minimal configuration to get started.

" + }, + { + "name": "git-together", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

We're always looking for ways to remove small frictions from pair programming, which is why we're excited by git-together, a tool written in Rust that simplifies git commit attribution during pairing. By aliasing git-together as git, the tool allows you to add extensions to git config that capture committer information, aliasing each committer by their initials. Changing pairs (or switching to soloing or mob programming) requires you to run git with, followed by the initials of the pair (for example: git with bb cc), allowing you to resume your regular git workflow afterward. Every time you commit, git-together will rotate through the pair as the official author that git stores, and it will automatically add any other authors to the bottom of the commit message. The configuration can be checked in with the repo, allowing git-together to work automatically after cloning a repo.

" + }, + { + "name": "Harness Cloud Cost Management", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Harness Cloud Cost Management is a commercial tool that works across all three of the major cloud providers and their managed Kubernetes clusters to help visualize and manage cloud costs. The product calculates a cost efficiency score by looking at idle resources as well as resources not allocated to any workload and uses historical trends to help optimize resource allocation. The dashboards highlight cost spikes and allow a user to register unexpected anomalies, which are then fed into their reinforcement learning algorithm around anomaly detection. Cloud Cost Management can recommend adjustments to limits for memory and CPU usage, with options to optimize for either cost or performance. \"Perspectives\" allows you to group costs based on organizationally defined filters (which could correspond to business units, teams or products) and automate report distribution to bring visibility into cloud spend. We believe Cloud Cost Management offers a compelling feature set to help organizations mature their FinOps practices.

" + }, + { + "name": "Infracost", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

We continue to see organizations move to the cloud without properly understanding how they will track ongoing spend. We previously blipped run cost as architecture fitness function, and Infracost is a tool that aims to make these cloud cost trade-offs visible in Terraform pull requests. It's open-source software and available for macOS, Linux, Windows and Docker and supports pricing for AWS, GCP and Microsoft Azure out of the box. It also provides a public API that can be queried for current cost data. We remain excited by its potential, especially when it comes to gaining better cost visibility in the IDE.

" + }, + { + "name": "Karpenter", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

One of the fundamental capabilities of Kubernetes is its ability to automatically launch new pods when additional capacity is needed and shut them down when loads decrease. This horizontal autoscaling is a useful feature, but it can only work if the nodes needed to host the pods already exist. While Cluster Autoscaler can do some rudimentary cluster expansion triggered by pod failures, it has limited flexibility; Karpenter, however, is an open-source Kubernetes Operator autoscaler with more smarts built in: it analyzes the current workloads and the pod scheduling constraints to automatically select an appropriate instance type and then start or stop it as needed. Karpenter is an operator in the spirit of tools like Crossplane that can provision cloud resources outside the cluster. Karpenter is an attractive companion to the autoscaling services cloud vendors provide natively with their managed Kubernetes clusters. For example, AWS now supports Karpenter as a first-class alternative in their EKS Cluster Autoscaler service.

" + }, + { + "name": "Mizu", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Mizu is an API traffic viewer for Kubernetes. Unlike other tools, Mizu does not require instrumentation or code changes. It runs as a DaemonSet to inject a container at the node level in your Kubernetes cluster and performs tcpdump-like operations. We find it useful as a debugging tool, as it can observe all API communications across multiple protocols (REST, gRPC, Kafka, AMQP and Redis) in real time.

" + }, + { + "name": "Soda Core", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Soda Core is an open-source data quality and observability tool. We talked about Great Expectations previously in the Radar, and Soda Core is an alternative with a key difference — you express the data validations in a DSL called SodaCL (previously called Soda SQL) as opposed to Python functions. Once the validations are written, it can be executed as part of a data pipeline or scheduled to run programmatically. As we become increasingly data-driven, it's critical to maintain data quality, and we encourage you to assess Soda Core.

" + }, + { + "name": "Teller", + "ring": "Assess", + "quadrant": "Techniques", + "isNew": "TRUE", + "description": "

Teller is an open-source universal secret manager for developers that ensures the correct environment variables are set when starting an application. However, it's not a vault itself — it's a CLI tool that connects to a variety of sources, ranging from cloud secrets providers to third-party solutions like HashiCorp Vault to local environment files. Teller has additional functionality to scan for vault-kept secrets in your code, to redact secrets from logs, to detect drift between secrets providers and to sync between them. Given the sensitivity of accessing secrets, we can't emphasize enough the need to secure the supply chain for open-source dependencies, but we appreciate how easy the CLI is to use in local development environments, CI/CD pipelines and deployment automation.

" + } + ] +} diff --git a/spec/end_to_end_tests/specs/end_to_end.cy.js b/spec/end_to_end_tests/specs/end_to_end.cy.js index 006245d14..02828a08a 100644 --- a/spec/end_to_end_tests/specs/end_to_end.cy.js +++ b/spec/end_to_end_tests/specs/end_to_end.cy.js @@ -412,6 +412,71 @@ describe('Build radar with CSV', () => { }) }) +describe('Support multiple radars in one JSON', () => { + beforeEach(function () { + if (Cypress.currentTest.title == 'verify initial view of Radar') { + cy.visit(Cypress.env('host') + `/?documentId=${encodeURIComponent(testConfig.JSON_MULTI_RADAR_FILE_URL)}`) + } else if ( + Cypress.currentTest.title !== 'verify url input and submit' && + Cypress.currentTest.title !== 'verify keypress / to focus url input' + ) { + cy.visit( + Cypress.env('host') + + `/?documentId=${encodeURIComponent(testConfig.JSON_MULTI_RADAR_FILE_URL)}&sheetName=Second`, + ) + } else { + cy.visit(Cypress.env('host')) + } + }) + + context('No chosen radar', () => { + it('verify url input and submit', () => { + byorPage.provideMultiJsonName() + byorPage.clickSubmitButton() + + radarPage.validateGraphTitle('Multi_data - First') + + radarPage.validateMobileQuadrantsHidden() + radarPage.validateGraphVisible() + radarPage.validateQuadrantOrder() + radarPage.validateRingOrder() + + radarPage.validateActiveAlternateRadar(1) + radarPage.validateInactiveAlternateRadar(2) + radarPage.clickAlternateRadarItem(2) + radarPage.validateActiveAlternateRadar(2) + radarPage.validateInactiveAlternateRadar(1) + radarPage.validateGraphTitle('Multi_data - Second') + }) + + it('verify initial view of Radar', () => { + radarPage.validateGraphTitle('Multi_data - First') + + radarPage.validateMobileQuadrantsHidden() + radarPage.validateGraphVisible() + radarPage.validateQuadrantOrder() + radarPage.validateRingOrder() + + radarPage.validateActiveAlternateRadar(1) + radarPage.validateInactiveAlternateRadar(2) + }) + }) + + context('Second chosen radar', () => { + it('verify initial view of Radar when alternative is chosen', () => { + radarPage.validateGraphTitle('Multi_data - Second') + + radarPage.validateMobileQuadrantsHidden() + radarPage.validateGraphVisible() + radarPage.validateQuadrantOrder() + radarPage.validateRingOrder() + + radarPage.validateActiveAlternateRadar(2) + radarPage.validateInactiveAlternateRadar(1) + }) + }) +}) + describe('Build radar with JSON', () => { beforeEach(function () { if ( diff --git a/src/util/factory.js b/src/util/factory.js index 3f6772060..922647371 100644 --- a/src/util/factory.js +++ b/src/util/factory.js @@ -240,7 +240,7 @@ const CSVDocument = function (url) { return self } -const JSONFile = function (url) { +const JSONFile = function (url, radarName) { var self = {} self.build = function () { @@ -252,16 +252,41 @@ const JSONFile = function (url) { }) } + var sheetName = radarName var createBlips = function (data) { + var radarName = sheetName try { - var columnNames = Object.keys(data[0]) + var source + var alternativeRadars = [] + + // If the JSON is an object, but not an array it might contain + // multiple sheets of arrays, so we treat it as such + if (typeof data === 'object' && !Array.isArray(data)) { + alternativeRadars = Object.keys(data) + + if (!radarName || radarName == 'JSON File') { + radarName = alternativeRadars[0] + } + + source = data[radarName] + } else { + source = data + } + + var columnNames = Object.keys(source[0]) var contentValidator = new ContentValidator(columnNames) contentValidator.verifyContent() contentValidator.verifyHeaders() - var blips = _.map(data, new InputSanitizer().sanitize) + var blips = _.map(source, new InputSanitizer().sanitize) + + var title = FileName(url) + if (radarName) { + title = title.substring(0, title.length - 5) + ' - ' + radarName + } + featureToggles.UIRefresh2022 - ? plotRadarGraph(FileName(url), blips, 'JSON File', []) - : plotRadar(FileName(url), blips, 'JSON File', []) + ? plotRadarGraph(title, blips, radarName, alternativeRadars) + : plotRadar(title, blips, radarName, alternativeRadars) } catch (exception) { const invalidContentError = new InvalidContentError(ExceptionMessages.INVALID_JSON_CONTENT) plotErrorMessage(featureToggles.UIRefresh2022 ? invalidContentError : exception, 'json') @@ -319,14 +344,14 @@ const Factory = function () { const domainName = DomainName(window.location.search.substring(1)) const paramId = getDocumentOrSheetId() + const sheetName = getSheetName() if (paramId && paramId.endsWith('.csv')) { sheet = CSVDocument(paramId) sheet.init().build() } else if (paramId && paramId.endsWith('.json')) { - sheet = JSONFile(paramId) + sheet = JSONFile(paramId, sheetName) sheet.init().build() } else if (domainName && domainName.endsWith('google.com') && paramId) { - const sheetName = getSheetName() sheet = GoogleSheet(paramId, sheetName) sheet.init().build() } else { diff --git a/webpack.dev.js b/webpack.dev.js index c1ec83944..e070e37cf 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -3,6 +3,7 @@ const webpack = require('webpack') const MiniCssExtractPlugin = require('mini-css-extract-plugin') const postcssPresetEnv = require('postcss-preset-env') const cssnano = require('cssnano') +const path = require('path') const common = require('./webpack.common.js') const config = require('./src/config') @@ -27,6 +28,12 @@ Object.entries(featureToggles).forEach(function ([key, value]) { module.exports = merge(common, { mode: 'development', entry: { main: main }, + devServer: { + static: { + directory: path.resolve(__dirname, './spec/end_to_end_tests/resources'), + publicPath: '/e2e_resources', + }, + }, performance: { hints: false, }, From 230234328c007890677242a67ed2ef77ba30746e Mon Sep 17 00:00:00 2001 From: Carl Mowday Date: Tue, 27 Feb 2024 13:54:59 +0100 Subject: [PATCH 2/2] Added Alternative Radar support in JSON section in the Readme --- README.md | 46 ++++++++++++++++++++++++++++++ assets/alternative_radars-min.png | Bin 0 -> 101344 bytes 2 files changed, 46 insertions(+) create mode 100644 assets/alternative_radars-min.png diff --git a/README.md b/README.md index 3e679a322..c28231517 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,52 @@ If you do not want to host the JSON file publicly, you can follow [these steps]( **_Note:_** The JSON file parsing is using D3 library, so consult the [D3 documentation](https://github.com/d3/d3-request/blob/master/README.md#json) for the data format details. +#### Multiple alternative radars in JSON + +Just like with Google Spreadsheets, you can provide multiple alternative radars in the same JSON file by returning an object instead of an array. +The keys of the object will be the names of the alternative radars, and show up as buttons at the bottom of the radar, allowing the user to choose which radar to view: + +![Alternative Radar buttons shown on the radar](assets/alternative_radars-min.png) + +The above example of a JSON structure, split into two different radars would look like this: + +```json +{ + "First": [ + { + "name": "Composer", + "ring": "adopt", + "quadrant": "tools", + "isNew": "TRUE", + "description": "Although the idea of dependency..." + }, + { + "name": "Canary builds", + "ring": "trial", + "quadrant": "techniques", + "isNew": "FALSE", + "description": "Many projects have external code..." + } + ], + "Second": [ + { + "name": "Apache Kylin", + "ring": "assess", + "quadrant": "platforms", + "isNew": "TRUE", + "description": "Apache Kylin is an open source..." + }, + { + "name": "JSF", + "ring": "hold", + "quadrant": "languages & frameworks", + "isNew": "FALSE", + "description": "We continue to see teams run..." + } + ] +} +``` + ### Building the radar Paste the URL in the input field on the home page. diff --git a/assets/alternative_radars-min.png b/assets/alternative_radars-min.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e0c376421b2f2ea681184a18f0f237d38e2ad5 GIT binary patch literal 101344 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%0D>uhBTx* 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⁣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 literal 0 HcmV?d00001