bcc-code / developer.bcc.no

BCC Developer Portal with technical documentation and other resources for developers
https://developer.bcc.no/
5 stars 5 forks source link

[ADR] Core APIs language #37

Open StevenMalaihollo opened 2 years ago

StevenMalaihollo commented 2 years ago

Context

After deciding the API model, we need to agree on implementation details. This document is focusing on the language selection for the core APIs (person API, org API, Affilitaions API, profile API)

Considerations

  1. Type validation
  2. Documentation API
  3. Code maintenance/readability
  4. Language popularity (libraries, community)
  5. Testing
  6. gRPC support

Possible languages

We shouldn't be introducing any new languages to BCC IT so we're going to choose from 3 that are already used

  1. Node js
  2. C#
  3. Golang

Language comparison

Node

Pros

Cons

Remarks

C

Pros

Cons

Remarks

Go

Pros

Cons

Remark

Decision

Because of insufficient experience with Go and C# we cannot make a decision 100% certainly, but based on research we feel like go is more likely to be the right choice, so we're going to implement the first API with go. If the results are not satisfactory then we're going to re-evaluate

Consequences

Alternatives

github-actions[bot] commented 2 years ago

Remember that ADRs are publicly available hence do not include any confidential information in the issue description! To read more about ADR please refer to documentation.

piotrczyz commented 2 years ago

We do have experience with .NET and we created building blocks that help to setup APIs with minimal effort. But Golang seems to be an interesting option.

piotrczyz commented 2 years ago

Do we take the decision for the members project all do we consider to use the same language overall?

rvanoord commented 2 years ago

The language choice can be made from service to service and team to team - different languages may be suitable for different scenarios.

However, leveraging both experience and libraries/patterns from other teams and projects should always be taken into the equation. This can be valuable both for speeding up development time and also when running into common issues.

Support the choice of GO for the first API in Members :-)