What can we help you with?
Openmix App Library & API
SDKs & Web Services
Categories: APM, PerformanceApplication directory: apps/apm-appdynamics/
AppDynamics is an APM vendor focused on enterprise Java and .NET web applications. This app demonstrates using real time data from AppDynamics for decision making. Using FusionCustom, we will dynamically collect server health stats using a collector and basic HTTP authentication. This is a very simple example using current CPU threshold to switch between hosts. Refer to the wiki for details on URLs etc.
Avoid CDN Bursting Charges by tracking MBPS via Fusion Data API
Git the code
Categories: PerformanceApplication directory: apps/fusion-cdn-avoid-bursting/
This version of the Optimal Round Trip Time application allows you track your monthly 95/5 MBPS usage via that CDN's API. If your usage exceeds your commit, penalize that CDN enough to avoid a bursting charge. Otherwise use the Optimal Round Trip time approach.
Categories: Geography, PerformanceApplication directory: apps/avoid-by-geo/
You can choose to remove certain platforms from consideration based on geography. This example application shows you how to do that, wrapped in logic that chooses the available platform with the lowest response time.
Categories: Fusion, LoadApplication directory: apps/limit-load/
This app demonstrates using Pulse Load to obtain current load data for each provider. It uses this information to filter out providers that are currently overloaded. Of the remaining providers, it selects the best-performing one. If all providers are overloaded, it selects the best-performing overall.
Avoid Platforms that have reached a cost threshold
Git the code
Categories: Fusion, CostApplication directory: apps/limit-money-spent/
This application demonstrates using Pulse Load to obtain cloud provider "cost", routing traffic away from a provider once it reaches a certain threshold. Any servers below the cost threshold will be load-balanced with origin based on round-trip time performance.
Categories: Geography, PerformanceApplication directory: apps/conditional-host-name/
Some platforms use virtual-host specific hostnames, often for content localization, but you often want to centralize these into your Openmix script rather than creating many Openmix platforms. For example, imagine your website has the URLs http://<country>.example.com/ where <country> is replaced with ISO codes.
The solution is to dynamically construct the resulting hostname in the application as in this example application which routes traffic to the available platform with the lowest response time.
Fusion Custom - Manage Cloud Instances externally
Git the code
Categories: Application directory: apps/maintain-external-destinations/
Demonstrates how to mix Radar performance data with a dynamically maintained list of Cloud Instances. Each cloud instance is associated with a Cloud Provider Region (like AWS US-East) for which we have Radar Performance data. Each instance also has a destination hostname or IP address and a "status". Openmix will first determine the least latent Cloud Region and then Round Robin within the specific Cloud Instances marked as "UP" in the destinations.txt file.
Fusion Custom - cloud bursting with weighted round robin based on an instance health check
Git the code
Categories: Application directory: apps/maintain-external-and-fusion-capacity/
Demonstrates how to mix Radar performance data with a dynamically maintained list of Cloud Instances. Each cloud instance is associated with a Cloud Provider Region (like AWS US-East) for which we have Radar Performance data. Each instance also has a destination hostname or IP address and a "health" value (1-10). Openmix will first determine the health of all the instances in each region. Regions where instances are struggling will have a handicap applied to their Radar score. This will shed traffic away from struggling regions. Users are sent to least latent Cloud Region and then an instance within using a weighted round robin approach taking into account the instance health score.
Categories: Application directory: apps/fusion-data-example/
A simple example of using Fusion Data within an Openmix script. Instead of making a decision this application simply responds with the values available in Fusion at the moment of the request.
Categories: Application directory: apps/load-external-config/
Demonstrates how to manage provider destination hostnames outside of the Openmix PHP. App uses Fusion Custom (AKA Pulse Load) to pull in a list of destinations linked to unique site names. Then, if a subdomain is appended to the Openmix name, it checks the subdomain against the site names in the file and modifies the destination returned.
Categories: PerformanceApplication directory: apps/perf-and-availability/
This application is ideal for getting started with Openmix application development. It uses both latency and availability to determine which platform to direct requests to, and you can quickly change from using latency to some other measure of performance.
There is an Openmix Quick Start application type named 'Optimal Round Trip Time' that provides the same functionality.
Categories: PerformanceApplication directory: apps/perf-and-availability-with-penalty/
This version of the Optimal Round Trip Time application allows you to set a percent based
"handicap" for each provider. This should cause decisions to favor one or more providers.
Peformance with Penalty and Availability, Sticky Winner
Git the code
Categories: Application directory: apps/sticky-perf-with-penalty-and-availability/
Routes requests to the highest performing available platform, applying an optional
handicap to each. Once a choice is made, stick with that choice until an alternative
is significantly better or the original choice no longer exceeds the availability
threshold.
Stickiness may optionally be limited to specific countries.
Categories: Radar, GeographyApplication directory: apps/perf-with-geo-backup/
This application demonstrates using Cedexis Radar as the primary way to select platforms, but where Geolocation data is used if there is inadequate radar data available.
Categories: Application directory: apps/perf-with-sticky-choice/
Routes requests to the highest performing available platform, but once a choice is made stick with that choice until an alternative is significantly better or the original choice no longer exceeds the availability threshold.
Categories: GeographyApplication directory: apps/geo-with-overides/
Demonstrates the basic use of geographic market and country data. Use Market data for most decsisions, but override certain countries.
Contributed by Jake Maul of Mozilla
Selectively Enable Platforms based on Day and Time
Git the code
Categories: Application directory: apps/selective_at_date_time/
This application selectively enables different platforms based on the time of day and day of week. It can be used with Fusion Custom to make it easy to update which platforms are included at different days and times.
Categories: Application directory: apps/session-persistence/
Demonstrates how to use Radar performance data to reduce end-user latency while still ensuring session persistence by network.
Categories: Network, Real-timeApplication directory: apps/softlayer/
This app demonstrates using real time data from SoftLayer for decision making. Using FusionCustom, we will dynamically collect server network status over their REST API and depending on status, switch between hosts. SoftLayer exposes 100s of interesting methods in their API, including performance metrics that would allow for the detection of service disruptions or degradations and service data that can enable costs based traffic shaping scenarios based on aggregate consumption and bandwidth usage. Refer to the wiki for more details.
Categories: Application directory: apps/sticky-with-preferred/
A sticky choice application allowing you to select preferred providers for certain networks.
Categories: Application directory: apps/template/
The most basic template for an Openmix application.
Categories: PerformanceApplication directory: apps/thruput-with-rtt/
Choose the best provider based on HTTP Throughput. If the top 2 are with 5% of each other, use HTTP Response time to break the tie.
Use New Relic APM data to improve end-user experience
Git the code
Categories: FusionApplication directory: apps/new-relic/
New Relic and Cedexis have partnered to provide New Relic Standard to Cedexis customers at no charge. That's right — free application monitoring and troubleshooting for your applications when using Cedexis. Find out more and sign up now.
New Relic is a SaaS-based cloud application performance management provider that offers rich application performance data as part of its service. Cedexis Openmix can use this data to take action on the current state of your application as measured by New Relic. For example, if New Relic reports high CPU load on an application you can have Openmix direct traffic to a less loaded instance of your application.
This sample application demonstrates the use of New Relic data in an Openmix application.

