SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Mono-Repo and
Microservices - a
contradiction?
Johannes Bruederl - Software Engineer
github.com/birdayz
Who is this guy?
- Programmer for life, <3 Go
- <3 Open Source
- Distributed Systems
- <3 k8s, Kafka
- Currently active in the IoT Area
What we will cover
- We talk about repository setups
- Focus on Microservices
- Pro/Con
- Tooling recommendations
This topic is
super controversial
Kinds of Repositories
- Multi-repo
- Organization Monorepo
- Project Monorepo
- Anything between those
- Don’t be dogmatic
Multi-Repo
- Repo per service
- Self-contained services
- Infrastructure as Code
- Consider overarching infrastructure
- Templates
- Automated PRs & Cleanup processes
Many repos...
The Project Mono-Repo
- Multiple applications/libraries
- Related code, or not
- Many commits & committers
- Build extensive tooling around repo
- Everything is versioned together in lock-step
Example: Babel
The conflict with Microservices
- Monoliths favor Mono-Repos
- Microservices strive for separation
- Cost of additional Repo
- Smaller services favor Mono-Repo
- Microservices vs Nanoservices vs Serverless
Sharing Code
- Breaking services you don’t even know about
- Anxiety to make changes
- Large changesets: It’s a hassle
- Avoid friction
- Avoid silos
Refactoring
- Frequent refactoring
- Do it faster
- Immediate feedback
- Confidence in large changesets
- Simplify updating APIs
Visibility & Discoverability
- Cloning many repos
- Pull request across multiple packages
- Exploring the codebase
- Access control problematic
Building tools around the Repo
- More complex
- Build duration
- Idempotent builds
- Governance
- Use task runners
- Version the scripts
TL;DR
- Faster changes
- Safer changnes
- Visibility
- More effort for DevOps
- Superior Developer UX
- Easier style standardization
Some tools
- Build tools
- Java: https://github.com/GoogleContainerTools/jib
- Go: Idempotent & fast builds by default
- Buck https://github.com/facebook/buck
- Bazel https://bazel.build/
- Task Runner:
- https://taskfile.org/
- https://magefile.org/
- Make
- Lerna: https://lernajs.io/
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
Julien Pivotto
 

Was ist angesagt? (20)

Git and github
Git and githubGit and github
Git and github
 
GitLab.pptx
GitLab.pptxGitLab.pptx
GitLab.pptx
 
Source control
Source controlSource control
Source control
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
 
Meetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOpsMeetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOps
 
Bitbucket and Git
Bitbucket and GitBitbucket and Git
Bitbucket and Git
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CI
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
Git basics
Git basicsGit basics
Git basics
 
Microfrontends Monoreops & Trunkbased based
Microfrontends Monoreops & Trunkbased basedMicrofrontends Monoreops & Trunkbased based
Microfrontends Monoreops & Trunkbased based
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 
Gitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCDGitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCD
 
Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
 
Prometheus monitoring
Prometheus monitoringPrometheus monitoring
Prometheus monitoring
 
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
 
Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategies
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
 

Ähnlich wie The Mono-repo – a contradiction with Microservices

PeerToPeerComputing (1)
PeerToPeerComputing (1)PeerToPeerComputing (1)
PeerToPeerComputing (1)
MurtazaB
 

Ähnlich wie The Mono-repo – a contradiction with Microservices (20)

Scaling the server side of occasionally-connected, mobile systems with MongoDB
Scaling the server side of occasionally-connected, mobile systems with MongoDBScaling the server side of occasionally-connected, mobile systems with MongoDB
Scaling the server side of occasionally-connected, mobile systems with MongoDB
 
Python monorepos what, why and how (shared)
Python monorepos  what, why and how (shared)Python monorepos  what, why and how (shared)
Python monorepos what, why and how (shared)
 
Lightweight APIs in mRuby
Lightweight APIs in mRubyLightweight APIs in mRuby
Lightweight APIs in mRuby
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goals
 
Architecting for Scale
Architecting for ScaleArchitecting for Scale
Architecting for Scale
 
Micro services may not be the best idea
Micro services may not be the best ideaMicro services may not be the best idea
Micro services may not be the best idea
 
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
 
HLayer / Cloud Native Best Practices
HLayer / Cloud Native Best PracticesHLayer / Cloud Native Best Practices
HLayer / Cloud Native Best Practices
 
Build High-Performance, Scalable, Distributed Applications with Stacks of Co...
 Build High-Performance, Scalable, Distributed Applications with Stacks of Co... Build High-Performance, Scalable, Distributed Applications with Stacks of Co...
Build High-Performance, Scalable, Distributed Applications with Stacks of Co...
 
Building cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and DockerBuilding cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and Docker
 
Docker what - Frank Maounis
Docker what - Frank MaounisDocker what - Frank Maounis
Docker what - Frank Maounis
 
Beyond static configuration
Beyond static configurationBeyond static configuration
Beyond static configuration
 
Microservices why?
Microservices   why?Microservices   why?
Microservices why?
 
Microservices in a Streaming World
Microservices in a Streaming WorldMicroservices in a Streaming World
Microservices in a Streaming World
 
Fedora Modularity
Fedora ModularityFedora Modularity
Fedora Modularity
 
The Lives of Others: Open-Source Development Practices Elsewhere
The Lives of Others: Open-Source Development Practices ElsewhereThe Lives of Others: Open-Source Development Practices Elsewhere
The Lives of Others: Open-Source Development Practices Elsewhere
 
PeerToPeerComputing (1)
PeerToPeerComputing (1)PeerToPeerComputing (1)
PeerToPeerComputing (1)
 
Threads
ThreadsThreads
Threads
 
