Slide 1

Slide 1 text

newmo ͷ૑ۀΛࢧ͑Δ Software Architecture ͱ Platform Engineering Yuki Ito ʲٕज़બఆΛಥ͖٧ΊΔʳ Online Conference 2025

Slide 2

Slide 2 text

Yuki Ito @mrno110 newmo, Inc. Platform Engineering Team Google Developer Expert Cloud

Slide 3

Slide 3 text

We are Hiring!!!

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Agenda ɾPlatform Engineering @ newmo ɾSoftware Architecture ɾCloud Architecture

Slide 7

Slide 7 text

Agenda ɾPlatform Engineering @ newmo ɾSoftware Architecture ɾCloud Architecture

Slide 8

Slide 8 text

What is Platform Engineering https://tag-app-delivery.cncf.io/whitepapers/platforms/

Slide 9

Slide 9 text

What is Platform Engineering https://tag-app-delivery.cncf.io/whitepapers/platforms/ A platform for cloud-native computing is an integrated collection of capabilities de fi ned and presented according to the needs of the platform’s users. It is a cross-cutting layer that ensures a consistent experience for acquiring and integrating typical capabilities and services for a broad set of applications and use cases.

Slide 10

Slide 10 text

What is Platform Engineering A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. Autonomous delivery teams can make use of the platform to deliver product features at a higher pace, with reduced co-ordination. https://martinfowler.com/articles/talk-about-platforms.html

Slide 11

Slide 11 text

Capabilities of platforms https://tag-app-delivery.cncf.io/whitepapers/platforms/

Slide 12

Slide 12 text

Attributes of platforms 1. Platform as a product 2. User experience 3. Documentation and onboarding 4. Self-service 5. Reduced cognitive load for users 6. Optional and composable 7. Secure by default https://tag-app-delivery.cncf.io/whitepapers/platforms/

Slide 13

Slide 13 text

Platform Engineering Team @ newmo

Slide 14

Slide 14 text

Team Topologies Team Topologies is the result of years of research into how successful leaders design team-of-teams organizations delivering business outcomes through technology. https://teamtopologies.com

Slide 15

Slide 15 text

Team Topologies - Fundamental Team Types ɾStream-aligned ɾComplicated Subsystem ɾEnabling ɾPlatform

Slide 16

Slide 16 text

Platform Engineering Team @ newmo newmo ʹ͓͚Δ Platform νʔϜ͸ɺTeam Topologies ͷߟ ͑ํʹ͓͚Δ Platform νʔϜͱ Enabling νʔϜͷ྆ํͷ໾ ׂΛ୲͏νʔϜͰ͋Γɺ֤ʑͷϏδωεʹԊͬͨ։ൃνʔϜ ʢTeam Topologies ʹ͓͚Δ Stream-Aligned νʔϜʣ͕ࣗ ཯తʹ։ൃΛਐΊΒΕΔΑ͏ͳٕज़ج൫Λߏங͠ɺ։ൃνʔϜ ʹಋೖ͢ΔνʔϜͰ͋Δɻ

Slide 17

Slide 17 text

Platform Engineering Team @ newmo

Slide 18

Slide 18 text

Team Topologies - Team Interaction Mode ɾCollaboration ɾFacilitation ɾX-as-a-Service

Slide 19

Slide 19 text

Platform Engineering Team @ newmo - Vision

Slide 20

Slide 20 text

Platform Engineering Team @ newmo - Mission

Slide 21

Slide 21 text

Attributes of platform teams 1. Research platform user requirements and plan feature roadmap 2. Market, evangelize and advocate for the platform’s proposed values 3. Manage and develop interfaces for using and observing capabilities and services, including portals, APIs, documentation and templates, and CLI tools https://tag-app-delivery.cncf.io/whitepapers/platforms/

Slide 22

Slide 22 text

ελʔτΞοϓͰ Platform Engineeringʁ • ʮνʔϜ͝ͱʹҟͳΔٕज़બఆʯΛආ͚ͯੜ࢈ੑΛ্͛Δ • Stream-Aligned Team ͕ʮ͓٬༷ʹՁ஋Λಧ͚Δʯ෦෼ʹूத͢Δ • ٕज़తͳΨόφϯεΛऔΔ • ʮબఆ == ߟ͑ͯ൑அ͠ͳ͍ͱ͍͚ͳ͍͜ͱʯΛۃྗݮΒ͢ • newmo ͷࣄۀυϝΠϯʢMobilityʣతʹʮத௕ظతͳεέʔϧʯ΋ߟྀ͢Δ΂͖ • ੓࣏΍֤࣏ࣗମΛؚΉࣾձ΁ͷ͸ͨΒ͖͔͚ͷඞཁੑ • ʮ࠷଎Ͱ࣮૷ͯ͠ϦϦʔεʯ͢Δ͚ͩͰ͸͏·͍͔͘ͳ͍ࣄۀྖҬ • ࢿۚௐୡͷঢ়گ

Slide 23

Slide 23 text

Agenda ɾPlatform Engineering @ newmo ɾSoftware Architecture ɾCloud Architecture

Slide 24

Slide 24 text

