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

How to make a technical decision

How to make a technical decision

Anton Davydov

December 19, 2019
Tweet

More Decks by Anton Davydov

Other Decks in Programming

Transcript

  1. • Memes • Coffee • Beer • Kendo • Psychology

    • jRPG • SW-2039-0208-4228 / 3DS also welcome • How to draw images for presentations
  2. PoC

  3. Thrift is an interface definition language and binary communication protocol

    used for defining and creating services for numerous languages. … written in a variety of languages and frameworks, including ActionScript, C, C++,[3] C#, Cappuccino, Cocoa, Delphi, Erlang, Go, Haskell, Java, Node.js, Objective-C, OCaml, Perl, PHP, Python, Ruby, Rust, Smalltalk and Swift. ....
  4. ADR

  5. # [short title of solved problem and solution] * Status:

    * Deciders: * Date: ## Context and Problem Statement ## Decision Drivers ## Considered Options ## Decision Outcome ### Positive Consequences ### Negative Consequences ## Pros and Cons of the Options ## Links
  6. SOA

  7. Infrastructure * How to deploy apps separately * Docker or

    something else * How to share resources * cloud or bare metal * CI and CD * Docker regestry * slack bots * local k8s cluster
  8. Data * data evolution * How to store and calculate

    state * Allowed DB * How to share data between services
  9. Sync communications * frontend <> backend * backend <> backend

    * How to handle failed services, DB or integration * Distributed tracing * Diagram of communications * Compatibility level * Documentation
  10. Async communication * Message bus * Message schema evolution *

    Schema registry * How to consume and produce data * Distributed tracing * Diagram of communications * Compatibility level * Documentation
  11. Gateways * api gateway * GQL gateway (if needed) *

    schema stitching * JSON API to GQL
  12. Business logic and domains * distributed transactions * distributed locks

    * DDD and domain sharing * business events * microservice chassis
  13. Observability * App level * Logs * Metrics * Error

    handling * Company level * Services diagram * Service characteristics * Service owning
  14. Analytics * ETL * How to get data from services

    * Event based approach * How to work with DS models?
  15. Sync communications * frontend <> backend * backend <> backend

    * How to handle failed services, DB or integration * Distributed tracing * Diagram of communications * Compatibility level * Documentation
  16. Sync communications * frontend <> backend * backend <> backend

    * How to handle failed services, DB or integration * Distributed tracing * Diagram of communications * Compatibility level * Documentation
  17. • Uses JSON for serialization • Works with HTTP/1.1 •

    IDL + Tolerant reader • Bulshitless discussions • Pact integration • Simple documentation • Works with ruby, node.js, go, elixir, java • Easy for debugging
  18. • Shopify - GQL • Github - BERT-RPC and GQL

    • Gitlab - nothing • Airbnb - Thrift • Heroku - JSON API • Coinbase - gRPC • Cookpad - gRPC • Twitter - Thrift
  19. PoC

  20. # [short title of solved problem and solution] * Status:

    * Deciders: * Date: ## Context and Problem Statement ## Decision Drivers ## Considered Options ## Decision Outcome ### Positive Consequences ### Negative Consequences ## Pros and Cons of the Options ## Links
  21. # [short title of solved problem and solution] * Status:

    * Deciders: * Date: ## Context and Problem Statement ## Decision Drivers ## Considered Options ## Decision Outcome ### Positive Consequences ### Negative Consequences ## Pros and Cons of the Options ## Links