Microservices.pdf
Microservices.pdfMicroservices.pdf
Microservices.pdf
 
Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)
 

Mehr von Eficode

Mehr von Eficode (20)

Saving money with Consolidations
Saving money with ConsolidationsSaving money with Consolidations
Saving money with Consolidations
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseDevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet Enterprise
 
Scaling DevOps: Pitfalls to avoid
Scaling DevOps: Pitfalls to avoidScaling DevOps: Pitfalls to avoid
Scaling DevOps: Pitfalls to avoid
 
Microservices, IoT, DevOps: A Case Study
Microservices, IoT, DevOps: A Case StudyMicroservices, IoT, DevOps: A Case Study
Microservices, IoT, DevOps: A Case Study
 
Building a Knowledge Graph at Zalando
Building a Knowledge Graph at ZalandoBuilding a Knowledge Graph at Zalando
Building a Knowledge Graph at Zalando
 
How to build the Cloud Native applications the way you want – not the way the...
How to build the Cloud Native applications the way you want – not the way the...How to build the Cloud Native applications the way you want – not the way the...
How to build the Cloud Native applications the way you want – not the way the...
 
The Future of Enterprise Applications is Serverless
The Future of Enterprise Applications is ServerlessThe Future of Enterprise Applications is Serverless
The Future of Enterprise Applications is Serverless
 
Why Serverless is scary without DevSecOps and Observability
Why Serverless is scary without DevSecOps and ObservabilityWhy Serverless is scary without DevSecOps and Observability
Why Serverless is scary without DevSecOps and Observability
 
Securing Modern Applications: The Data Behind DevSecOps
Securing Modern Applications: The Data Behind DevSecOpsSecuring Modern Applications: The Data Behind DevSecOps
Securing Modern Applications: The Data Behind DevSecOps
 
Secure your Azure and DevOps in a smart way
Secure your Azure and DevOps in a smart waySecure your Azure and DevOps in a smart way
Secure your Azure and DevOps in a smart way
 
Can I Contain This?
Can I Contain This?Can I Contain This?
Can I Contain This?
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOps
 
Why Should You Be Thinking About DesignOps?
Why Should You Be Thinking About DesignOps?Why Should You Be Thinking About DesignOps?
Why Should You Be Thinking About DesignOps?
 
A beginners guide to scaling DevOps
A beginners guide to scaling DevOpsA beginners guide to scaling DevOps
A beginners guide to scaling DevOps
 
From Zero to SAFe
From Zero to SAFeFrom Zero to SAFe
From Zero to SAFe
 
Bringing value to the business and for your customer through DevOps
Bringing value to the business and for your customer through DevOpsBringing value to the business and for your customer through DevOps
Bringing value to the business and for your customer through DevOps
 
Disconnected Pipelines: The Missing Link
Disconnected Pipelines: The Missing LinkDisconnected Pipelines: The Missing Link
Disconnected Pipelines: The Missing Link
 
The Best & Worst Uses of AI in Software Testing
The Best & Worst Uses of AI in Software TestingThe Best & Worst Uses of AI in Software Testing
The Best & Worst Uses of AI in Software Testing
 
Model-based programming and AI-assisted software development
Model-based programming and AI-assisted software developmentModel-based programming and AI-assisted software development
Model-based programming and AI-assisted software development
 
2018 State Of DevOps Report Key Findings
2018 State Of DevOps Report Key Findings2018 State Of DevOps Report Key Findings
2018 State Of DevOps Report Key Findings
 

Kürzlich hochgeladen

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

The Mono-repo – a contradiction with Microservices

  • 1. Mono-Repo and Microservices - a contradiction? Johannes Bruederl - Software Engineer github.com/birdayz
  • 2. Who is this guy? - Programmer for life, <3 Go - <3 Open Source - Distributed Systems - <3 k8s, Kafka - Currently active in the IoT Area
  • 3. What we will cover - We talk about repository setups - Focus on Microservices - Pro/Con - Tooling recommendations
  • 4. This topic is super controversial
  • 5. Kinds of Repositories - Multi-repo - Organization Monorepo - Project Monorepo - Anything between those - Don’t be dogmatic
  • 6. Multi-Repo - Repo per service - Self-contained services - Infrastructure as Code - Consider overarching infrastructure - Templates - Automated PRs & Cleanup processes
  • 8. The Project Mono-Repo - Multiple applications/libraries - Related code, or not - Many commits & committers - Build extensive tooling around repo - Everything is versioned together in lock-step
  • 10. The conflict with Microservices - Monoliths favor Mono-Repos - Microservices strive for separation - Cost of additional Repo - Smaller services favor Mono-Repo - Microservices vs Nanoservices vs Serverless
  • 11. Sharing Code - Breaking services you don’t even know about - Anxiety to make changes - Large changesets: It’s a hassle - Avoid friction - Avoid silos
  • 12. Refactoring - Frequent refactoring - Do it faster - Immediate feedback - Confidence in large changesets - Simplify updating APIs
  • 13. Visibility & Discoverability - Cloning many repos - Pull request across multiple packages - Exploring the codebase - Access control problematic
  • 14. Building tools around the Repo - More complex - Build duration - Idempotent builds - Governance - Use task runners - Version the scripts
  • 15. TL;DR - Faster changes - Safer changnes - Visibility - More effort for DevOps - Superior Developer UX - Easier style standardization
  • 16. Some tools - Build tools - Java: https://github.com/GoogleContainerTools/jib - Go: Idempotent & fast builds by default - Buck https://github.com/facebook/buck - Bazel https://bazel.build/ - Task Runner: - https://taskfile.org/ - https://magefile.org/ - Make - Lerna: https://lernajs.io/