Stellate Product Updates logo
Back to Homepage Subscribe to Updates

Product Updates

See the latest new features, improvements, and product updates

Labels

  • All Posts
  • Fix
  • Announcement
  • Improvement
  • graph api
  • feature

Jump to Month

  • December 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • January 2023
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
Improvement
a year ago

Enhancing Our Cache Configuration for Non-Cacheable Types

Making changes to the cache configuration can be scary. Even more so if I have a big GraphQL schema with lots of types and fields to keep in mind. What if I accidentally cache something that should not be cached? Or worse, what if that leads to my cache leaking sensitive data to other users!?

We believe it's important for you to feel confident when making changes to your cache configuration. A big part of this is acknowledging that certain types and fields just must not be cached, ever.

Today we're making it even easier for you to configure non-cacheable types and fields in your Stellate configuration. We're launching a new configuration property called "nonCacheable" where you can specify a list of type and field names that Stellate must never cache.

If Stellate finds one of these types or fields inside the query response, it will not store the query in the cache.

If you're already a Stellate fan, the concept of block-listing types and fields might seem familiar to you. And that's because it is! We had support for this behavior for a long time, in particular by adding a "special" cache rule for those types and fields with a max-age of zero. However, we found this to be a confusing way of exempting types and fields from caching as it looks just like any other cache rule which generally should include types and fields in the cache.

Of course, we're keeping everything backward compatible, so if you're using the "old" approach your cache configuration still works as expected.

We hope that this will help increase your confidence in making changes to your cache configuration. You can read all about the new config property in our documentation.

Avatar of authorThomas Heyenbrock
Improvement
a year ago

Visualize how config changes impacts your cache hit rate

When looking at the cache hit rate over time chart, now you will see an indicator for when a new config version is published. This will help to understand if there was a cache hit increase/drop when your caching rules change.

This is now live for all Stellate services.

Avatar of authorVictor Tortolero
a year ago

Update to Cache Hit Rate calculation

Today, we are releasing a significant update to our Cache Hit Rate (CHR ) calculation. This revised formula will take into account all cacheable traffic, including HITs, MISSes, and now PASSes that could potentially be cached.


What does this mean for your Stellate services

You might notice a noticeable decrease in the CHR value for your service. However, it's essential to understand that this doesn't imply a sudden decrease in your cache performance. Instead, it results from the new, more comprehensive calculation formula.

Why did we made this change

This decision has been driven by deep thought and consideration, in alignment with our mission to provide the most relevant and meaningful data for your caching needs. We aim to make the CHR metric more accurately represent the cacheable traffic, allowing for deeper insights, such as revealing the Max CHR for specific operations

We hope this provides transparency into the change, you learn more about caching in our docs. If you have any questions or concerns, please reach out to our support team at support@stellate.co.

Avatar of authorVictor Tortolero
a year ago

Cache Optimization Dashboard

We're excited to announce the launch of our new Caching Metrics page, a powerful tool that provides in-depth insights and opportunities for improving your caching strategies. The Caching Metrics page introduces two new chart types:

  • Cache Hit Rate (CHR) over time: You will be able to see the evolution of CHR in your service and compare it with the Max CHR. This will enable you to understand how CHR changes after a configuration change or a schema change.
  • Uncached bandwidth: Ever wondered how much bandwidth is prevented from going to your backend thanks to using Stellate? This metric will give you that info.

In addition to the above, we've also introduced the Caching Improvement Opportunities table, which will allow you to understand your API operations and identify what traffic types you could potentially cache next, along with their potential impact on your overall CHR.

To illustrate, consider the getAllBlogCollections operation in the image below. Its current CHR stands at 2.8%, but the Max CHR is as high as 89.6%. By optimizing your service to cache this operation and move it closer to the Max CHR, you could anticipate an overall CHR improvement of approximately 2.4%.

These new functionalities underscore our commitment to assist you in enhancing your caching performance. We look forward to you experimenting with the Caching Metrics page and improving your CHR! You can access this page under the Metrics section, available now to all Stellate services.

Avatar of authorVictor Tortolero
a year ago

Custom Attributes Are Now Generally Available

One month ago we launched Custom Attributes in Public Beta. Since then we have seen great adoption and got great user feedback on the feature. Today we're announcing that Custom Attributes are moving out of the Beta phase and into General Availability! There are no changes to the feature, so you don't need to adapt anything if you already started using the feature in Beta.

We have closely observed how our customers use Custom Attributes to personalize and get the most out of their GraphQL Metrics. Here are some of these use cases.

Track the clients that are using your GraphQL API

If you have multiple clients that consume your GraphQL API, like web and mobile applications, it's crucial to know which client is sending what requests. We have seen customers setting up Custom Attributes that track the kind and version of their clients using HTTP headers.

Identify requests from individual users

Many GraphQL APIs require some kind of token for authentication. JWTs are a common standard used across the web, and they already contain information about the identity of the user it belongs to. We have seen Custom Attributes being set up to store user identifiers from the JWT payload to enable tracking the interactions of individual users with their GraphQL API.

Get Custom Attribute metrics into your own systems

