Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Messyass
Dec 23, 2003

I'm convinced that the primary reason to choose a microservices architecture is organisational and not technical.

Once you're dealing with a system that's too complex for one (small) team to manage, and you want teams to be able to operate independently, you kinda have to embrace Conway's law and split the system into independently deployable chunks, even (to some extend) to the detriment of the system from a purely technical viewpoint.

Adbot
ADBOT LOVES YOU

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

Messyass posted:

I'm convinced that the primary reason to choose a microservices architecture is organisational and not technical.

Once you're dealing with a system that's too complex for one (small) team to manage, and you want teams to be able to operate independently, you kinda have to embrace Conway's law and split the system into independently deployable chunks, even (to some extend) to the detriment of the system from a purely technical viewpoint.

It's 100% this

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
People already split up a service into database / peristence, frontend, and middle tier without needing multiple teams to do it effectively. The more dysfunctional you are the more you start splitting team members based upon function than the service although you do need a group of people that are experts at certain functional parts of your stack.

Also, to improve stability, it also makes sense to separate parts of a system that keep changing from parts that don’t change as often. You don’t blow away an entire rack of servers when simply invalidating a cache can do the trick. This can help improve availability from the stance of isolating changes better. My company separated components out not necessarily into microservices because taking out availabilty in multiple areas when making cowboy deploys in prod was too much risk to handle even at 3 engineers.

Most companies should probably get SOA going somewhat well before thinking they can break it down finer.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.
The operational requirements themselves largely spring out of Conway's Law, because it becomes too complex for disconnected teams to maintain awareness of each other. Lots of monolithic applications have parts that change less frequently than other parts. The virtual memory subsystems of some Unixes have been virtually unchanged for thirty years, but the relative infrequency of change versus drivers for recent hardware hasn't prompted a move to message-passing microkernels. The components have vastly different stability guarantees even though they exist within the same kernel. Operationally, this doesn't matter for most use cases because the reliability is ensured at other levels of the system: sure, you need to reboot a perfectly functional VM subsystem to upgrade a RAID driver, but it doesn't matter because you have load balancers able to route around the failure.

The industry has bought into this idea that there's a dichotomy between singular monoliths and extremely fine-grained microservices. There's a whole wealth of possibilities that exists in between those two extremes—much like layering user-space programs on top of a monolithic kernel—and that space is exactly what's right for most mid-sized projects.

Keetron
Sep 26, 2008

Check out my enormous testicles in my TFLC log!

Messyass posted:

I'm convinced that the primary reason to choose a microservices architecture is organisational and not technical.

Once you're dealing with a system that's too complex for one (small) team to manage, and you want teams to be able to operate independently, you kinda have to embrace Conway's law and split the system into independently deployable chunks, even (to some extend) to the detriment of the system from a purely technical viewpoint.

This is why we do it at my current job.
Before that we used a badly implemented micro service architecture for cv building.

Macichne Leainig
Jul 26, 2012

by VG
The worst part about coming back from PTO is seeing a new bug assigned to you while you were gone.

Even worse is when it's about the error message returned when a workflow is configured improperly, an error message written by the BA, with approval from the PO, and with no objections from the team when reviewing the user story, copied and pasted directly into a string literal with no modifications.

I am not looking forward to having this conversation immediately after returning from a break. Even more infuriating is that our QA team members are constantly bitching about never having enough time and then they open bogus bugs like this.

CPColin
Sep 9, 2003

Big ol' smile.

Protocol7 posted:

I am not looking forward to having this conversation immediately after returning from a break. Even more infuriating is that our QA team members are constantly bitching about never having enough time and then they open bogus bugs like this.

I used to have a QA manager who would always make this complaint and say we weren't limiting our scope properly and identifying where changes were made, which led to wasted time as QA tested everything, just to be sure. So I started being extremely specific about what I changed and listing what needed to be tested, plus a little extra around the edges. The QA person on my team still repeatedly tested random other poo poo and filed urgent bugs against Test about behavior that was also on Production (and wasn't touched).

This person was completely oblivious, too, and just completely failed to internalize any of the "we need to spend less time testing unrelated functionality" feedback in our sprint retrospectives.

