Lightning talks
- IBM and their voice recognition software
- A culture of continuous learning
- Incorrectly cited the source of a picture (Southeast Asia instead of Hawaiians)
- Tasks to achieve end goals
- Defining a precise SLA for performance
- Should put the user first, every decision we make, should all be done in service of the user
- Problem with racing websites that means you're racing with competition instead of checking how you're measuring up with how your satisfying your customers when they are on your website
- Referencing Apdex - measuring response time based on a threshold
- Metric: How long have the customer waited? And what was their behavior as a result from that waiting?
- Consumer Performance Index
- Discovering operations expertise
- How do we design systems to prevent catastrophic failure?
- This ends up reviewing how we design teams in order to solve how we can prevent catastrophic failure
- Escaping tabs with progressive (web) apps, Ilya Grigorik
- mobile apps vs web apps, experience in installing on mobile is slow compared to just going to a web app
- Progress web app - webpage that upgrades it's capabilities, via ServiceWorker
Polyglot Datastores at Yelp
- Education
- docs. Evolve with your code. Denote if it's old or deprecated.
- lectures (5-40 minutes)
- a network of experts
- office hours (good to have a set time)
- irc or other chat
- Store evolved over time
- went over Cassandra, Elasticsearch
- Elasticsearch - acts as a database and can search things like JSON documents
- Puppet - general purpose tool. Not so good at healthchecking, dynamic cluster, etc
- SmartStack - general purpose cluster load balancer, healthchecking.
- Sensu - Monitoring/alerting via chat, emails, tickets, pages
- Monitoring - when to ticket
- MySQL - 10s replication delay for 2 hrs
- Elasticsearch in prolonged yellow state
- Cassandra losint local_one
- Zookeepr losing quorum
- Don't monitor single hosts
- Graph everything - robust metrics to dig in
- Good abstractions
- Writes and reads
- Query proxy between service and logic layer to marshal
- This is similar to how we have hub or how Core is abstracted with lower-level logic hidden and can be swapped/maintained
- Well defined interfaces to easily test
- Rapidly iterate and change and not having to tie down developers to code that is tightly coupled
Sidenote and Action
- Cool that they do Q&A randomly,to keep interest picqued.
- Read engineering blog article
Mobile Continuous Delivery
Discussed workflow and a myriad of tools.
- PonyDebugger
Measuring the Performance of Single Page Web Applications
- Boomerang created from open-source project from Philip Tellis at Yahoo. SOASTA uses it
- Hard navigation vs Soft navigations - page first load, then route from this page, respectively
onload
potentially not relevant anymore for when user can actually see some content.- Traditionally RUM tools don't measure after
onload
event occurs - Browser won't tell you when all resources have been downloaded. How?
- We care about perceived performance. In some cases, when user can do the next action, when the UI is available for the user to start using it
- We care about the
start event
andstop event
- Start event: when browser starts the process of loading the next page
- Different events you can use, browser history changing, SPA framework routing events, user click or XHR trigger.
window.history
can tell us when the URL is changing
- End event: How do you tell the end when SPA navigation is complete?
- Could be when networking activity is complete
- When UI is visually complete above the fold
- When the user can interact with the page
- Traditional RUM (Real-User Monitoring) measures up to the
onload
event- When all resources have been fetched
- Which resources could effect the visual completion of the page?
- Need to monitor all network connectivity
- Let's make our own
onload
event, from waiting for all network activity to complete- monitor any XHR requests and proxy it
- intercept
open
method
- By proxying:
- upside: can monitor start and loading of assets
- downside: need additional code to support XDomainRequest
- Mutation Observer
- listen for DOM change events
- downside: not supported across all browsers
- polyfills: to get a mutation observer like callback. Performance implications. Don't recommend, as they will cause performance problems
- Lifecycle
- What happens over time? How well does your app behave?
- Track memory usage
- DOM length, complexity of the page
- Number of JavaScript errors
- Bytes fetched
- Framerate
- Specs out there
- w3C Fetch standard
- Fetch observer
- Presentation Slides
- Questions
Action
- Review slides again
- Review tools
- View Webpagetest.org film strips and see where in waterfall
onload
shows - Test
onload
event with filmstrip on our application to see relevance ofonload
- Look at what they are doing in boomerang
Docker Learning Notes
- Docker client uses Docker daemon to do the heavy lifting in working with Docker containers.
- Containers are made from Docker images which is an instance of the blueprint of the OS like Ubuntu and possibly the web application and all its necessary packages installed.
- These containers are stored on a Docker Hub or registry. This is also open-sourced so users can host their own registries.
- Downloading Docker Toolbox - didn't work, so just working with
boot2docker
. Was buggy and not running commands. - boot2docker
- Always run
$ boot2docker up
and export Docker variables before running commands
-
- Always run
Benefits
- Quickly testing app in environment similar to DEV/QA/Production with less overhead than a Virtual Machine (VM)
- Sharing your app+environment with other developers == fast/reliable onboarding