Having Custom Attributes in your Stellate GraphQL Metrics is great, but we saw cases where users could only store anonymous access tokens instead of human-readable identifiers. With just that, it would be a lot of manual work to correlate GraphQL Metrics with data from other systems.

To help automate this process, we also expose Custom Attributes (and also lots of other parts of our GraphQL Metrics) via our Public GraphQL API. This enabled users to periodically pull the data from our system and integrate it into their own data lakes.

There's more!

This is just a short list of all the cool customizations you can do to your GraphQL Metrics with Custom Attributes. We're excited to see even more use cases from our users. Check out our documentation today to get started with Custom Attributes!

Avatar of authorThomas Heyenbrock
feature
a year ago

Filtering Metrics by Date Range

We’re excited to announce that our metrics product now allows you to filter your metrics by a specific date/time range. Our new date range picker UI gives you precision down to the minute and makes it much easier to analyze your data.

You can find the newly added calendar picker next to the relative time picker. This intuitive tool lets you easily select dates by clicking on the calendar days.

For those who require a more precise selection, you can go down to the minute level with the input fields below the calendar.

This feature is now live and available for immediate use. We hope that this enhancement will significantly improve your experience. We welcome your feedback and look forward to hearing about your experiences with this new functionality.



Avatar of authorDaniel Lehr
feature
a year ago

Understanding the reason for a cache hit, miss or pass

We just launched a set of features that will help you understand the reason behind a cache hit, miss or pass. Now, when looking at a request, you’ll be able to see the applied caching rules, this can help you debug why an operation was or was not cached as you expected.

If you check the operation details, you’ll see a similar view, this one is particularly useful if you want to change your stellate configuration and understand the impact it will have in your operations. For example, you could change your config, and take a look at your top operations to see how your rules are affecting it.

And in the scenario where a request is a pass, we'll show you a more explicit reason

This is now live at stellate.co, we can't wait for you to try it!

Avatar of authorVictor Tortolero
feature
a year ago

Theoretical max cache hit rate

Introducing our theoretical cache hit rate: a powerful tool to help understand the maximum achievable cache hit rate for a particular operation, factoring in all possible variable and scope combinations.

Consider an operation that has been requested 1,000 times within the past 24 hours. If there is only a single unique combination of variables and scopes for this operation, and we set a max-age of 24 hours, we would encounter a single cache miss. This leads to a remarkable 999 cache hits. Therefore, the theoretical maximum cache hit rate would be 99.9%, calculated as 999/1000.

A good example of such an operation might be a posts query for a blog, which typically has consistent variables and scopes.

Contrast this with an operation with higher variable diversity, such as a search query. For 1,000 requests, we might observe 800 unique variable combinations. In this scenario, Stellate will cache 800 requests upon their first encounter. This could result in up to 200 cache hits, yielding a theoretical maximum cache hit rate of 20%.

We are delighted to announce that this insightful feature is now readily available in the operations view for all services! Please explore its potential to optimize your caching strategies.

Avatar of authorTim Suchanek
Improvement
a year ago

Improvements to Our Requests Metrics Page

We just released a whole bunch of improvements for our requests page! We focused on bringing more clarity and transparency into how we present the data.

Going into the requests view now, the first thing you will notice is that we can now show different Cache Pass reasons and filter these out. This allows you to do things like filtering out non-GraphQL requests or focusing on queries that were a pass ("Prevented by Cache Rules") to discover new caching opportunities.

Additional request metadata

We also exposed more metadata fields from the request. Now you’ll be able to see:

  • The raw user agent string
  • HTTP status code
  • Original and cached response latency (this allows you to see how much faster cached responses are).
  • Scopes
  • Types and Fields

Metadata information about a GraphQL request that was a cache HIT

More context on Non-GraphQL requests and non-cacheable operations

We are explicitly calling out non-GraphQL requests, previously we showed these as "unkown query" which didn't indicate these were non-GraphQL. We are also showing explicit pass reasons for errors and mutations.


We hope all of these improvements make inspecting and debugging requests easier!

Avatar of authorVictor Tortolero
Improvement
2 years ago

Caching the introspection query

We're excited to announce a much-requested feature upgrade that we believe will significantly enhance your experience with our Stellate service. We're now providing the ability to cache introspection queries.

Here's how it works:

We have introduced a new configuration option: cacheIntrospection. This option allows you to set whether or not you want your introspection queries cached. You simply have to assign a boolean value to this option - true for enabling caching and false for disabling it.

Once enabled, your introspections will be cached for a duration of one hour, with a stale-while-revalidate policy of one day. This means your queries will be instantly available for an hour, and even after that, the old data will still be served while the cache revalidates in the background, making sure your applications are never interrupted.

A key benefit of this feature is that it automatically manages cache invalidation. Whenever a new schema is pushed, the cache will be invalidated automatically, ensuring the latest data is always available.

For new Stellate service users, the cacheIntrospection option will be enabled by default in your configuration. But if you're an existing user, no worries! You can easily turn on this feature by adding cacheIntrospection: true to your config.

Avatar of authorJovi De Croock