Upload
new-relic
View
297
Download
0
Embed Size (px)
Citation preview
1
Joel Worrall CTO
CURE International
Accelerating innovation:Do more with less in your startup
Accelerating InnovationUsing the New Relic Software Analytics Cloud to do more with less.
Joel WorrallCTO, CURE International@tangollama
Why this is a good use of 25 minutes?
● Context● Insights● Applications
1 ContextWhat’s “startupy” about CURE?
We have hospitals in 10 countries and operate programs, such as clubfoot and hydrocephalus in an additional 20 countries.We have ~1500 employees worldwide, only 45 in the US.
CURE Operations Map
5# OF PEOPLE ON THE TECH TEAM,
INCLUDING IT SUPPORT & THE TALKING HEAD (ME)
From online donors and reporting to program delivery, New Relic helps us heal kids.
cure.org & CUREkidsCustom Wordpress applications with online donations, marketing content, and our real-time patient reporting platform utilizing the complete suite of services.
HydroOSOffline-first cloud-based EMR for a hydrocephalus treatment program, using Servers, APM (PHP), Browser & MySQL.
HospitalRunOpen source, offline-enabled cloud-based EMR focused on bringing the world’s best usability experience in healthcare to the nearly 14,000 facilities in the developing world, supported by APM (Node), Browser & (TBI) Insights.
We are “full platform” users
2 InsightsSome practical advice from what we’ve learned as a team.
APM is an assumptionI’m not sure I even need to say this, but I will anyway...
Catch performance issues before you even deployDevelop with the agent installed locally
Profiling your app in dev = time saved.Pic cred: https://xkcd.com/1513/
For mission-critical functional and performance monitoring
● Measure performance for a global user base.
● Ensure that the stuff that can’t break, isn’t.
● Validate that ancillary services are up and running.
Use Synthetics Strategically
Pic cred: https://xkcd.com/1319/
Learn from what users are actually doing vs. just what they might say they want.
CUREkids Actions:● Age● Condition● Country● Etc.
App Analytics > Focus Group
Product Management
Using the API to add additional data into the capture request
if (function_exists(‘newrelic_add_custom_parameter’)) { newrelic_add_custom_parameter("ck_user_id", $cua->getUserId()); newrelic_add_custom_parameter("ck_profile_id", $cua->getProfileId()); $profile = new CkProfile(); $profile->load($cua->getProfileId()); newrelic_add_custom_parameter("ck_url", $profile->getFriendlyUrl()); newrelic_add_custom_parameter("ck_condition", $profile->getConditionTerm()->slug); newrelic_add_custom_parameter("ck_country", $profile->getCountryTerm()->slug); newrelic_add_custom_parameter("ck_gender", ($profile->isFemale() ? "F" : "M")); newrelic_add_custom_parameter("ck_age", $profile->getBirthYearsDifference()); //do some other stuff to set the ck_action and gift_amount
}
Capturing the data in New Relic
3 ApplicationsDirecting user behavior with app analytics
Using Insights as reporting mechanism into your user experience.
Data captured in CUREkids goes to New Relic, then out of New Relic and into CUREkids.
New Relic “Inception”
Using the Insights query API
if (function_exists(‘newrelic_insights_query’)) { //other stuff
$json = newrelic_insights_query( "SELECT uniques(ck_profile_id) from Transaction since 7 days ago limit 10"); update_option("nr_stats_recent_profiles", $json);
//overall impact $json = newrelic_insights_query(
"SELECT count(*) from Transaction WHERE ck_action IS NOT NULL FACET ck_action SINCE '".curekids_get_last_sunday()."'");
update_option("nr_stats_overall", $json); }
Reading the data back out of New Relic
By measuring user interactions
HospitalRun home screen defined not only by role but individual user history.
Defining User Experience
using PageActions and the Browser API
//hospitalrun patient edit route newrelic.addPageAction(‘hr_watch_patient’, { userName: UserSession.getUserName(),
patientId: patientId, externalId: model.get('externalPatientId'), displayName: model.get('displayName')
});
//NQRL retrieval to build the home screen SELECT uniques(patientId) FROM PageAction WHERE userName=<this user> SINCE 2 weeks ago
Capturing JS App Actions in New Relic
Questions?
Meet my primary customer: David from Kenya
Before
After