Looking for Advice on Component Types

Brian W February 17, 2022

As I think about how we would load and classify our components in Compass, I’m curious to get others thoughts on how best to model the following scenario:

Component A is a common logging library.  Component A gets assembled into Component B (a .war file) that can be deployed as a service.  Component B can also be assembled into Component C (a Docker container) and deployed to Kubernetes.

  • Component A = library
  • Component B = service
  • Component C = ??? (Is this also a service?)

Thank you for your feedback.

2 answers

2 votes
Andrew Freedman
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
February 24, 2022

Hi Brian,

You've got me to thank for the lack of documentation around when to use each type. 😬

Not because I don't want to help! Just because we wanted to know how our users felt about different component types before we started making recommendations and influencing opinions.

I think Max's model looks very reasonable. My personal interpretation is that a Service is managed by the software vendor (SaaS) while an Application is managed by the customer (BTF or shrink wrapped).

On a very practical level, Services have Tiers and On-call schedules, while Applications do not. That might make your decision for you — but I'm very curious if that fits your expectations or not; that's exactly the kind of feedback that helps us tailor each component type's schema.

Also (and @Katie Silver will be delighted by this) your question makes me think that we should add the ability to change component type, so that the risk associated with making the wrong choice upfront is greatly reduced.

— Andrew

Katie Silver
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
July 27, 2022

Quick update - we just shipped the ability to change component types! So feel free to experiment with your structure without regret :) 

Like Steffen Opel _Utoolity_ likes this
2 votes
Laura February 17, 2022

Hi Brian, 

We have grouped our components like this:

  • Library: An assembly that cannot run alone (like your logging lib)
  • Service: An application that can run alone, but does not have any interaction possibility (like a windows service)
  • Application: An application that can run alone, but does have any interaction possibility, like an API or an UI. 

I would also be fine, putting any piece software that has no UI into the Service group, and any piece of software that has an UI into the Application group. 

 

So in your case, for Component C, I'd put it into service or application, depending on if it has an UI or not.... 

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events