Robert Goik: Wszyscy kochamy type systems. TypeScript jest świetny, przenosi rozwijanie doświadczenia na zupełnie nowy poziom. GraphQL to system typów dla naszego API. W trakcie prezentacji, Robert spróbuje wycisnąć z niego jeszcze więcej za pomocą Apollo Federation. Wspólnie poszukamy odpowiedzi na pytanie o implementację GraphQL w architekturze rozproszonej.
20. INTEGRITY PRINCIPLES
One Graph
“Your company should have one unified graph,
instead of multiple graphs created by each team.”
https://principledgraphql.com/
22. INTEGRITY PRINCIPLES
Track the Schema in a Registry
“There should be a single source of truth for
registering and tracking the graph.”
https://principledgraphql.com/
23. Principled GraphQL
AGILITY PRINCIPLES
4. Abstract, Demand-Oriented Schema
5. Use an Agile Approach to Schema Development
6. Iteratively Improve Performance
7. Use Graph Metadata to Empower Developers
https://principledgraphql.com/
24. AGILITY PRINCIPLES
Abstract, Demand-Oriented Schema
“The schema should act as an abstraction layer that
provides flexibility to consumers while hiding
service implementation details.”
https://principledgraphql.com/
25. AGILITY PRINCIPLES
Use an Agile Approach to Schema Development
“The schema should be built incrementally based
on actual requirements and evolve smoothly over time.”
https://principledgraphql.com/
26. AGILITY PRINCIPLES
Iteratively Improve Performance
“Performance management should be a continuous,
data-driven process, adapting smoothly to changing
query loads and service implementations.”
https://principledgraphql.com/
27. AGILITY PRINCIPLES
Use Graph Metadata to Empower Developers
“Developers should be equipped with
rich awareness of the graph throughout the entire
development process.”
https://principledgraphql.com/
28. Principled GraphQL
OPERATIONS PRINCIPLES
8. Access and Demand Control
9. Structured Logging
10. Separate the GraphQL Layer from the Service Layer
https://principledgraphql.com/
29. OPERATIONS PRINCIPLES
Access on Demand Control
“Grant access to the graph on a per-client basis,
and manage what and how clients can access it.”
https://principledgraphql.com/
31. OPERATIONS PRINCIPLES
Separate the GraphQL Later from Service Layer
“Adopt a layered architecture with data graph
functionality broken into a separate tier rather
than baked into every service.”
https://principledgraphql.com/
38. @extends directive?
“Some libraries such as graphql-java don't have native support
for type extensions in their printer. Apollo Federation supports
using an @extends directive in place of extend type to annotate
type references|”
https://www.apollographql.com/docs/federation/federation-spec/
DIRECTIVES: @extends
51. Apollo Federation - subscriptions
Apollo Server 3 removes built-in
support for subscriptions
Subscriptions are not currently
supported in Apollo Federation.
https://www.apollographql.com/docs/apollo-server/data/subscriptions/