Adaptive Architectures • Marty Pitt • GOTO 2023

Поделиться
HTML-код
  • Опубликовано: 2 авг 2024
  • This presentation was recorded at GOTO Copenhagen 2023. #GOTOcon #GOTOcph
    gotocph.com
    Marty Pitt - Founder at Orbital & Notional
    ORIGINAL TALK TITLE
    Adaptive Architectures: Reimagining API Federation & Microservices Integration
    RESOURCES
    / marty_pitt
    / martypitt
    linktr.ee/martypitt
    Links
    taxilang.org
    github.com/taxilang/taxilang
    orbitalhq.com
    github.com/orbitalapi/orbital
    ABSTRACT
    As organisations adopt microservices - composing our various APIs, DBs, Queues and Functions has become critical to getting things done.
    However, the glue code that we write to stitch everything together tends to be brittle, and a constant inertia to change.
    This talk explores how to leverage existing API specs (OpenAPI and gRPC) to deliver composition and federation of APIs, without writing and maintaining glue code.
    We'll explore how using API Specs as First Class Citizens of our enterprise integration, along with Semantic Metadata, allows us to create a mesh of services that connect on demand, and self-adapt their middleware as services around them change.
    This is an in-depth exploration into Taxi - a meta-language for annotating API specs, and TaxiQL - a query language and open source orchestration engine, which can generate and adapt integration on demand. [...]
    TIMECODES
    00:00 Intro
    02:17 Example: shop-o-pie
    06:37 Glue code
    12:02 APIs
    13:48 Prepare to be amazed
    19:14 Semantic metadata
    24:48 TaxiQL
    29:20 Query execution
    29:42 Example: shop-o-pie continued
    33:41 Summary
    35:00 Outro
    Download slides and read the full abstract here:
    gotocph.com/2023/sessions/2989
    RECOMMENDED BOOKS
    Ford, Parsons, Kua & Sadalage • Building Evolutionary Architectures 2nd Edition • amzn.to/3lqr5Q8
    Ford, Richards, Sadalage & Dehghani • Software Architecture: The Hard Parts • amzn.to/3QeMgjR
    Mark Richards & Neal Ford • Fundamentals of Software Architecture • amzn.to/3wMBhoI
    Christian Clausen • Five Lines of Code • amzn.to/3s2zjyg
    / gotocon
    / goto-
    / goto_con
    / gotoconferences
    #AdaptiveArchitectures #SoftwareArchitecture #APIs #APIFederation #Microservices #OpenAPI #gRPC #SemanticMetadata #GlueCode #AutomatedGlue #ApacheKafka #Taxilang #TaxiQL #Orbital #MartyPitt
    Looking for a unique learning experience?
    Attend the next GOTO conference near you! Get your ticket at gotopia.tech
    Sign up for updates and specials at gotopia.tech/newsletter
    SUBSCRIBE TO OUR CHANNEL - new videos posted almost daily.
    ruclips.net/user/GotoConf...
  • НаукаНаука

Комментарии • 14

  • @TechTalksWeekly
    @TechTalksWeekly 3 месяца назад +10

    This talk has been featured in the last issue of Tech Talks Weekly newsletter 🎉 Congrats Marty!

  • @andrewgkew
    @andrewgkew 3 месяца назад +3

    Great talk! Very clear and well presented. Love this concept of creating a semantic model of your data ❤

  • @jscancella
    @jscancella 2 месяца назад +7

    Seemed cool until it basically needs orbital to do everything. I wish i could embed the guts of orbital directly in my application instead

    • @martypitt6529
      @martypitt6529 2 месяца назад +4

      You can. There's an open source embeddable TaxiQL engine that you can stick in your apps. (It's JVM based, but anyone could build a TaxiQL engine in a different language)

    • @jscancella
      @jscancella 2 месяца назад +2

      @@martypitt6529 that's great to hear! Do you have examples of using it with an event type system like Kafka as well?

    • @martypitt6529
      @martypitt6529 2 месяца назад +2

      @@jscancella absolutely - Kafka is one of our main use cases in the wild. Details are in the docs (can't link here, sorry). We're all on slack, so can answer in more detail there!

    • @jscancella
      @jscancella 2 месяца назад

      @@martypitt6529 Thanks I will check it out! We aren't using Kafka yet, but I think where I work will inevitably move to a message based system in the future and I am hoping we can use this

    • @abasappa2343
      @abasappa2343 2 месяца назад

      @@martypitt6529 c. M xc. I mdc. M. A

  • @Tony-dp1rl
    @Tony-dp1rl 3 месяца назад +4

    Great talk, but like so many other tools and patterns these day, I don't really have any problem that this solves. I can't remember the last time I was impacted by anything that this would have assisted me with. Maybe an hour a year.

  • @ptgnt
    @ptgnt 3 месяца назад +1

    Clear talk but a fair bit of effort to compensate for contract lasters not using shared management of OpenAPI ref’s?

    • @martypitt4121
      @martypitt4121 3 месяца назад +1

      Thanks for the kind words!
      Regarding (over)compensating - personally, I've found that however you approach this, you end up having to solve a mapping challenge.
      Either everyone uses exactly the same request/response objects through their entire stack (which is rarely a good idea - domains model data differently for good reason), or you'd end up having to build a mapping layer from the OpenAPI facade to the internal domain model. As soon as you do this, you're back to building a hand-rolled mapping layer.
      In practice, teams tends to adopt DDD, so each domain has their own version of a concept, and consumers tend to operate by aggregating the domains together. At that point, you're tightly coupling consumers to the producers, and back to mapping challenges.

  • @valmirbezerra4832
    @valmirbezerra4832 3 месяца назад +1

    Bom dia

  • @MikhailPryakhin
    @MikhailPryakhin 3 месяца назад

    Brilliant idea, thanks! How do you enforce the minimum privilege principle (authN and authZ) for Orbital when you don't know in advance which services it will talk to?

    • @martypitt6529
      @martypitt6529 3 месяца назад +1

      Hey. Great question!
      We apply data access policies to data type, rather than services, and then apply them globally in the middleware.
      Turns out this aligns quite nicely, as people tend to want to secure data and capabilities, so the data contract is a more natural place to declare this, than in the implementation code of a service.