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

newmo の創業を支える Software Architecture と Platform ...

newmo の創業を支える Software Architecture と Platform Engineering

Avatar for Yuki Ito

Yuki Ito

May 14, 2025
Tweet

More Decks by Yuki Ito

Other Decks in Technology

Transcript

  1. 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.
  2. 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
  3. 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/
  4. 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
  5. Platform Engineering Team @ newmo newmo ʹ͓͚Δ Platform νʔϜ͸ɺTeam Topologies

    ͷߟ ͑ํʹ͓͚Δ Platform νʔϜͱ Enabling νʔϜͷ྆ํͷ໾ ׂΛ୲͏νʔϜͰ͋Γɺ֤ʑͷϏδωεʹԊͬͨ։ൃνʔϜ ʢTeam Topologies ʹ͓͚Δ Stream-Aligned νʔϜʣ͕ࣗ ཯తʹ։ൃΛਐΊΒΕΔΑ͏ͳٕज़ج൫Λߏங͠ɺ։ൃνʔϜ ʹಋೖ͢ΔνʔϜͰ͋Δɻ
  6. 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/
  7. ελʔτΞοϓͰ Platform Engineeringʁ • ʮνʔϜ͝ͱʹҟͳΔٕज़બఆʯΛආ͚ͯੜ࢈ੑΛ্͛Δ • Stream-Aligned Team ͕ʮ͓٬༷ʹՁ஋Λಧ͚Δʯ෦෼ʹूத͢Δ •

    ٕज़తͳΨόφϯεΛऔΔ • ʮબఆ == ߟ͑ͯ൑அ͠ͳ͍ͱ͍͚ͳ͍͜ͱʯΛۃྗݮΒ͢ • newmo ͷࣄۀυϝΠϯʢMobilityʣతʹʮத௕ظతͳεέʔϧʯ΋ߟྀ͢Δ΂͖ • ੓࣏΍֤࣏ࣗମΛؚΉࣾձ΁ͷ͸ͨΒ͖͔͚ͷඞཁੑ • ʮ࠷଎Ͱ࣮૷ͯ͠ϦϦʔεʯ͢Δ͚ͩͰ͸͏·͍͔͘ͳ͍ࣄۀྖҬ • ࢿۚௐୡͷঢ়گ
  8. 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
  9. 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
  10. 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
  11. 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
  12. GraphQL - Direct Access type Driver { id: ID! name:

    String! } type Vehicle { id: ID! driverId: String! }
  13. 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!]! } +
  14. gRPC gRPC is a modern open source high performance Remote

    Procedure Call (RPC) framework that can run in any environment. https://grpc.io/
  15. 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
  16. 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.
  17. Why Google Cloud ? • ϚωʔδυίϯςφαʔϏεʢCloud Runʣͷ׬੒౓ͷߴ͞ • ίϯςφٕज़ͷϦʔσΟϯάΧϯύχʔʢKubernetes ͷ΋ͱͱͳͬͨ

    Borg ͳͲʣ • Google WorkSpace Ͱͷैۀһ؅ཧͱͷ౷߹ • Identity-Aware Proxy ʹΑΔैۀһೝূͷ࣮૷ • Google Maps Platform ͷଘࡏ • newmo ͷࣄۀྖҬʢMobilityʣͱͷ૬ੑ • BigQuery ΤίγεςϜ • ϚʔέςΟϯάπʔϧͰͷαϙʔτͳͲ
  18. 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
  19. Without API Gateway Pattern Passenger API Driver API External API

    Passenger App External Service 🙋 🚗 Driver App
  20. API Cross-Cutting Concerns 🤔 Authentication / Authorization 🤔 Access Log

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

    🤔 Transcoding 🤔 TLS 🤔 Domain 🤔 IP 🤔 CDN Integration 🤔
  22. API Gateway Pattern Passenger App External Service Passenger API Driver

    API External API API Gateway 🙋 🚗 Driver App
  23. 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.
  24. 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.
  25. Platform Capabilities ɾCI / CDʢGitHub Actionsʣ ɾ Authentication / Authorization

    ɾObservabilityʢDatadogʣ ɾFeature FlagʢOpenFeatureʣ ɾProvisionʢTerraformʣ ...
  26. ʮٕज़બఆʯͰҙ͍ࣝͯ͠Δ͜ͱ • ܦӦํ਑ɾࣄۀঢ়گ΁ͷཧղ • ܦӦɾࣄ৘ྖҬɾ࠾༻ํ਑ɾࢿۚௐୡɾଞࣾڝ߹ͳͲ... • ʮٕज़બఆʯΛݮΒͨ͢Ίͷٕज़બఆ • ʮϓϩμΫτ͕ಧ͚ΔՁ஋ʯͷ࣮૷ʹूத͢Δ •

    ʮબఆٕͨ͠ज़ʯΛͲͷΑ͏ͳΠϯλʔϑΣʔεͰࣾ಺ʹల։͢Δ͔ • Cognitive Loadʢೝ஌తෛՙʣΛݮΒ͢ • ΤίγεςϜͷ؍࡯ • બఆ͢Δٕज़ͷ੒ख़౓߹͍ɾऔΓר͘؀ڥͷைྲྀ