Web Services
Use these web services to access Radar data or read and update your Cedexis configurations programmatically. Documentation and examples are available and pull requests are gladly accepted.

iOS Streaming
Integrate Radar streaming measurements into your iOS apps with this library. Pull requests are gladly accepted.

Android Streaming
Integrate Radar streaming measurements into your Android apps with this library. Pull requests are gladly accepted.

Silverlight
Integrate Radar streaming measurements into your Silverlight applications with this library. Pull requests are gladly accepted.

Flash Streaming
Integrate Radar streaming measurements into your Flash clients and players with this ActionScript library. Pull requests are gladly accepted.
The Cedexis development dream team
The folks are gittin' dirty every day

Josh Cody
Senior Operations Engineer
I'm sick of following my dreams. I'm just going to ask them where they're going, and hook up with them later.

Jon Chase
Sr. Software Engineer
Everything you read on the internet is true.

Neil Chazin
Sr. Software Engineer
The process of delving into the black abyss is to me the keenest form of fascination.

Megan Chinburg
VP of Engineering
A boom box is not a toy.

Esteban Esperanza
Señor Operations Engineer
Code responsibly my friends.

Gregory Grillo
Sr. Software Engineer
In order to understand recursion, one must first understand recursion.

Ben LeBlond
Sr. Software Engineer
Les sanglots longs / des violons / de l'automne

Marty Kagan
Co-Founder and CEO
What do you mean it's not done yet?
@martykagan

Scot Kennedy
Data Analysis Engineer
Quick! Roll a saving throw or take 3d6 damage from a Dire Bizinter.

Connor McLeod
Software Engineer
There can be only one.

Jacob Wan
Software Engineer
Don't thread on me.