Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

A field guide to the Financial Times, Rhys Evans, Financial Times

Neo4j GraphTour Europe - Customer Presentation:
A field guide to the Financial Times, Rhys Evans, Principal Engineer, Financial Times

  • Be the first to comment

  • Be the first to like this

A field guide to the Financial Times, Rhys Evans, Financial Times

  1. 1. A field guide to the Financial Times Rhys Evans Principal Engineer, Financial Times @wheresrhys
  2. 2. @wheresrhys Who I am ● Worked in tech 10+ years ● Gradually moved into tooling ● Co-lead the FT’s Reliability Engineering team ● Lifelong birdwatcher
  3. 3. @wheresrhys From Wikipedia: A book designed to help the reader identify wildlife (plants or animals) or other objects of natural occurrence (e.g. minerals). What is a field guide
  4. 4. ● Why the FT needs a field guide ● Organising our guide with neo4j and GraphQL ● Filling in the details
  5. 5. Why the FT needs a field guide
  6. 6. @wheresrhys Insert non dramatic screenshot
  7. 7. @wheresrhys
  8. 8. @wheresrhys
  9. 9. @wheresrhys
  10. 10. @wheresrhys
  11. 11. @wheresrhys “A tool dating from before the trees that built the ark. Unowned, unknown, and worth £250k of business. One day it fell over. We founds docs dated 1999... which helped” Greg Cope, Tech Director, FT
  12. 12. @wheresrhys Starting about 5 years ago, the range of tech we have to support exploded
  13. 13. @wheresrhys Previously Centralised decision making Monolithic architectures Data centres Infrequent releases
  14. 14. Move slow and achieve little
  15. 15. @wheresrhys Microservices FT were early adopters of microservices architecture Lots of independently deployed services easier to ● Pick the right tool for the job ● Release and iterate ● Replace and decommission
  16. 16. @wheresrhys Liberalisation Matt Chadburn “[...] follow the mechanics of free- market economy. Teams are allowed and encouraged to pick the best value tools for the job at hand”
  17. 17. @wheresrhys OUT IN Data Centre Your favourite cloud ‘The FT Platform’ Pick your own SaaS Java, Java, Java I hear Rust’s good... Ivory tower What works
  18. 18. @wheresrhys “The upside of this is teams, left to their own devices, and trusted to make responsible decisions will choose what is best for themselves and the business in the long-term.” Matt Chadburn
  19. 19. Build stuff and disappear
  20. 20. @wheresrhys Legacy is sooner than you think ● All images appearing on our websites relied on 1 person... who left ● A vanity url service built by a feature team that disbanded shortly after ● Part of our membership platform built in a niche language ● And many, many more
  21. 21. @wheresrhys 5 years is a long time in tech Long enough for ● Shiny new things to become legacy ● Budgets and business priorities to move on ● People to leave
  22. 22. @wheresrhys ● Have to keep lots of tech ticking over ● Generating more new stuff than ever before to keep track of ● Liberalising the tech department leads to ownership & maintenance problems Need a field guide to help us navigate the space In summary
  23. 23. Unowned & unknown
  24. 24. Owned & known
  25. 25. Organising our guide with neo4j and GraphQL
  26. 26. @wheresrhys ● Reaffirm who owns the various bits of FT tech ● Improve information about what is actually running and why ● Determine what state it’s in at any given time 3 priorities to improve reliability
  27. 27. @wheresrhys Who is our audience? Operations team ● Active 24/7 ● Broad knowledge of our tech platforms ● Need to know which approaches can be applied to incident X ● If nothing works, who to call
  28. 28. @wheresrhys CMDB versions 1 - 3 were: ● Too inert - Enter once and forget about it ● Too brittle - Chains of responsibility easily lost ● Too discrete - Hard to make important connections Not the first attempt
  29. 29. @wheresrhys ● The natural question to ask when addressing a problem ● Links between people and things dotted all over our previous CMDBs ● Intuitive but brittle Who can help me with system X?
  30. 30. @wheresrhys ● Hard to connect data, so get overly simplified models of reality ● Several degrees of separation is modelled as a systemOwner field ● Simple, but inaccurate and hard to maintain Relational databases constrain
  31. 31. @wheresrhys ● Designed to model complex relationships ● No need to simplify and abstract away details that actually matter ● If person X is a stakeholder via 4 degrees of separation, represent them as such Graph databases liberate
  32. 32. @wheresrhys A graph restatement of the problem ‘How can I ensure systems are assigned to the right people’ → ‘How can I ensure systems are connected somehow to the right people’
  33. 33. @wheresrhys System ? ? ? ? ? ? ? ?
  34. 34. Model the stable stuff first Model the stable stuff first
  35. 35. @wheresrhys ● Pick a unique, human readable code ● Kill infrastructure not tagged with it ● In our graph, the System record must be connected to a Team When systems are created we:
  36. 36. @wheresrhys ● Stable, manageable subdivisions of the organisation ● Tech director who is ultimately responsible On top of this stable foundation we can add the more ephemeral things Our tech connected to
  37. 37. @wheresrhys BIZ-OPS MAN
  38. 38. @wheresrhys ● Self-service ● No such thing as a power user ● Extensible ● API first, but UI a close second Data warehouse free
  39. 39. @wheresrhys REST API ● OK when fetching a single record type ● Painful to traverse ‘Canned query’ endpoints ● Less generic ● Limited by our imagination Some poor API options
  40. 40. @wheresrhys GraphQL to the rescue “GraphQL is a query language for APIs [...] gives clients the power to ask for exactly what they need [...] not just the properties of one resource but also smoothly follows references between them”
  41. 41. @wheresrhys neo4j-graphql-js ● GraphQL normally talks to multiple APIs and combines the results ● neo4j-graphql-js converts GraphQL queries to cypher, and talks to neo4j directly
  42. 42. @wheresrhys
  43. 43. @wheresrhys GraphQL big wins ● User friendly: Single, grokable query to get unlimited connected info ● Future proof: Mirrors the neo4j graph as its complexity grows ● More efficient: Fewer API calls and fewer and faster DB calls
  44. 44. @wheresrhys ● Hungry users: Allows unwitting construction of very expensive queries ● Caching: Not obvious what caching behaviour to implement ● To write or not to write: Not persuaded to move away from REST yet Pitfalls of GraphQL
  45. 45. @wheresrhys An extensible UI
  46. 46. @wheresrhys
  47. 47. #GRANDstack GraphQL + React + Apollo + Neo4j Database
  48. 48. @wheresrhys In summary ● Some confidence that Biz Ops won’t degrade into a data graveyard ● Unlimited access to data for any person or machine But is the data actually any good?
  49. 49. Filling in the details
  50. 50. @wheresrhys Not the first attempt CMDB versions 1 -3 were ● Too inert - Enter once and forget about it ● Too brittle - Chains of responsibility easily lost ● Too discrete - Hard to make important connections
  51. 51. @wheresrhys Don’t rely on good behaviour ● Automate ● More carrot, less stick ● Gamify ● UX
  52. 52. @wheresrhys Automate ● Machines don’t forget to update information ● Restrict write access for certain records/types to privileged clients ○ people-api → Writes details of FT staff ○ github-importer → Writes details of repositories ○ …
  53. 53. @wheresrhys More carrot, less stick
  54. 54. @wheresrhys Gamify Teams respond well to seeing how they compare, and how they can improve
  55. 55. @wheresrhys UX
  56. 56. @wheresrhys
  57. 57. @wheresrhys Not just visual design ● Understand your users ● Uncover sources of friction ● Learn about their existing/ideal workflow ● Don’t expect them to come to you ● “Good design is invisible”
  58. 58. @wheresrhys ● System source code changes in Github, ● But runbook authorship in Biz Ops ● Bound to get out of step ● What if they happened concurrently? Example: runbook authorship
  59. 59. @wheresrhys ● Runbooks written in with front matter metadata ● Content pulled into Biz Ops when production code release detected ● Github PR integrations to follow Example: runbook authorship
  60. 60. @wheresrhys ● Underpinning how we handle GDPR requests ● Quicker triaging of security incidents ● Integrating with leavers process More benefits → more incentives to improve data Beyond operational info
  61. 61. What have we learned today?
  62. 62. Model the stable stuff first Legacy code comes to us all
  63. 63. Model the stable stuff first Documented legacy is good legacy
  64. 64. Model the stable stuff first Graphs enable more powerful modelling
  65. 65. Model the stable stuff first Using #GRANDstack is like being the film version of Mark Zuckerberg
  66. 66. Model the stable stuff first Your data won’t update itself
  67. 67. Model the stable stuff first UX and other feedback loops can keep it fresh
  68. 68. Thank you The team: Geoff Thorpe, Laura Carvajal, Charlie Briggs, Katie Koschland, Simon Legg, Maggie Allen, Courtney Osborn, Kat Downes, Sentayhu Mekoonnali, David Balfour Images from: of-america/ @wheresrhys