[QCon 2019] Not Sold Yet: GraphQL

Speaker: Garrett Heinlein from Netflix

For other QCon blog posts, see QCon live blog table of contents

Use case at Netflix

  • Takes big bets
  • Organize data as single entity graphs
  • Wanted to merge graphs so can cross query
  • Early on in GraphQL journey

Team dynamics

  • “Monoliths are great” – single code base, atomic changes, simple deployments. “It might be a big ball of mud, but you love that ball of mud”
  • Can’t have over a dozen people working on one system
  • Microservices reduce costs with smaller teams and lessen communication
  • REST APIs require care to change spec changes

GraphQL

  • Express what is possible
  • Can get just data need
  • Schema is the source of truth
  • Can focus on product
  • Optimize exploration over documentation

Disadvantages

  • Rewriting code. But don’t have to change everything
  • Multiple entity graphs require managing release cycles

Consider

  • Designing graphs
  • Talk to others who have already done
  • Whether focus is data or clients
  • UI or entity centric schema
  • Who owns the schema? ex: ivory tower committee, informed captain per entity
  • DIstributed writes. Reading is far easier. For now Netflix is limitting updates to single entity
  • Error handling

Q&A [he left a lot of time for Q&A which was good because lots of good questions!]

  • Performance? Can do rate limiting. Can whitelist allowed queries for production. batching. Recommends Apollo product.
  • Concurrency and parallelism? GraphQL planner (like explain) so can optimize query. Complicated. Will be open sourced [missed product name]
  • Lazy problems with different sources? If know something can fail, put that error state into the schema
  • Multiple teams using entity with different view? Each team owns subtype and one team owns main type.
  • Business logic errors? Evolving topic. Can “or” return type so can be User type *or* “404 type”. Then calling code has different logic based on return type.
  • How deal with breaking changes in Federated graph? Apollo helps with this. Can report on specifications and performance based on production usage
  • Team communication for design? Working groups for things like pagniation. Now have federated team to build entity graphs and teams maintain their entities.
  • How avoid duplication? All using graphql. Not doing long enough to have bloat.
  • Deprecation strategy? Netflix doesn’t tell people what to do. Developers choose. Thinks Facebook never deprecated anything internally. Hasn’t encountered yet at Netflix.
  • Need to write resolver for each query. Bigger benefit is for clients

My impression

I’ve used GraphQL with GitHub as a consumer. It was interesting “formalizing” that knowledge by learning why another company started using it. Along with some pros and cons. They are early in the journey. I’d be interested to see this talk in another year or two after they have more experience. I enjoyed the talk as is though. It provided good insights and things to think about.

[QCon 2019] Learning From Machines

Speaker: Ashi Krishnan @rakshesha

For other QCon blog posts, see QCon live blog table of contents

http://lfm.ashi.io

Note: this is not as good as my usual blog posts as far as capturing information. See the impressions section at the bottom for why.

General

  • Neural network
  • Gradient system
  • Eyes see using layers
  • Each neuron has a receptive field
  • Inception – one pass from beginning to end
  • Neural networks – reinforce
  • Movement affects brain
  • Neural networks can recognize when something is off about the input
  • Recognition can have same problems as optical illusions

Dreams

  • Algorithm can generate fake human photos
  • Trained with two classes – real and fake
  • Generator being fed noise

Latency

  • Efference – signal to brain
  • Predict how body’s state will change
  • Signals have latency (10ms)
  • Use prediction for smooth moments and to anticipate touch
  • This is why cerebellum damage makes jerky movements

My impressions

I’m really sensitive to visual distraction. Which meant I had trouble paying attention to the beginning concepts with all the flashing and zooming images. I also felt a little dizzy with the sustained zooming and had to close my eyes at a few points. (It’s not easy to trigger even mild motion sickness on a screen that size) There was a disclaimer up front.. But it definitely impacted my learning anything. During the calm parts, even the lower right changed from her twitter handle to website periodically (on the same slide). This meant I was continually drawn to that over the material. This became a negative feedback loop because I didn’t hear/retain key definitions up front and had to google. Which meant I missed more. It wasn’t just the beginning. The movement throughout made me struggle. I know the movement was reinforcing key points. It didn’t for me. The parts that I was able to follow were good so I feel like I missed out.

Live blogging from QCon 2019

It’s my first time live blogging since we upgraded the blog software. Fingers crossed I can keep up!

Before I get to the blog, I became a Java Champion on Tuesday morning. Wes announced it right before I announced my track. It was awesome!

Stats and Impressions

  • 145 speakers
  • Over 1000 attendee
  • 25 minute breaks for hallway track
  • Love the badges emphasizing first names

Monday

Tuesday

Wednesday