The QA manager, meanwhile, was the one who repeatedly objected to our proposal of deploying all the cron jobs with every release (they had been separated from the main code base and each other years ago because we had no review process and kept breaking poo poo) unless we were willing to document what every job did, when it ran, what parameters it could take, etc. This was so QA would know how to test all the jobs, because the manager threatened to have the team test all of them, for every deploy.

So I added all that documentation (and made it required in the future) and we started deploying all of them. QA never added a procedure to do any additional testing of them, unless we called our specific jobs in our changelogs. We devs knew all along how that would end up.

Pollyanna
Mar 5, 2005

Milk's on them.


We now have weekly “deployment managers” (read: team member hats) who run deployments to staging and production, depending on the day of the week, every day of the week except Friday. Groan.

Macichne Leainig
Jul 26, 2012

by VG

CPColin posted:

I used to have a QA manager who would always make this complaint and say we weren't limiting our scope properly and identifying where changes were made, which led to wasted time as QA tested everything, just to be sure. So I started being extremely specific about what I changed and listing what needed to be tested, plus a little extra around the edges. The QA person on my team still repeatedly tested random other poo poo and filed urgent bugs against Test about behavior that was also on Production (and wasn't touched).

That's... almost exactly what's happening with this project, funnily enough. We're removing all of the unused legacy code, most of which is COM we want to remove so that we can stop doing nasty registry poo poo in the installer and move to a more standard xcopy style installer.

With the help of an architect I wrote a LinqPad script that recursively identifies COM dependencies for a specific project in a BFS style search, so we used that script to break down the work into discrete user stories and we all agreed that it was the developer's responsibility to identify which features of the application needed testing based on what code was changed or removed.

They're still testing random poo poo and since it's basically a system-wide regression, they're finding a bunch of existing bugs and can't keep them separated from the work we've actually completed.

LLSix
Jan 20, 2010

The real power behind countless overlords

I don't understand the pain and I would like to. Bugs are bugs, what does it matter why the exist or where they were found? Sprint planning or the person responsible for sorting bug reports for priority should be routing them to the right person and making sure they most important ones get fixed irregardless of if the bugs have been around for years or just introduced.

I agree it's bad that QA is wasting their time, and thus under-testing new code but that shouldn't really be an issue for a frontline developer. If anything it should mean less work since the old code has to have at least pretended to be stable in order to get shipped right?

CPColin
Sep 9, 2003

Big ol' smile.

LLSix posted:

I don't understand the pain and I would like to. Bugs are bugs, what does it matter why the exist or where they were found? Sprint planning or the person responsible for sorting bug reports for priority should be routing them to the right person and making sure they most important ones get fixed irregardless of if the bugs have been around for years or just introduced.

In my case, the problem was that all these bugs were being pulled straight into the sprint and cluttering everything up, because the QA person thought they were related to the changes we were trying to push through. They weren't, but I still had to spend the time to look at them and eject them from the sprint and back onto the Triage board. No big deal for an every-now-and-then kind of thing, but this person just kept doing it with stuff that was barely tangentially related to the functionality I'd actually changed, even when I would put do not test feature Y; it didn't change right in the ticket.

Also, a lot of the bugs being filed were in the format, "I think feature X should act like Z instead!" and I always wanted to close those with, "That's your opinion, not a loving bug, you idiot!"

Macichne Leainig
Jul 26, 2012

by VG

CPColin posted:

In my case, the problem was that all these bugs were being pulled straight into the sprint and cluttering everything up, because the QA person thought they were related to the changes we were trying to push through. They weren't, but I still had to spend the time to look at them and eject them from the sprint and back onto the Triage board. No big deal for an every-now-and-then kind of thing, but this person just kept doing it with stuff that was barely tangentially related to the functionality I'd actually changed, even when I would put do not test feature Y; it didn't change right in the ticket.

Also, a lot of the bugs being filed were in the format, "I think feature X should act like Z instead!" and I always wanted to close those with, "That's your opinion, not a loving bug, you idiot!"

Are we coworkers? This sounds bizarrely familiar.

Logging UI bugs in a part of the application we have not even touched is useful but not pleasant when the bug has existed for years and they think you broke it.