Agenda ɾPlatform Engineering @ newmo ɾSoftware Architecture ɾCloud Architecture

Slide 25

Slide 25 text

Software Architecture - Principles ✅ API Federation ✅ Code Generation ✅ Modular Monolith (+ Monorepo)

Slide 26

Slide 26 text

API Architecture @ newmo

Slide 27

Slide 27 text

API Architecture @ newmo

Slide 28

Slide 28 text

Why GraphQL? ✅ Ecosystem ✅ Federation ✅ Declarative

Slide 29

Slide 29 text

Why GraphQL? ✅ Ecosystem ✅ Federation ✅ Declarative

Slide 30

Slide 30 text

Evolution of API Architecture (by Net fl ix) https://net fl ixtechblog.com/how-net fl ix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2

Slide 31

Slide 31 text

Evolution of API Architecture (by Net fl ix) https://net fl ixtechblog.com/how-net fl ix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2

Slide 32

Slide 32 text

Evolution of API Architecture (by Net fl ix) https://net fl ixtechblog.com/how-net fl ix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2

Slide 33

Slide 33 text

Evolution of API Architecture (by Net fl ix) https://net fl ixtechblog.com/how-net fl ix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2

Slide 34

Slide 34 text

GraphQL - Direct Access

Slide 35

Slide 35 text

GraphQL - Direct Access type Driver { id: ID! name: String! } type Vehicle { id: ID! driverId: String! }

Slide 36

Slide 36 text

GraphQL - Direct Access ❌ Round Trips ❌ Aggregation Logics reside Web/Mobile side

Slide 37

Slide 37 text

GraphQL - Aggregation

Slide 38

Slide 38 text

GraphQL - Aggregation type Driver { id: ID! name: String! vehicles: [Vehicle!]! }

Slide 39

Slide 39 text

GraphQL - Aggregation ❌ Initiative ❌ Independence ❌ Autonomy

Slide 40

Slide 40 text

GraphQL - Federation

Slide 41

Slide 41 text

GraphQL - Federation type Driver @key(fields: "id") { id: ID! name: String! } type Driver @key(fields: "id") { id: ID! vehicles: [Vehicle!]! } type Vehicle { id: ID! } type Driver { id: ID! name: String! vehicles: [Vehicle!]! } +

Slide 42

Slide 42 text

GraphQL - Federation API Gateway Vehicle GraphQL GraphQL Federation (Apollo Router) Driver GraphQL Platform Business

Slide 43

Slide 43 text

GraphQL + gRPC

Slide 44

Slide 44 text

gRPC gRPC is a modern open source high performance Remote Procedure Call (RPC) framework that can run in any environment. https://grpc.io/

Slide 45

Slide 45 text

GraphQL / gRPC Code Generation 🧑💻

Slide 46

Slide 46 text

GraphQL Code Generation ɾgqlgen (Go) ɾGraphQL-Codegen (TypeScript) ɾApollo Kotlin (Android) ɾApollo iOS (iOS)

Slide 47

Slide 47 text

Custom GraphQL Directives

Slide 48

Slide 48 text

newmo ❤ oss https://github.com/newmo-oss/graphql-codegen-plugin-typescript-react-apollo

Slide 49

Slide 49 text

Components

Slide 50

Slide 50 text

Components

Slide 51

Slide 51 text

Modular Monolith Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble. ... you shouldn't start a new project with microservices, even if you're sure your application will be big enough to make it worthwhile. MonolithFirst Martin Fowler https://martinfowler.com/bliki/MonolithFirst.html

Slide 52

Slide 52 text

Modular Monolith ... splitting applications into independently deployable microservices is not without its challenges, some of which directly contradict the bene fi ts. Towards Modern Development of Cloud Applications Google (ServiceWeaver) https://dl.acm.org/doi/10.1145/3593856.3595909 ... Write monolithic applications that are modularized into logically distinct components.

Slide 53

Slide 53 text

Go Modular Monolith Application Component Component Component HTTP (GraphQL) Server gRPC Server

Slide 54

Slide 54 text

Architecture

Slide 55

Slide 55 text

Architecture - Principles ✅ API Federation ✅ Code Generation ✅ Modular Monolith (+ Monorepo)

Slide 56

Slide 56 text

Agenda ɾPlatform Engineering @ newmo ɾSoftware Architecture ɾCloud Architecture

Slide 57

Slide 57 text

Agenda ɾPlatform Engineering @ newmo ɾSoftware Architecture ɾCloud Architecture

Slide 58

Slide 58 text

Cloud Architecture

Slide 59

Slide 59 text

Why Google Cloud ? • ϚωʔδυίϯςφαʔϏεʢCloud Runʣͷ׬੒౓ͷߴ͞ • ίϯςφٕज़ͷϦʔσΟϯάΧϯύχʔʢKubernetes ͷ΋ͱͱͳͬͨ Borg ͳͲʣ • Google WorkSpace Ͱͷैۀһ؅ཧͱͷ౷߹ • Identity-Aware Proxy ʹΑΔैۀһೝূͷ࣮૷ • Google Maps Platform ͷଘࡏ • newmo ͷࣄۀྖҬʢMobilityʣͱͷ૬ੑ • BigQuery ΤίγεςϜ • ϚʔέςΟϯάπʔϧͰͷαϙʔτͳͲ

Slide 60

Slide 60 text

Design Doc:ʮΫϥ΢υϕϯμʔͷબఆʯ

Slide 61

Slide 61 text

Cloud Run Cloud Run is a managed compute platform that enables you to run containers that are invocable via requests or events. Cloud Run is serverless: it abstracts away all infrastructure management... https://cloud.google.com/run/docs

Slide 62

Slide 62 text

Shared VPC Network

Slide 63

Slide 63 text

API Gateway

Slide 64

Slide 64 text

Without API Gateway Pattern Passenger API Driver API External API Passenger App External Service 🙋 🚗 Driver App

Slide 65

Slide 65 text

API Cross-Cutting Concerns 🤔 Authentication / Authorization

Slide 66

Slide 66 text

API Cross-Cutting Concerns 🤔 Authentication / Authorization 🤔 Access Log

Slide 67

Slide 67 text

API Cross-Cutting Concerns 🤔 Authentication / Authorization 🤔 Access Log 🤔 Transcoding

Slide 68

Slide 68 text

API Cross-Cutting Concerns 🤔 Authentication / Authorization 🤔 Access Log 🤔 Transcoding 🤔 TLS

Slide 69

Slide 69 text

API Cross-Cutting Concerns 🤔 Authentication / Authorization 🤔 Access Log 🤔 Transcoding 🤔 TLS 🤔 Domain

Slide 70

Slide 70 text

API Cross-Cutting Concerns 🤔 Authentication / Authorization 🤔 Access Log 🤔 Transcoding 🤔 TLS 🤔 Domain 🤔 IP

Slide 71

Slide 71 text

API Cross-Cutting Concerns 🤔 Authentication / Authorization 🤔 Access Log 🤔 Transcoding 🤔 TLS 🤔 Domain 🤔 IP 🤔 CDN Integration

Slide 72

Slide 72 text

API Cross-Cutting Concerns 🤔 Authentication / Authorization 🤔 Access Log 🤔 Transcoding 🤔 TLS 🤔 Domain 🤔 IP 🤔 CDN Integration 🤔

Slide 73

Slide 73 text

API Gateway Pattern Passenger App External Service Passenger API Driver API External API API Gateway 🙋 🚗 Driver App

Slide 74

Slide 74 text

API Gateway Pattern https://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/ direct-client-to-microservice-communication-versus-the-api-gateway-pattern#what-is-the-api-gateway-pattern the API gateway sits between the client apps and the microservices. It acts as a reverse proxy, routing requests from clients to services. It can also provide other cross- cutting features such as authentication, SSL termination, and cache.

Slide 75

Slide 75 text

e.g. Authentication / Authorization API Gateway Services Auth Service OK / NG (+ Token) Token Body / Headers Request

Slide 76

Slide 76 text

API Gateway Pattern Passenger App External Service Passenger API Driver API External API Envoy 🙋 🚗 Driver App

Slide 77

Slide 77 text

Envoy https://www.envoyproxy.io/docs/envoy/v1.34.1/intro/what_is_envoy Envoy is an L7 proxy and communication bus designed for large modern service oriented architectures. The project was born out of the belief that: The network should be transparent to applications. When network and application problems do occur it should be easy to determine the source of the problem.

Slide 78

Slide 78 text

Platform Capabilities ɾCI / CDʢGitHub Actionsʣ ɾ Authentication / Authorization ɾObservabilityʢDatadogʣ ɾFeature FlagʢOpenFeatureʣ ɾProvisionʢTerraformʣ ...

Slide 79

Slide 79 text

API Gateway

Slide 80

Slide 80 text

Agenda ɾPlatform Engineering @ newmo ɾSoftware Architecture ɾCloud Architecture

Slide 81

Slide 81 text

ʮٕज़બఆʯͰҙ͍ࣝͯ͠Δ͜ͱ • ܦӦํ਑ɾࣄۀঢ়گ΁ͷཧղ • ܦӦɾࣄ৘ྖҬɾ࠾༻ํ਑ɾࢿۚௐୡɾଞࣾڝ߹ͳͲ... • ʮٕज़બఆʯΛݮΒͨ͢Ίͷٕज़બఆ • ʮϓϩμΫτ͕ಧ͚ΔՁ஋ʯͷ࣮૷ʹूத͢Δ • ʮબఆٕͨ͠ज़ʯΛͲͷΑ͏ͳΠϯλʔϑΣʔεͰࣾ಺ʹల։͢Δ͔ • Cognitive Loadʢೝ஌తෛՙʣΛݮΒ͢ • ΤίγεςϜͷ؍࡯ • બఆ͢Δٕज़ͷ੒ख़౓߹͍ɾऔΓר͘؀ڥͷைྲྀ

Slide 82

Slide 82 text

newmo ͷ૑ۀΛࢧ͑Δ Software Architecture ͱ Platform Engineering Yuki Ito ʲٕज़બఆΛಥ͖٧ΊΔʳ Online Conference 2025