ML
    • Recent
    • Categories
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Microservices - any real world examples?

    IT Discussion
    5
    14
    1.4k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      marcinozga
      last edited by

      Microservices have been all the hype in the past few years, but has anyone actually seen any real applications that use microservices architecture? I'm not talking about Amazon, Netflix or Uber, I'm interested in something you can deploy yourself. So far I think the only application I've seen is Bitwarden, everything else is just monolithic approach. Well, maybe Kubernetes too, but it's hard to call that an app or service.

      I want to get one misconception out of the way, I'll use Nextcloud as an example. You can deploy it as a monolithic app, as a single container running on apache and sqlite, I think it supports that db. You can also split it and run main app on php-fpm, postgresql, nginx, redis, and cron, all in separate containers. 2nd case is still monolithic app, with just bunch of 3rd party dependencies. That's not what I'm looking for. Bitwarden for example, is separated into multiple microservices, web, admin, sso, attachments, icons, api, identity, events, notifications, all these are coupled Bitwarden services, not 3rd party dependencies.

      Any other examples?

      scottalanmillerS 1 Reply Last reply Reply Quote 0
      • stacksofplatesS
        stacksofplates
        last edited by stacksofplates

        There are a lot of examples, but they're usually internal and are very large. Microservices are complex and very network intensive. I don't know of any consumer software that follows that architecture pattern.

        Bitwarden isn't a microservice based architecture. It's just a service based. If you're using a shared database, it's not a microservice. Microservices each have their own database and then either through your API gateway, service discovery, message broker, etc each service queries the other service for the data it needs.

        GitLab is another example of a service based architecture. Even though you can deploy GitLab on k8s as separate services, there is a shared database backend that all of the services talk to.

        M 1 Reply Last reply Reply Quote 0
        • stacksofplatesS
          stacksofplates
          last edited by

          You can abstract this away even a little further with space based architecture where you have a central db but the services don't talk directly to it. They use in memory database like Ignite, Hazelcast, Aerospike, etc and then the data is replicated back to the central db at some point.

          1 Reply Last reply Reply Quote 1
          • M
            marcinozga @stacksofplates
            last edited by

            @stacksofplates said in Microservices - any real world examples?:

            Bitwarden isn't a microservice based architecture. It's just a service based. If you're using a shared database, it's not a microservice. Microservices each have their own database and then either through your API gateway, service discovery, message broker, etc each service queries the other service for the data it needs.

            That’s a false statement. Microservices can share single database. In perfect world each microservice would have each own, but we’re far from perfect.

            stacksofplatesS 1 Reply Last reply Reply Quote 0
            • stacksofplatesS
              stacksofplates @marcinozga
              last edited by

              @marcinozga said in Microservices - any real world examples?:

              @stacksofplates said in Microservices - any real world examples?:

              Bitwarden isn't a microservice based architecture. It's just a service based. If you're using a shared database, it's not a microservice. Microservices each have their own database and then either through your API gateway, service discovery, message broker, etc each service queries the other service for the data it needs.

              That’s a false statement. Microservices can share single database. In perfect world each microservice would have each own, but we’re far from perfect.

              No it's not. That's what defines it as a microservice. If the services all talk to the same database, it's just a service based architecture.

              M 1 Reply Last reply Reply Quote 0
              • stacksofplatesS
                stacksofplates
                last edited by

                Here's a diagram for each from Mark Richards and Neal Ford.

                Service Based:
                22536a1b-8ddf-44ff-9177-8c45c9c34823-image.png

                Microservices:
                2a897d79-fc8d-4380-918b-8005ed921c32-image.png

                And here's a Tweet from Kelsey on a funny name for service based:

                66497bea-693d-4862-83dc-a6d253b1e1e3-image.png

                There's quite a few architecture designs, and they can be similar but specific things define them, like where they write and get data from. There's a distinction between monoliths as well. There's a normal monolith, and then there's a micro-kernel. Obviously the monolith has everything, but the micro-kernel is still a monolith, but has API hooks for plugins to the monolithic core.

                1 Reply Last reply Reply Quote 2
                • stacksofplatesS
                  stacksofplates
                  last edited by stacksofplates

                  There's kind of a push now to move back towards monoliths (or other more sensible designs). Mainly because of the complexity and performance loss.

                  As with anything a ton of places heard microservices were the future, jumped on, and started using it without actually researching. It's good for some use cases, and not for a lot of them.

                  1 Reply Last reply Reply Quote 2
                  • M
                    marcinozga @stacksofplates
                    last edited by

                    @stacksofplates said in Microservices - any real world examples?:

                    @marcinozga said in Microservices - any real world examples?:

                    @stacksofplates said in Microservices - any real world examples?:

                    Bitwarden isn't a microservice based architecture. It's just a service based. If you're using a shared database, it's not a microservice. Microservices each have their own database and then either through your API gateway, service discovery, message broker, etc each service queries the other service for the data it needs.

                    That’s a false statement. Microservices can share single database. In perfect world each microservice would have each own, but we’re far from perfect.

                    No it's not. That's what defines it as a microservice. If the services all talk to the same database, it's just a service based architecture.

                    No, because there’s really no single definition of microservices.
                    https://en.wikipedia.org/wiki/Microservices

                    Also https://microservices.io/patterns/data/shared-database.html

                    stacksofplatesS scottalanmillerS 2 Replies Last reply Reply Quote 0
                    • stacksofplatesS
                      stacksofplates @marcinozga
                      last edited by

                      @marcinozga said in Microservices - any real world examples?:

                      @stacksofplates said in Microservices - any real world examples?:

                      @marcinozga said in Microservices - any real world examples?:

                      @stacksofplates said in Microservices - any real world examples?:

                      Bitwarden isn't a microservice based architecture. It's just a service based. If you're using a shared database, it's not a microservice. Microservices each have their own database and then either through your API gateway, service discovery, message broker, etc each service queries the other service for the data it needs.

                      That’s a false statement. Microservices can share single database. In perfect world each microservice would have each own, but we’re far from perfect.

                      No it's not. That's what defines it as a microservice. If the services all talk to the same database, it's just a service based architecture.

                      No, because there’s really no single definition of microservices.
                      https://en.wikipedia.org/wiki/Microservices

                      Also https://microservices.io/patterns/data/shared-database.html

                      That doesn't really show anything. From that same site:

                      Screenshot_20200919-141528_Chrome.jpg

                      Again, if they aren't loosely coupled, all encompassing services they aren't microservices. Just as wikipedia says, the consensus is they are loosely coupled. If they are tied to a single database they are by definition, not loosely coupled.

                      1 Reply Last reply Reply Quote 0
                      • F
                        flaxking
                        last edited by

                        I wouldn't consider microservices as desirable in a deploy-it-yourself end user situation. Unless you are setting up something you really need to be able to scale, it adds IT overhead. A Docker image is an abstraction, but docker/k8s config files are most just configuration as code, so it's not like it's just deploy and go to use a config file from a third-party on your cluster.

                        However, as we get more open source based images for complete drop-in APIs for developers to use instead of building things from scratch, we'll probably see more of it.

                        1 Reply Last reply Reply Quote 0
                        • 1
                          1337
                          last edited by 1337

                          Microservice architecture was really a means to an end and not the goal itself.

                          When you have large teams of developers, you simply have to start divide things up into smaller chunks - one way or the other. If you think about the practical problems of trying to maintain and develop a big piece of software while it's running 24/7 with zero interruptions, it's hard to imagine any other way of doing it.

                          If you don't have those constraints, then using that type of architecture doesn't make as much sense.

                          scottalanmillerS 1 Reply Last reply Reply Quote 1
                          • scottalanmillerS
                            scottalanmiller @marcinozga
                            last edited by

                            @marcinozga said in Microservices - any real world examples?:

                            Microservices have been all the hype in the past few years, but has anyone actually seen any real applications that use microservices architecture? I'm not talking about Amazon, Netflix or Uber, I'm interested in something you can deploy yourself.

                            Modern software techniques are rarely things you "buy and deploy", they are for your engineering teams to utilize in your designs. Since it is an "under the hood" artefact in software, even if you were deploying it, you wouldn't generally know.

                            1 Reply Last reply Reply Quote 0
                            • scottalanmillerS
                              scottalanmiller @1337
                              last edited by

                              @Pete-S said in Microservices - any real world examples?:

                              Microservice architecture was really a means to an end and not the goal itself.

                              Exactly

                              1 Reply Last reply Reply Quote 0
                              • scottalanmillerS
                                scottalanmiller @marcinozga
                                last edited by

                                @marcinozga said in Microservices - any real world examples?:

                                @stacksofplates said in Microservices - any real world examples?:

                                @marcinozga said in Microservices - any real world examples?:

                                @stacksofplates said in Microservices - any real world examples?:

                                Bitwarden isn't a microservice based architecture. It's just a service based. If you're using a shared database, it's not a microservice. Microservices each have their own database and then either through your API gateway, service discovery, message broker, etc each service queries the other service for the data it needs.

                                That’s a false statement. Microservices can share single database. In perfect world each microservice would have each own, but we’re far from perfect.

                                No it's not. That's what defines it as a microservice. If the services all talk to the same database, it's just a service based architecture.

                                No, because there’s really no single definition of microservices.
                                https://en.wikipedia.org/wiki/Microservices

                                Also https://microservices.io/patterns/data/shared-database.html

                                I'd take Neal Ford's word over Wikipedia 🙂

                                1 Reply Last reply Reply Quote 0
                                • 1 / 1
                                • First post
                                  Last post