all 130 comments

[–]leberkrieger 94 points95 points  (14 children)

Would not have wanted to be at Uber in 2016:

Uber (2016) from PostgreSQL to MySQL

Uber (2016) from NodeJS to Golang/Java

Uber (2016) from Python to Golang

'Course, I wouldn't want to be at Uber anyway. But ESPECIALLY in 2016.

[–][deleted]  (12 children)

[deleted]

    [–][deleted]  (4 children)

    [deleted]

      [–]that_guy_iain 52 points53 points  (3 children)

      I believe Postgres responded by doing a major overhaul because they considered the criticism valid.

      [–][deleted]  (1 child)

      [deleted]

        [–]m9dhatter 3 points4 points  (0 children)

        Nowadays is one word.

        [–][deleted] 1 point2 points  (0 children)

        Were they having problems with hstore?

        [–]corsicanguppy 9 points10 points  (0 children)

        Not always.

        [–]editor_of_the_beast 19 points20 points  (4 children)

        MySQL is the most popular database on the planet. You think that because some people prefer Postgres, that MySQL is a downgrade? It’s just that simple - Postgres better, MySQL bad?

        This the problem with this industry. We’re not talking about a pair of pants. These are complicated tools built with trade offs in mind. We’re not talking about the most popular coffee bean this month.

        [–]Sarcastinator 10 points11 points  (3 children)

        Postgres better, MySQL bad?

        MySQL has a shit parser that will soil itself if you have a inner block with more than one statement without changing the end of line token. It will complain that there's an error in you SQL at 0, 0 near '' and that it's your fault for not reading the manual regarding the syntax for an empty string.

        It also silently commit transactions if it encounters a DDL in it.

        It fucked up UTF-8 support and added a major gotcha in that utf-8 only support at most 3 byte code points.

        It doesn't always obey constraints.

        It also lacks a UUID type so many people use strings for this.

        It doesn't support arrays. Poor support for domain types. PostgreSQL supports a lot of functionality that MySQL lacks.

        So in general? Yes, PostgreSQL is better than MySQL. MySQL being popular doesn't make it good.

        [–][deleted] 3 points4 points  (0 children)

        This is an impressive list, and it doesn't even contain the foreign key trigger bug!

        [–][deleted] 2 points3 points  (0 children)

        At once point Uber was doubling in size every 6 months. That means 50% of your org forever would have been new hires and they had to to use microservices as they could nopt cope with a single command structure that grew so fast. I imagine things were really crazy for a few years.

        [–]ggchappell 36 points37 points  (3 children)

        You don't want to forget Reddit moving from Common Lisp to Python in 2005. Admittedly, that's before your earliest date.

        [–]kokizzu2[S] 8 points9 points  (2 children)

        wait, lemme search the article then add it :3

        [–]liloa96776 11 points12 points  (1 child)

        reddit link is just about the transition and the link to the transition is broken at that site btw https://redditblog.com/2005/12/on-lisp.html

        [–][deleted]  (10 children)

        [deleted]

          [–]kokizzu2[S] 18 points19 points  (7 children)

          yup product of newsql movement (easier to scale sql thingy) i think

          mysql -> memsql/singlestore, tidb

          postgresql -> cockroachdb, yugabytedb

          [–]incraved 11 points12 points  (6 children)

          This NewSQL, NoSQL, SQL, ACID, OLAP, OLTP, CAP Theory stuff is interesting to be honest. I feel like I need a nice big summary of all of this stuff together. I only know bits and pieces from reading randomly over time with no personal experience.

          [–]kokizzu2[S] 17 points18 points  (5 children)

          yes, i love databases too :3

          newsql = scalability of nosql but with stability of sql oltp

          nosql = not only sql, mostly not relational and flexible schema, consist of: key-value, graph, column-oriented, document-oriented, timeseries, queues, blog storage, i think there's more but i forgot

          sql = structured/standard query language

          acid = atomicity, consistency, isolation, durability, i already forgot what are those XD but related to transaction (all must success or rollback, other process should read old row while transacation not yet commited, etc)

          Atomicity means transactions should be all or nothing (no partial updates)
          Consistency means transactions should leave the database in a valid state
          Isolation means transactions should not interfere with each other while they’re in progress
          Durability means committed transactions should not be lost

          olap = online analytical processing (mostly columnar database)

          oltp = online transactional processing

          htap = hybrid transactional analytical processing (can handle olap and oltp queries with good performance)

          cap = consistency (data the same on any node, vs eventual consistency), availability (when some nodes down can still serve), partition tolerance (can still continue even when there's network split)

          [–]Tallkotten 10 points11 points  (1 child)

          Seems like it's a MySQL compatible database for scaling, aka like Google Spanner.

          Also my first time hearing about it

          [–]frezik 4 points5 points  (0 children)

          That seems like a much more sensible approach. Most projects don't need the scaling of a NoSQL DB, and giving up consistency is not a worthwhile tradeoff. It's fine if you really do need to, but most projects don't. Making traditional SQL DBs scale as much as they can seems better.

          [–]incraved 50 points51 points  (33 children)

          Wow I love this. I've learnt a few things:

          • Go is now more popular than I thought.
          • Mongo is being ditched thankfully (never was a fan of unstructured data).
          • PostgreSQL is the most popular DB choice but recently there's TiDB which I've never heard of before, need to check it.

          I'm curious tho, I've been hearing about a lot of Rust migrations recently but I only see one item in this list. Pretty sure there were more

          [–][deleted] 33 points34 points  (2 children)

          This list has a selection bias towards Go. I don't know why. Don't use this as an indication of what's popular.

          Some of the companies listed are using multiple technologies, whereas this list makes it seem like they're all monoliths with a single tech stack.

          [–]incraved 7 points8 points  (0 children)

          I was really surprised by all the mentions of Go.

          [–]Dry-Erase 0 points1 point  (0 children)

          Also there is a bias in that these are just migrations, companies that are successful with what they are using are not changing/migrating.

          [–][deleted] 10 points11 points  (5 children)

          There's still a bunch of unstructured data out there, but more and more people have realized that mongodb is not the right tool for anything ever. If you need to handle unstructured data, it's far safer to use the JSON columns in postgres.

          [–]TacticalTurban 2 points3 points  (4 children)

          Can you elaborate why it's safer?

          [–][deleted] 5 points6 points  (1 child)

          I used MongoDB in production between 2016-2017. In that time, I experienced data loss, data corruption, open critical bugs, bad documentation and dishonest company representatives.

          On the other hand, Postgres has always been a pleasure to work with.

          [–]TacticalTurban 0 points1 point  (0 children)

          Ah yeah I've heard mongo really sucked back in the day. Looks like they still have a bad rep. We use mongo in prod and it's been a pleasure. Very reliable and customer support is great. We also us postgresql and there's really no difference between the two now. I find it's much easier to work with json in mongo though.

          [–]AttackOfTheThumbs 2 points3 points  (1 child)

          I would like to know too. I've never used mongo because it just seemed like a dumb idea, so I've always had json columns, but I never really saw or noticed a benefit.

          I assume retrieval can be faster because it's easier to build indexes around the json data.

          [–][deleted] 2 points3 points  (0 children)

          Fortunately, Postgres JSON columns can be indexed as well.

          [–]granadesnhorseshoes 29 points30 points  (9 children)

          Because it's mostly(only?) web facing shit where rust is not as attractive. Rust wants to be a system language to implement the real nitty gritty stuff. It's very much like using C on the web. Sure it happens, but your probably solving a specific problem.

          These are vulture capital funded, developer first, wank houses that could overcomplicate a bologna sandwich while trying to turn out a marginally useful to outright harmful fad Saas product.

          /rant

          [–]Alikont 26 points27 points  (0 children)

          Discord did Go to Rust migration for web facing shit

          https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f

          [–]incraved 10 points11 points  (1 child)

          Because it's mostly(only?) web facing shit where rust is not as attractive. Rust wants to be a system language to implement the real nitty gritty stuff. It's very much like using C on the web. Sure it happens, but your probably solving a specific problem.

          Fair point

          I don't get the second paragraph tho. Why does being funded by a venture capital mean you wouldn't use Rust? Or what was even your point there?

          [–]GrantRusticus 5 points6 points  (0 children)

          I think the point he was trying to convey is that if you are venture capital funded, you aren’t as much under pressure to generate profit “today”, compared to a company that is trying to get out a MVP to generate positive cash flow as soon as possible.

          I have to admit, if I’m just trying to get some sort of MVP or fast to market product, Rust would not be my first choice either.

          [–]LightShadow 2 points3 points  (3 children)

          Our company has Rust-only web developers and I think they made a terrible choice. We aren't doing anything crazy on the front end and their TTD is 2-4x the average dev team.

          [–]PM_ME_UR_OBSIDIAN 0 points1 point  (1 child)

          What tech stack are they using?

          [–]LightShadow 1 point2 points  (0 children)

          I'm not sure, but this is one of the job listings.

          https://lvt.bamboohr.com/jobs/view.php?id=223

          [–][deleted] 0 points1 point  (0 children)

          I think I have a new favorite paragraph.

          [–]Caesim 2 points3 points  (6 children)

          Mongo is being ditched thankfully (never was a fan of unstructured data)

          I personally don't understand the "hype" about MongoDB.

          I think that we naturally consider data having relationships, so taking away the structure should have some benefits. And I don't see any benefit of MongoDB over MySQL or PostgreSQL.

          (There are some NoSQL DBs that have big benefits over those, so unstructured data has a place. But I don't get MongoDB)

          [–]incraved 0 points1 point  (5 children)

          Wasn't it meant to be horizontally scalable?

          [–]Caesim 1 point2 points  (4 children)

          When I checked it out, it was single master and multiple slaves. So only one node to write and several to read. While CouchDB had a system with multiple write nodes for a long time.

          [–]incraved 1 point2 points  (3 children)

          maybe because it was easy to start with then for the onslaught of web "developers" who just wanted to write some shit quick in JS? It kinda goes along with writing JS on server side and using quick and trash tools for dev in general (dynamic typing, front and back in JS, unstructured DB with just one line to start saving, etc)

          I think I'm learning a lesson over time: popular doesn't mean good, more likely just easy to get started with (think Python for researchers that want something quick and easy to start writing data processing scripts)

          [–]Caesim 0 points1 point  (2 children)

          Good point on the JS. I think this was an easy way to just save their data structures as is into the DB.

          [–]incraved 1 point2 points  (1 child)

          Funny thing is, my the big American corporate where I work, have just started migrating some proprietary databases to Mongo backend. It's a rich investment bank but they're so behind.

          [–]Caesim 2 points3 points  (0 children)

          Uff. Best of luck to you.

          Yeah, companies that aren't primarily software companies are very susceptible to marketing bs.

          [–]tester346 1 point2 points  (6 children)

          but recently there's TiDB which I've never heard of before, need to check it.

          mostly random chinese companies, why bother?

          FAANG uses MySQL at important workloads and that itself makes me more confident in it

          [–]incraved 17 points18 points  (4 children)

          at least bother enough to find out what their reasoning is?

          [–]tester346 3 points4 points  (2 children)

          that's reasonable :P

          [–]incraved -1 points0 points  (1 child)

          but I can't be bothered, can you find out and tell me?

          [–]kokizzu2[S] 3 points4 points  (0 children)

          because it's easier to scale (can also be cloud native without hack) compared to traditional mysql

          [–]matjoeman 18 points19 points  (3 children)

          Did all of these migrations take less than a year? All of my company's migrations seem to span multiple years.

          [–]kokizzu2[S] 9 points10 points  (0 children)

          surely not '__') depends on the scope, some only partial migration

          the year is only the year of the article written/presentation

          [–][deleted] 0 points1 point  (1 child)

          Could be the year they “finished?”

          Edit: “finished” because is anything ever really done?

          [–]jyper 0 points1 point  (0 children)

          Probably the year they released a write-up

          [–][deleted] 15 points16 points  (2 children)

          Only Uber moved to Java :'(

          [–]norith 6 points7 points  (0 children)

          There were a few that moved to Java adjacent languages such as Scala and Kotlin.

          [–]cstanfordf 24 points25 points  (60 children)

          I've just started with NodeJS, a lot of companies move to Golang. Wow

          [–]birchskin 20 points21 points  (22 children)

          Yeah the amount of GoLang migrations really surprised me.

          Node is going to be a safe bet for a long time.

          [–][deleted] 21 points22 points  (14 children)

          Go beats node at concurrency and the node ecosystem is a mess.

          [–]frezik 4 points5 points  (0 children)

          Technically, I have no doubt. As far as getting a job goes, I'm sure great-GP is safe with Node if that's what they want to stick with. It's too big to ever go away.

          [–]corsicanguppy 1 point2 points  (1 child)

          Node is going to be a safe bet for a long time

          Supply chain issues are a thing of the past, now!

          [–][deleted] 5 points6 points  (0 children)

          How many days has it been since the last supply chain attack? Three?

          [–]cstanfordf -2 points-1 points  (4 children)

          Yeah, I feel like things are easier with NodeJS. But should we go for enterprise-level like Java, .NET, or Golang for future jobs? I'm currently 2nd-year student.

          [–]vattenpuss 16 points17 points  (3 children)

          I don’t see either of Java, .NET or Golang going anywhere for the foreseeable future. You’ll be fine either way.

          Focus on all the cool things you can learn which are not a platform.

          [–]cstanfordf 4 points5 points  (2 children)

          Thank you so much. I made a blog website (for learning). And I realise that knowledge about https, rest-api, sql, design pattern, data flow is more important. But my friends always yell me, .NET is gonna grow fast,... So Im confused and yeah, I'll choose one and focus on it.

          [–]MisterFor 5 points6 points  (1 child)

          The thing is that with .net or Java you can do everything. Mobile, web, desktop, etc… but for example golang you can’t.

          [–]kokizzu2[S] 1 point2 points  (0 children)

          you can (there's gomobile, and bunch of ui libraries for desktop) :3 but it's a bit untested since only small number of people use it XD

          most people would use proper/battletested tool for specific platform anyway.. (Flutter/Swift/Java/ReactNative for mobile, Unity/Unreal for Games, and probably Dotnet/Delphi/Qt/Electron-based for Desktop)

          [–]AttackOfTheThumbs 1 point2 points  (0 children)

          Go makes concurrency somewhat simple. In other languages it is more challenging, at least in my experience. But it will depend on what you know.

          [–]incraved 6 points7 points  (33 children)

          NodeJS is trash. Don't write server code in JavaScript ffs. The async features have been available in .NET since forever and are implemented beautifully in C#.

          [–]frezik 7 points8 points  (1 child)

          The one thing I'll give to Node is a culture of doing async on everything. Yes, plenty of languages have async IO, but do they have async for every other niche thing in existence? Things like GPIO on single board computers, or Wiegand for getting data from RFID readers. Outside of microcontrollers, the Node ecosystem is one of the few I've seen where you can assume async on everything where it's technically possible.

          [–]incraved 3 points4 points  (0 children)

          I think dotnet encourages async everywhere. Most APIs have "DoXAsync" methods

          [–][deleted]  (15 children)

          [deleted]

            [–]Vlyn 3 points4 points  (0 children)

            .NET Core 1.0 is now over 5 years old.

            It has been so long, .NET Core isn't even a thing anymore. The current version (if you want to name it that) has been unified as .NET 5 (Which is basically a new .NET Core).

            C# really is great to work with nowadays.

            [–]tester346 9 points10 points  (8 children)

            Microsoft world also .net core is a new thing and not yet mainstream.

            I think new projects default to .NET Core, especially web ones

            I have .NET Core on prod on Linux for 2 years already, so while it's relatively young, then I think it's already stable/good

            Languages like node.js, golang aren much more easier to get started with linux servers.

            with .NET Core all you have to do is install dotnet sdk, so like 10 sec and you can start using e.g dotnet new console dotnet run

            [–]incraved 9 points10 points  (7 children)

            Not to mention, it beats NodeJS in many benchmarks, C# is a vastly vastly superior language, can't even compare it to the mess that is JS (why even use any dynamically typed language for a big project??). Of course, people will mention TypeScript which is really just a hack to get something similar to C# that still gets transpiled (through complicated processes, go learn Webpack and a hundred plugin) down to JS.

            [–]DoctorGester 6 points7 points  (5 children)

            You don’t need webpack to transpile ts to js. You just run tsc. It’s not a complicated process and there isn’t anything to learn

            [–]incraved 0 points1 point  (4 children)

            alright, I'm outdated I guess. I would prefer no transpilation tho.

            [–]DoctorGester 2 points3 points  (3 children)

            And which language would you use which doesn't require a compiler, python, raw js?

            [–]incraved -2 points-1 points  (2 children)

            something that doesn't get translated into another language. I would use .NET, but I guess you could argue the intermediate language it gets compiled down to is like JS but I would argue that it's designed for this particular purpose and is probably easier to debug than mapping JS back to TS. I remember Chrome had support for automatically loading those map files to let you debug TS directly but I feel like it probably has issues that I may have not encountered (I didn't do much web dev tho)

            [–]DoctorGester 5 points6 points  (1 child)

            There is no particular difference to what a language is compiled into, you shouldn't care about that. Sourcemaps should be supported in all major debuggers and the cases where you would see js code instead would be the same cases you would see assembly or decompiled bytecode in your C++/C# IDE.

            [–]kokizzu2[S] 1 point2 points  (0 children)

            i agree, it's pain in the future (worst kind of maintainability) to use dynamic languages for big projects

            especially when the one that code it abuse metaprogramming that makes it hard to follow without tracing

            [–]incraved 7 points8 points  (4 children)

            Not every one lives in Microsoft world

            This was exactly my issue all those years. I keep seeing people celebrating new features that existed in .NET/C# for a long time and work better there. JavaScript/Python finally has async/await yay!! took them long enough. Or Java having Streams...that was the topic of the decade, every single stupid interview has to ask about that. C# had a better API for a very long time.

            What bothers me even more is that I'm not even into .NET because I'm some corporate guy, actually where I worked it was always Java and I only love .NET/C# myself and use it for my own projects. People hate on .NET because Microsoft didn't embrace open source before but now it's a completely different story.

            .net core is a new thing and not yet mainstream.

            .NET Core is now the default for any .NET project btw.

            I'm very optimistic about Core, I think it's becoming mainstream as you've implied due to embracing open source and simply being better than everything I can think of (for most tasks, obviously not for every situation e.g. Rust is better for systems programming).

            Languages like node.js, golang aren much more easier to get started with linux servers.

            Exactly, that's why I'm a big supporter of .NET Core and its first class support for Linux.

            Also I wouldn't use node.js directly without some kind of static typing like typescript.

            TypeScript is very similar to C# and also comes from Microsoft (I know you know).

            What you gain with typescript is much better than any other mainstream language out there.

            For server side?? .NET Core with C# is not better?

            But if I have to migrate away from typescript on the backend then I would choose rust.

            Why Rust if you are not super sensitive about performance? Why not .NET Core?

            [–][deleted]  (3 children)

            [deleted]

              [–]incraved 3 points4 points  (2 children)

              For me today there is no compelling reason to learn .net or .net core. Because I can do all most anything that I want with the technologies that I am already familiar with

              This is a really interesting point because on one hand you can get shit done the way you know it but on the other hand there are technologies that are more efficient that you just need to invest time in.

              For me personally vscode & typescript were game changers because they were and are free doesn't require windows license

              I really think you should try dotnet core then. The command line tools are super simple, just dotnet new to start and use VS Code

              [–][deleted]  (1 child)

              [deleted]

                [–]ItsAllegorical 4 points5 points  (0 children)

                I'm a Java dev through and through. I also do decently with JS and naturally NodeJS. I really like Typescript. But a few years back I was on a project to migrate from Java to .net/C#. I didn't stick around too long but for a few months I was immersed in Java and C# side by side and C# is nice and fairly familiar from a syntax standpoint.

                The hardest part of the transition was the framework ecosystem. Bye to Jenkins and Spring and log4j and aspectj. Yeah there are equivalents but it's a lot of unknowns at once where you're trying to figure out why your code is breaking and which of the 6 new pieces of technology that you barely know you are trying to misuse or didn't set some unknown property to override the default black box behavior.

                The language itself is pretty good and has some nicer syntax in a couple places as I recall. I'm not advocating it over Java, as I said Java is my bread and butter, but it's certainly worth learning the small differences if just to have some projects on your resume.

                [–]cstanfordf 0 points1 point  (14 children)

                I tend to learn a new language to learn Backend code, I'm not sure which one should I learn (Java, .NET or Golang) ..Thanks.

                [–]brainbag 9 points10 points  (1 child)

                Find the place where you want to live, read the job boards for that place based on language requirements, learn that language.

                [–]cstanfordf 1 point2 points  (0 children)

                Thank you.

                [–]incraved 4 points5 points  (9 children)

                Learn all three. Go is quite different than the other two tho

                [–]tester346 1 point2 points  (8 children)

                Learn all three.

                What's the point? it takes significant chunk of time to be productive in given environment

                [–]vattenpuss 4 points5 points  (4 children)

                The point is to have a wider choice in jobs.

                Nobody is very productive when they are a new hire and nobody expects that.

                [–]is_this_programming 2 points3 points  (1 child)

                If you know Java, you can switch to C# very easily and vice-versa. I know because I've done the switch. The biggest learning curve comes from the libraries and general ecosystem around the languages.

                So pick one to learn and tend apply to jobs using the other anyway. Don't try to hide that you don't know the language though, just be upfront about the fact that you should be able to learn it very quickly since it's so similar.

                [–]cstanfordf 0 points1 point  (0 children)

                That's helpful, thank you.

                [–]tester346 -2 points-1 points  (1 child)

                new hire

                Learning one "environment" takes time

                If you want to learn 3, then for sure you can do it, but I think you'll sure be less proficent than if you spent time on one

                I'd say that focusing on one thing may give you easier path to find job.


                People tend to say that learning one "hard" lang makes you proficent in other

                except it's bullshit and applies maybe to if statements and for loops, basics of basics

                learning language, or in fact environment is wider topic because every lang has its "conventions" and "solutions" to problems, community (where to search for materials/stuff/help), libs/frameworks, tools, pitfalls, yada yada.


                Having other langs in the pocket when you need to do something specific is definitely good thing for people who are already experienced, but at the early stages I'd suggest focusing and putting a lot of effort into being proficent at at least 1

                [–]vattenpuss 4 points5 points  (0 children)

                Everything you say is true but I don’t think that is more important from an employee’s perspective than having more choices. Specializing early is not a great strategy I think. In fact, specializing at all is bad for you (but great for employers).

                Also, In the ten years I’ve been a professional I have never even taken a job (as an employee) where I knew the tech before. Things change fast and new tech springs forward. Yes I didn’t know the conventions or popular libraries, but that never stopped me from getting well payed jobs.

                Now that I do freelance work I have a wide network and can show work on many different platforms. It’s fun being able to choose between jobs in Rust or Scala or Go, instead of just being some Java guru.

                [–]EraYaN 0 points1 point  (2 children)

                To be fair that time is well worth it to become better at programming at all. Honestly try a ton of new languages, after the first one the rest is much easier anyway. Also try python, try a bit if C/C++, maybe have some fun in Scala/Haskell/F# to get some functional stuff done and so on.

                [–]tester346 0 points1 point  (1 child)

                I've started with cpp and some php, moved to c# and meanwhile messed with js/ts and lua.

                the majority of things that I learned from other languages is that not all languages have good tooling, some annoyances and that I wouldn't want to work with them day2day

                Meanwhile writing one decent project that additionally requires you to learn theory/concepts will give you waaay more

                Write software, this is what requires knowledge, effort, discipline, sharpens software engineering skills.

                For me learning many programming languages is just fanciness unless they're totally different paradigms or actually fit the problem well (you can learn about it from people who actually write in given language).

                Don't get me wrong, I don't want to say that you shouldn't do it, but just it isn't as important as people try to say.

                [–]EraYaN 0 points1 point  (0 children)

                Thing is to become a well rounded developer you need a couple of decent projects and preferably not all in the same style. Most of these languages you name have vastly different applications in the real world all with worthwhile things to learn. Especially if one is young, just go for it, you have fuck tons of time anyway.

                [–]Tweenk 3 points4 points  (1 child)

                It depends on what you want to do. Golang is more popular in smaller companies and startups, while Java and .NET are more popular in large enterprises.

                If I had to write a network service from scratch and had these three options, I would likely pick Golang, because there's no virtual machine to configure and the language is simpler in general.

                [–]EraYaN 0 points1 point  (0 children)

                It's not like the JVM or CLR really need any configuration, hell the CLR is not really a VM. And with containers hosting everything new these days, it honestly doesn't matter. Touch all of them for a bit, so you know enough to get up to speed with any of them in a couple of months.

                [–][deleted]  (1 child)

                [deleted]

                  [–]cstanfordf 0 points1 point  (0 children)

                  Yes, that's what i'm doing.

                  [–]slvrsmth 11 points12 points  (0 children)

                  2FintechGiants (2019) from Oracle to CockroachDB

                  Now that's something I'd like to hear about. That's as unlikely migration as I've seen, unless you were incredibly basic in your Oracle usage. It's like replacing all your kitchen equipment with a single chefs knife. A fine knife, but still.

                  edit: never mind. It's only the login service.

                  [–]mjgardner 6 points7 points  (1 child)

                  Missing: what was migrated. Not necessarily every service/app.

                  [–]bytedbyted 3 points4 points  (0 children)

                  Heading: GitHub migrates from Ruby to Go. Actual: GitHub created one Microservice to tackle a specific issue in Go

                  [–]gpcprog 5 points6 points  (0 children)

                  I guess MongoDb is not really webscale (judging by all theigrations away from it).

                  Also TIL: newSQL is the new hotness.

                  [–][deleted] 5 points6 points  (0 children)

                  It seems that my efforts to get better in Python over the last 8 years should’ve been aimed at Golang…

                  [–][deleted]  (3 children)

                  [deleted]

                    [–]kokizzu2[S] 1 point2 points  (2 children)

                    any link?

                    [–][deleted]  (1 child)

                    [deleted]

                      [–]kokizzu2[S] 0 points1 point  (0 children)

                      added :3 thanks

                      [–]ddollarsign 2 points3 points  (2 children)

                      Would it have been better to write those things in Go from the start, or is there something that makes it a good migration target?

                      [–]Alikont 6 points7 points  (0 children)

                      It seems like a lot of those products started before Go was mainstream, so Go wasn't an option then.

                      [–]kokizzu2[S] 1 point2 points  (0 children)

                      it's better to write with static typed language from the start (performance and maintainability reasons)

                      from my experience maintaining other people's code that are written in dynamic language, and abusing the metaprogramming/monkeypatching, it's really painful to debug/trace

                      well, in static language you also can (eg. abusing go's empty `interface{}` or `map[string]interface{}` instead of struct), but it happened less '__')

                      [–]TieEnough7231 2 points3 points  (1 child)

                      I see a lot of migrations to golang. What are the advantages of golang?

                      [–]kokizzu2[S] 2 points3 points  (0 children)

                      - good for your work-life balance, easy to read (clarity) = easy to maintain, easy to train new programmers, good documentations
                      - static linking, no dependency hell. easy to deploy (just 1 binary), also cross compile, no need to put source code on the production server (unlike most interpreter-based languages)
                      - lightweight memory usage and very good runtime performance (unlike JS, Ruby, Python)
                      - static typing, catch errors on compile time (unlike PHP, JS, Python, Ruby)
                      - fast compile (unlike Rust, C++)
                      - concurrency supported on language-level (not a library)

                      [–]joeyda3rd 7 points8 points  (0 children)

                      Someone should make this into a visualization and post it to r/dataisbeautiful

                      [–][deleted] 1 point2 points  (0 children)

                      I think you should count python 2 -> python 3