back to article GitHub's journey towards microservices and more: 'We actually have our own version of Ruby that we maintain'

GitHub has described efforts to break down its monolithic application architecture into microservices – and revealed that it still runs some services on AWS, even after the 2018 acquisition by Microsoft. Sha Ma, VP of Software Engineering at GitHub spoke on the subject at the November Qcon Plus virtual developer event and …

  1. Warm Braw

    Good architecture starts with modularity

    I know I'm too old to be agile and am insensitive to the Zeitgeist, but I got a distinct whiff of "Emperor's new clothes" from this interview.

    We would then rewrite these queries into multiple queries that respect the domain boundaries and perform any necessary joins at the application layer

    Nothing screams "modularity" like building a knowledge of your transient database schema into your applications.

    For the foreseeable future we're going to remain with MySQL just because we have a lot of expertise there

    If you had more expertise available with a database that facilitated doing joins across multiple data sources, you might not have had to build that into your applications. Shouldn't you be looking at the expertise you need, rather than the expertise you have, especially on a "foreseeable future" timeline?

    1. sabroni Silver badge

      Re: I know I'm too old to be agile

      I'm 54 and I love Agile. I worked in many places where "agile" was done badly before finding somewhere that actually made it work so I used to be as cynical as you about it.

      If you can find a place to work where they understand that the business has to be agile, not just the dev team, then you stand a chance of seeing what the fuss is about!

      1. Warm Braw

        Re: I know I'm too old to be agile

        The point I think I failed to make is that "agile", like every development methodology, is a trap, it's just a trap of a different kind.

        If you're firing out frequent updates, you're pretty much constrained by the skillset of the people you have to hand (because you haven't time to reskill/rehire) and you end up with dreadful decisions (like adding cruft to your applications to do database joins) because the frequent release cycle that allows you quickly to add functionality means that long-term architecture changes have to be approached crabwise and likely with much ultimately unneeded effort to keep each iteration functional in its temporarily incomplete state.

        Constant incremental change is fine right up to the point that the premises on which your development is based turn out never to have been valid, or have become invalid over time. It seems a little optimistic to assume that one development approach should be appropriate at all stages of a project lifecycle.

      2. MJB7

        Re: I know I'm too old to be agile

        And I'm 62 was lucky enough for my first exposure to agile be somewhere that did it mostly right. (Yeah, I love it too.)

        1. Anonymous Coward
          Anonymous Coward

          Re: I know I'm too old to be agile

          I hate Agile. It’s a circle-jerk for fizzy consultants and I refuse to be the piece of toast in the middle.

          1. Anonymous Coward
            Anonymous Coward

            Re: i hate agile

            Your post tells me a lot about you and nothing about agile....

            1. Anonymous Coward
              Anonymous Coward

              Re: i hate agile

              You'll come to realise my summary is spot on if you ever come to do 'Agile'. Or you'll be too busy wiping your face to care.

  2. nijam Silver badge

    > "We actually have our own version of Ruby that we maintain,"

    What?

    Is standard Ruby inadequate? Is there some enhancement that they want to keep proprietary? Is it just Microsoft's long-standing policy of breaking things solely to disadvantage their competitors?

    I doubt the answer will be enlightening (let alone enlightened).

    1. MJB7

      Own version of Ruby

      I very much doubt this postdates the Microsoft take-over. I'm not in the least surprised; given a bunch of committers to the Ruby eco-system, the simplest solution to a problem could easily be a branch of the Ruby code.

      1. This post has been deleted by its author

      2. MatthewSt Silver badge

        Re: Own version of Ruby

        https://github.blog/2020-08-25-upgrading-github-to-ruby-2-7/ - this post seems to suggest that they haven't run their own fork for a while

  3. MJB7

    "Microservices doesn't replace good architecture."

    The title is the best quote of the article (and it can easily be recycled by replacing "Microservices" with buzzword-du-jour).

    1. Anonymous Coward
      Anonymous Coward

      Re: "Microservices doesn't replace good architecture."

      "Agile doesn't replace good architecture."

  4. DamienH

    This article and interview contains more useful information about how to plan a move from monolith to microservices than a hundred grand spent with a consultant, and El Reg gave it to us for free.

    1. Roland6 Silver badge

      Too young to not have been around the block before then?

      Ma is actually wrong in her claim that "The first step towards breaking up a monolith is to think about the separation of code and data based on feature functionality"; the first step was the architectural decision to break up the monolith into microservices. I hope they have some clarity of thought about what those microservices might be. Personally at this stage I wouldn't be thinking about what the current code and data does in that much detail, but about envisaging what it needs to do, given what we know now about the space gitHub occupies. Ie. follow normal systems thinking and enterprise architecture practises...

      I would suggest that Ma's approach carries the real risk that what GitHub ends up with is a monolith of microservices, ie. something that is just as inflexible as a monolith.

      1. MatthewSt Silver badge
        Joke

        Roland6 is actually wrong in their claim that "the first step was the architectural decision to break up the monolith into microservices". The actual first step is building the monolith in the first place. Without that step, it's pointless trying to turn a monolith into microservices

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like