Skip to content

Latest commit

 

History

History
25 lines (19 loc) · 1.64 KB

ADR-09-Golang Programing Language.md

File metadata and controls

25 lines (19 loc) · 1.64 KB

ADR-09: Golang Programing Language

Date:

2024-09-28

Status:

Accepted

Context:

We are developing a backend system for a scalable application that requires high performance, concurrency handling, and ease of deployment.

Decision:

We will use Go (Golang) with the Gin framework as our backend programming language and web framework. The combination offers a powerful solution for building RESTful APIs while leveraging Go's strengths in concurrency and deployment.

Consequences:

PROS:

  • Performance: Go is a compiled language that offers excellent performance. The Gin framework is designed to be lightweight and efficient, providing fast HTTP routing.
  • Concurrency Support: Go's goroutines and channels facilitate handling multiple requests simultaneously, making it ideal for high-traffic applications.
  • Minimalist and Flexible: Gin follows a minimalist design philosophy while allowing for flexibility in structuring applications, making it easy to get started and scale.
  • Rich Middleware Support: Gin provides a robust middleware system, allowing us to easily implement functionalities such as authentication, logging, and error handling.
  • Strong Community and Documentation: Go and Gin have active communities and comprehensive documentation, which can be beneficial for troubleshooting and support.

Cons:

  • Learning Curve: Although Go's syntax is straightforward, developers new to Go may require time to adapt to its idioms and conventions.
  • Error Handling: Go’s approach to error handling can be verbose, requiring explicit checks that may feel cumbersome compared to exceptions in other languages.