Structure Your Golang Service With Layers Like This

Поділитися
Вставка
  • Опубліковано 20 жов 2024
  • ► Join my Discord community for free education 👉 / discord
    ► Exclusive Lessons, Mentorship, And Videos 👉 / anthonygg_
    ► 33% OFF on my Go + HTMX + Templ Course PRESALE 👉bit.ly/3UFruxO
    ► Enjoy a 60% Black Friday Discount on My Golang Course 👉 fulltimegodev.com
    ► Learn how I became a self-taught software engineer 👉fulltimegodev....
    ► Follow me on Twitter 👉 / anthdm
    ► Follow me on GitHub 👉 github.com/anthdm
    Grab yourself a 33% OFF on the PRESALE event of my building production ready applications with GO + HTMX + Templ + Tailwindcss + JQuery course here: bit.ly/3UFruxO
    SUBSCRIBE OR NO MARGARITAS
    ╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
    ║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
    ╠╗║╚╝║║╠╗║╚╣║║║║║═╣
    ╚═╩══╩═╩═╩═╩╝╚╩═╩═╝

КОМЕНТАРІ • 19

  • @anthonygg_
    @anthonygg_  7 місяців тому +1

    ► 33% OFF on my Go + HTMX + Templ Course PRESALE 👉bit.ly/3UFruxO
    ► Join my Discord community for free education 👉 discord.com/invite/Ac7CWREe58
    ► Exclusive Lessons, Mentorship, And Videos 👉 www.patreon.com/anthonygg_
    ► 60% OFF on my Golang course 👉 fulltimegodev.com
    Thanks for watching

    • @michawiacek1585
      @michawiacek1585 7 місяців тому

      Hi! Have you thought about uploading your courses to the Udemy platform?

  • @jorgezozaya5049
    @jorgezozaya5049 7 місяців тому +11

    The beauty of channels like this lies in their ability to inspire me as an independent programmer to consistently embrace challenges that stretch beyond my comfort zone. Without access to this incredible wealth of knowledge, navigating such challenges would feel maybe unattainable.

  • @coffeeintocode
    @coffeeintocode 7 місяців тому +2

    Yeah I really like this approach. It makes testing so much easier as well!

  • @vyrwu
    @vyrwu 6 місяців тому +1

    Is this layering needed if there’s no requirement for multiple transports up front? I’ve used hex arch for a few projects to learn it, and while I get the point, I also see that I’m producing more complex code, without a clear justification. It seems to me that it’s more like something that could be whipped out if needed, not strictly used as a general rule - but you say you „should” abstract things this way. Genuinely curious, not being edgy.

  • @esarijal
    @esarijal 7 місяців тому +6

    I want to ask you how to test handler that attached to services? since it is struct, do I have to change it to interface so I can mock them?

    • @valeriikundas1913
      @valeriikundas1913 7 місяців тому

      Yes, read up on dependency inversion and testing

    • @anthonygg_
      @anthonygg_  7 місяців тому +7

      Better to test the business logic. As the handler is more of the integration part imo

    • @esarijal
      @esarijal 7 місяців тому

      @@anthonygg_ omg this answer blown my mind. I got what you mean, you are correct man, thanks

  • @amorto3420
    @amorto3420 7 місяців тому

    Love your vids Anthony. But the sound is very low on some of the videos I've watched, sometime it's a little bit difficult to hear.

  • @marcs8325
    @marcs8325 5 місяців тому

    I see the web API as a complete application and I actually call your transportation layer simply the presentation layer of the api (3 layers... presentation layer, business/domain layer, data layer).
    But we achieve the same thing... business layer is separate from the framework we're using.
    I haven't done much Go yet, but I do this in C# all the time. Mainly because Microsoft likes to change frameworks a lot and I like to keep my business code as stable as possible. It should not depend on stuff that might change often.
    Learning Go because I want something simple 😂 I'm getting tired of all the different Microsoft technologies.

  • @andreffrosa
    @andreffrosa 6 місяців тому

    Why do you also separate the logging to its own layer?

  • @DrewryPope
    @DrewryPope 7 місяців тому

    How is raptor/hollywood going? 🙂I remembered about that the other day

  • @christopher8641
    @christopher8641 7 місяців тому +4

    Super important to note that this idea is by no means restricted to Go. I write a lot of Rust (btw) and this idea is basically just tower::Service and tower::Layer. The instrumentation is just a service that decorates another service (i.e. Layer). I will say that there is a certain "size" to a problem where these ideas shine. But, I would imagine you agree that this is not a "one size fits all" pattern. Good video

    • @anthonygg_
      @anthonygg_  7 місяців тому

      It reflects for all languages

    • @morpheus4564
      @morpheus4564 4 місяці тому

      I love the onion/ hexagonal Arch. what you think about it?

  • @vedantmatanhelia1016
    @vedantmatanhelia1016 7 місяців тому

    I wanted to do hexagon architecture for a.long time
    the problem for me is folder structure

  • @vanshajdhar9223
    @vanshajdhar9223 6 місяців тому

    Are these things covered in your Golang course?