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

Do's and Don'ts moving to Go microservices arch...

Do's and Don'ts moving to Go microservices architecture

Are you moving, or planning to move to a microservice architecture? It can be a real challenge today for companies to keep updated with technologies, performance, scaling, management methods, ways of working.

In this talk, we will share our story, the bad and the ugly moving from a monolith to a microservice architecture in Golang. You will discover the do’s and the don't’s we learned from our journey, from a technical and organisational perspective.

Key Takeaways
- Discover why we chose to Go to take the best of its simplicity
- Learn how to make a team responsible for their work
- Get a reminder of why you should make automation a priority

Donia Chaiehloudj

August 29, 2022
Tweet

More Decks by Donia Chaiehloudj

Other Decks in Programming

Transcript

  1. Have a product idea What are the needs What are

    the constraints Data processing software Scale to millions of processings Already a legacy version Context Context | Validate the idea | Technical choices
  2. Define a minimal version Implement a prototype Verify the feasibility

    Make technical choices Validate the idea Context | Validate the idea | Technical choices
  3. Use well-known open-source tools Community support, Stack Overflow goldmine Online

    free courses, tutorials Easier recruitment & onboarding Technical choices Context | Validate the idea | Technical choices
  4. Use well-known open-source tools Choose Go Created for cloud computing

    Designed for concurrency Technical choices Context | Validate the idea | Technical choices
  5. “My first implementation was in Ruby, but when I re-implemented

    in Go I was able to take advantage of concurrency to get a 20x performance improvement.” https://tinyurl.com/cncf-devstats Q&A with DevStats creator Łukasz Gryglicki Context | Validate the idea | Technical choices
  6. Use well-known open-source tools Choose Go Perfect for cloud computing

    Designed for concurrency Easy to learn Technical choices Context | Validate the idea | Technical choices
  7. Use well-known open-source tools Choose Go Perfect for cloud computing

    Designed for concurrency Easy to learn Great community Technical choices Context | Validate the idea | Technical choices
  8. Use well-known open-source tools Choose Go Perfect for cloud computing

    Designed for concurrency Easy to learn Great community Plethora of resources Technical choices Context | Validate the idea | Technical choices
  9. Do Verify the feasibility Get the big picture Explore your

    options Make rational choices Use existing tools Don't Start coding on day 1 Limit to your knowledge Follow trends Reinvent the wheel Where to start Context | Validate the idea | Technical choices
  10. 2. Prepare for growth Let's get billions of users and

    raise a series A! Let's become a unicorn!
  11. Restart from scratch Early mistakes make a better product Define

    teams and communication channels Streamlining Streamlining | Separate Responsibilities | Automate everything
  12. “Any organization that designs a system will produce a design

    whose structure is a copy of the organization's communication structure.” Mel Conway's law Streamlining | Separate Responsibilities | Automate everything
  13. Clear boundaries Clear contracts User-oriented APIs Reduce cognitive load Easy

    evolution Independent deployment Microservices Separate responsibilities Streamlining | Separate Responsibilities | Automate everything
  14. You make it, you run it. Streamlining | Separate Responsibilities

    | Automate everything https://tinyurl.com/ci-cd-pipeline
  15. Automate everything Human time is money Repeating is boring Streamlining

    | Separate Responsibilities | Automate everything
  16. Automate everything Human time is money Repeating is boring Repeating

    is boing Streamlining | Separate Responsibilities | Automate everything
  17. Automate everything Human time is money Repeating is boring Repeating

    is error-prone Streamlining | Separate Responsibilities | Automate everything
  18. Human time is money Repeating is boring Repeating is error-prone

    Setup Continuous Integration & Continuous Delivery Automate everything Streamlining | Separate Responsibilities | Automate everything
  19. CI/CD pipelines with Go Streamlining | Separate Responsibilities | Automate

    everything Format Lint Tests Coverage Benchmark gofmt golangci-lint go test go test -cover go test -bench=.
  20. Human time is money Repeating is boring Repeating is error-prone

    Setup Continuous Integration & Continuous Delivery Test at different levels Automate everything Streamlining | Separate Responsibilities | Automate everything
  21. Do Separate responsibilities Own your code Write tests early Setup

    CI/CD pipelines Don't Redeploy everything as you go Rely on manual actions Stuff the monolith turkey Prepare for growth Streamlining | Separate Responsibilities | Automate everything
  22. The software needs to grow as you learn Dedicate time

    for housekeeping Stay up to date with dependency versions Work iteratively, in small steps Refactoring is mandatory Refactoring is mandatory | Monitoring
  23. Setup observability tools Add logs & traces Build meaningful dashboards

    Automate alerts Monitoring Refactoring is mandatory | Monitoring
  24. Do Setup thresholds for alerts Keep track of technical debt

    Don't Suppose bugs never happen How to maintain Refactoring is mandatory | Monitoring
  25. Conclusion Choose Go to leverage its simplicity and scalability Automation

    is a priority and well-invested money Make your domain clear with low cognitive load Allocate time for housekeeping
  26. Thank you! Software Engineer She/Her alienor-latour Aliénor Latour Software Engineer

    She/Her @doniacld Donia Chaiehloudj https://gopherize.me/