Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A complexity odyssey

A complexity odyssey

Fabrizio Fortunato

October 04, 2018
Tweet

More Decks by Fabrizio Fortunato

Other Decks in Programming

Transcript

  1. A complexity odyssey Ulysse arrache à Andromaque l'enfant Astyanax -

    Louis de Silvestre A Journey from Complexity: Reducing Technical Debt
  2. Sing to me of the man, Muse, the man of

    twists and turns driven time and again off course, once he had plundered the hallowed heights of Troy. Ulysses deriding Polyphemus - William Turner
  3. Business logic Is that part of the program which encodes

    the real-world business rules that determine how data can be created, displayed, stored, and changed. Search Flights Dates Flights available Display flights Suggest different dates
  4. Backend for frontend • Reduce complexity on frontend • Unify

    different data models • Share logic across clients
  5. GraphQL GraphQL is a query language for your API, and

    a server-side runtime for executing queries by using a type system you define for your data. • Model your business domain as a graph by defining a schema • Declarative data fetching, the client specify the data necessary
  6. Frontend monolith • User interfaces are by nature a monolith

    for performance reasons • Low interoperability between frameworks makes it single framework oriented • High exposure to technical debt by coupling
  7. • Scaling up teams and software is hard! • Everyone's

    responsibility is no one's responsibility • We can’t write software fast enough Ryanair monolith > 300K LOC 75+ Routes ~422 Services
  8. Micropages • Independent development & deployment • Loosely coupled pages

    • Shared common components across pages • Single Page Application per page
  9. Frontend development roadmap Learn HTML Basic of CSS Basic of

    Javascript Package managers CSS Preprocessors CSS Frameworks CSS Architecture Build tools Pick a Framework Testing your apps PWA Static type checkers ServerSide Rendering Functional Keep exploring
  10. • Cloudfront provides a high speed CDN • S3 supply

    object storage Hosting strategies
  11. Brotli is a generic-purpose lossless compression algorithm that compresses data

    using a combination of a modern variant Brotli compression
  12. Time to full usage Current Flight Select Ryanair 3.0 Flight

    Select No cache (first time visitor) With cache (recurrent visitor) No cache (first time visitor) With cache (recurrent visitor) Online ~10s ~9s ~1.5s ~1.4s Mid-tier mobile ~30s ~25s ~6s ~4.8s