Macichne Leainig fucked around with this message at 20:41 on Jan 7, 2019

ChickenWing
Jul 22, 2010

:v:

I think that's just endemic to QA in general


"hepl i found bug"

"Oh yeah that's existed for a while, don't worry about it for now"

"fix bug."

"Don't worry it's not relevant to this release, we can leave it for now"

"fix b.ug"

"We have more important things to worry about and want to keep our scope fixed for this release"

"fx bug"

"Seriously this isn't important right now, it's in the backlog, we'll get to it later"

-bug escalated to critical. release goes amber. in the distance, sirens-

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

CPColin posted:

The QA person on my team still repeatedly tested random other poo poo and filed urgent bugs against Test about behavior that was also on Production (and wasn't touched).

This person was completely oblivious, too, and just completely failed to internalize any of the "we need to spend less time testing unrelated functionality" feedback in our sprint retrospectives.
This is part of why a previous QA engineer was let go - completely failing to do any deeper analysis of the software under test and troubleshoot a little themselves to give some better context before opening a bug. Maybe that's fine in a larger company but on a team of 4 engineers, you should probably be doing more than acting as a slow test suite in Jenkins because developers couldn't around to automating the test suite.

Carbon dioxide
Oct 9, 2012

Cool, GitHub now allows users to make unlimited private repos on the free tier.

There's some things you can't do, like add more than 3 contributors but still. I often have personal projects I'm working on that I don't want public yet but would like to store on GitHub and this is perfect.

raminasi
Jan 25, 2005

a last drink with no ice
Also, bugs sitting unnoticed in production for long periods of time might turn out to be features, depending on the specific case.

xiw
Sep 25, 2011

i wake up at night
night action madness nightmares
maybe i am scum

Cpig Haiku contest 2020 winner

Carbon dioxide posted:

Cool, GitHub now allows users to make unlimited private repos on the free tier.

There's some things you can't do, like add more than 3 contributors but still. I often have personal projects I'm working on that I don't want public yet but would like to store on GitHub and this is perfect.

I have a heap of stuff on gitlab because of this. Nice to see.

Gildiss
Aug 24, 2010

Grimey Drawer

LLSix posted:

I don't understand the pain and I would like to. Bugs are bugs, what does it matter why the exist or where they were found? Sprint planning or the person responsible for sorting bug reports for priority should be routing them to the right person and making sure they most important ones get fixed irregardless of if the bugs have been around for years or just introduced.

I agree it's bad that QA is wasting their time, and thus under-testing new code but that shouldn't really be an issue for a frontline developer. If anything it should mean less work since the old code has to have at least pretended to be stable in order to get shipped right?

This ends up being a dog chasing its tail. Forever. Like my CEO who is incapable of not sidetracking everything and then wondering why things aren't ready yet.

Time moves in a straight line you gently caress!

ChickenWing
Jul 22, 2010

:v:

raminasi posted:

Also, bugs sitting unnoticed in production for long periods of time might turn out to be features, depending on the specific case.

Fifth Axiom of API development: all API behaviour, intentional or not, must be supported

vonnegutt
Aug 7, 2006
Hobocamp.
this is probably a stupid question, but: if a bug exists and is known, why is there not a backlogged ticket filed for it so that any future tickets can be closed as dupes?

Seat Safety Switch
May 27, 2008

MY RELIGION IS THE SMALL BLOCK V8 AND COMMANDMENTS ONE THROUGH TEN ARE NEVER LIFT.

Pillbug

vonnegutt posted:

this is probably a stupid question, but: if a bug exists and is known, why is there not a backlogged ticket filed for it so that any future tickets can be closed as dupes?

I worked at a place where the dev lead would go through and blindly close any ticket more than 60 days old "because it was probably fixed by now anyway."

Nobody ever made long-term bug reports.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
My boss partially quit over nobody trying to fix issues that were open for years that caused production outages. In fact, we occasionally would go look in ticket history and find “closed” tickets that were never resolved where there was some speculation that it could cause a problem but because it never caused an outage it was closed by product. The worst ones have been recurring production outages that destroy our SLA budget but nothing is followed through on the actions suggested. I suggested an APM solution and instrumentation of our JVMs with a ticket saying it should be about - nothing over a year later and about 20 hours of outages that we can’t explain.

Gildiss
Aug 24, 2010

Grimey Drawer

necrobobsledder posted:

My boss partially quit

Is this a software stroke? Like the half of his body that doesn't browse hacker news is paralyzed?

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

Gildiss posted:

Is this a software stroke? Like the half of his body that doesn't browse hacker news is paralyzed?

Worse, the half that does has become libertarian.

smackfu
Jun 7, 2004

What’s the solution when your bug tracker is drowning in unreproducible bugs?

JawnV6
Jul 4, 2004

So hot ...
I'm going to wildly mix the various discussions in the most bad faith reading here. Buuuuuut if QA is running an invalid setup and kicking that bugs over to one of four (4) human developers, there's zero 'process' solution available. Who, exactly, is cloning that to the known issue in the backlog? If there was a PM capable of triage, one of four (4) human devs wouldn't be picking it up either.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

smackfu posted:

What’s the solution when your bug tracker is drowning in unreproducible bugs?
close them all, the important ones will get reopened

Hughlander
May 11, 2005

Seat Safety Switch posted:

I worked at a place where the dev lead would go through and blindly close any ticket more than 60 days old "because it was probably fixed by now anyway."

Nobody ever made long-term bug reports.

Our VP of Engineering made that the official policy but for a decent reason. POs have 60 days to get a bug to a resolved state as a way of balancing bugs vs feature development. If after 4 sprints you didn't prioritize it to be fixed then it's obviously not important enough to ever fix so it gets resolved as won't fix.

Che Delilas
Nov 23, 2009
FREE TIBET WEED

Hughlander posted:

Our VP of Engineering made that the official policy but for a decent reason. POs have 60 days to get a bug to a resolved state as a way of balancing bugs vs feature development. If after 4 sprints you didn't prioritize it to be fixed then it's obviously not important enough to ever fix so it gets resolved as won't fix.

See, where I work, the project managers would love this because when we're not fixing bugs, we're developing new features!

Until a customer screams and then it's "this has been a known issue for months why haven't we fixed it?"

:smith:

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Gildiss posted:

Is this a software stroke? Like the half of his body that doesn't browse hacker news is paralyzed?
A poor wording of “part of the reason” that collided with another valid interpretation. I still like the idea of half-quitting a job because when I’ve seen it means you only work 20 hours / week or show up as a consultant. Was hoping to land a situation like that bu, alas, I wrote my documentation too well.

Macichne Leainig
Jul 26, 2012

by VG

Carbon dioxide posted:

Cool, GitHub now allows users to make unlimited private repos on the free tier.

There's some things you can't do, like add more than 3 contributors but still. I often have personal projects I'm working on that I don't want public yet but would like to store on GitHub and this is perfect.

A week after a group of peers and I switched to Bitbucket for this exact reason. :doh:

Ah well, they're both good Git services in their own right.

Ghost of Reagan Past
Oct 7, 2003

rock and roll fun

Che Delilas posted:

See, where I work, the project managers would love this because when we're not fixing bugs, we're developing new features!

Until a customer screams and then it's "this has been a known issue for months why haven't we fixed it?"

:smith:
I recently got a bug on my plate, which was put into planning and all that. Hell, it's fixed for the next release already.

The PM now wants it to be hotpatched, so I'm telling him no. It feels good to tell the PM that his bug will not get fixed immediately because he should have thought about that during planning. And, I know exactly which customer is screaming about it and I want them to suffer.

NovemberMike
Dec 28, 2008

return0 posted:

I disagree. There are clear operational wins to be had at scale by breaking a monolith apart in any circumstance where different logical parts of the monolith have different functional characteristics. For example, a user identity service component which is called very frequently contrasted with some rarely called leaf system; a highly compute intensive component contrasted with an I/O intensive component; a subsystem with a data model best suited to a relational DB contrasted with another using a document store, etc. Isolation has benefits here.

I'm a little curious what your definition of "monolith" is here. My understanding is that traditional monoliths are three tiered architectures, so they still have the data layer as a separate system. If you consider a monolith to be a single system that is committed and deployed at the same time then there are big companies that run off monoliths.

Greatbacon
Apr 9, 2012

by Pragmatica

NovemberMike posted:

I'm a little curious what your definition of "monolith" is here. My understanding is that traditional monoliths are three tiered architectures, so they still have the data layer as a separate system. If you consider a monolith to be a single system that is committed and deployed at the same time then there are big companies that run off monoliths.

I think that's a pretty accurate definition of "monolith" but it's missing a couple of of other elements in its definition. They are also usually projects large enough to have multiple teams with little day to day interaction committing to them, and a backing DB with a large number of tables.

Not every monolith needs to be broken into micro services though. There is a lot of admin/engineering overhead that comes with the micro service pattern and it mostly arises as a response to large concurrent user bases in a web service context. The Windows OS would probably be considered a monolith, but it is deployed (installed) at a more or less 1:1 ratio of running instance to user. The issues of development at scale there are solved by breaking things into packages and the notion of user scale is mostly non-existent (since each user has their own dedicated instance).

Micro services though give you a finer granularity for when you are dealing with like, a million+ users hitting the same login/registration/home end points in a web context at the same time. You want to be able to scale those user edge components at load without necessarily scaling up backend or business logic components that operate async or in the background. But, you also want to preserve the ability to scale up those async processes as their demand ramps up. Those two things usually have different usage/scale patterns. It also allows you to make DB data models a little more fluid by trying to pin one service to one table, so you don't have to worry about changes to one service's model having unintended knock on effects to other services in the ecosystem.

redleader
Aug 18, 2005

Engage according to operational parameters

ChickenWing posted:

Fifth Axiom of API development: all API behaviour, intentional or not, must be supported

AKA Hyrum's Law

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Microservices can also be defined in terms of risk / churn profile where a component is under heavy development and can put other services’ availability at risk by rolling them together. Loosely coupled monoliths to me include services that internally use forms of service discovery and indirection to determine how to call them. Welll designed monoliths from decades ago could be broken out to other services living in the same box and moving them to other machines would simply mean determining appropriate protocols and conventions to communicate with them.

Things that make microservices (or any modularizarion) worse begins the overhead issues is when you’re sharing more libraries than you realize and that library is under constant development. Every other company has some core util library that people use everywhere that’s also insufficiently tested and when there’s a bug found you have to re-deploy everything.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

necrobobsledder posted:

Things that make microservices (or any modularizarion) worse begins the overhead issues is when you’re sharing more libraries than you realize and that library is under constant development. Every other company has some core util library that people use everywhere that’s also insufficiently tested and when there’s a bug found you have to re-deploy everything.

Doesn't that get largely solved with some sort of verisoned package management? "We fixed a bug in Util library affecting FooService, version 1.6 of Util has been published".

"Okay, but I'm developing BarService, 1.5 is fine because that bug doesn't affect us, we'll put a story on the backlog to upgrade in our next sprint".

ChickenWing
Jul 22, 2010

:v:


Yes that, couldn't remember where I'd read it


I found that article about a week after experiencing it as fully as humanly possible and it will stick with me for the rest of my goddamn professional career

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.




That reminds me of the time the WinSCP guy fixed a UI bug that I basically developed a workflow around using because I thought it was a feature, so I asked him to turn it into a UI option. Dunno if he ever did, though, since I haven't used it heavily since I got out of LAMP hell.

Adbot
ADBOT LOVES YOU

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

New Yorp New Yorp posted:

Doesn't that get largely solved with some sort of verisoned package management? "We fixed a bug in Util library affecting FooService, version 1.6 of Util has been published".

"Okay, but I'm developing BarService, 1.5 is fine because that bug doesn't affect us, we'll put a story on the backlog to upgrade in our next sprint".
In theory, yes. In practice, I’ve normally observed that the team will upgrade at the slightest sign of a fix happening in an internal library while external updates languish for years. Furthermore, the Util library usually includes notes like “fixed critical security issue in foobash function, all users should upgrade” because said core library is poorly maintained across the company despite running embedded in every other service and someone using it discovers an edge case or serious flaw regularly. But instead of properly testing said library better for the good of the company, middle managers externalize the maintenance of the core library because they’re too busy shipping features. It is truly the tragedy of the commons, you see.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply