GopherCon 2019: Uber의 접근 방식 (1)
Source: Dev.to
사전 요구 사항
GopherCon 2019를 살펴보고 흥미로운 주제들을 이해해 보세요.
GopherCon 2019: Elena Morozova – Uber가 어떻게 진행되는가
최근 GopherCon 2019 영상들이 차례로 업로드되고 있으니 꼭 확인해 보세요. 올해 최신 공유 내용을 배워봅시다. 오늘은 제가 매우 좋다고 생각하는 Uber가 어떻게 진행되는가라는 주제를 공유하려 합니다. Uber 엔지니어들은 2015년 Golang을 도입한 뒤 겪은 몇 가지 공통 문제들을 공유했습니다:
- 새로운 서비스를 대량으로 생성하는 것.
- 서로 다른 서비스 개발 사이를 자주 전환해야 하는 상황(컨텍스트 스위칭).
- 글로벌 서비스를 제공하는 것.
해결 방안
다음 세 가지 방법을 통해 문제를 해결했습니다:
- 의존성 주입 (Dependency Injection)
- 일관된 코드 구조
- 모노레포 (Monorepo)
이러한 문제들 때문에 Uber는 내부적으로 의존성 주입 라이브러리인 fx (https://github.com/uber-go/fx)를 먼저 개발했습니다. 이를 통해 다양한 새로운 서비스를 보다 쉽게 생성하고 fx를 활용해 개발할 수 있게 했습니다. 다음으로 각 서비스에 일관된 아키텍처를 설계하여 서로 다른 서비스 간 코드 유지보수를 용이하게 만들었습니다. 마지막으로 모노레포(모든 코드를 하나의 대형 저장소에 두고 개별 프로젝트가 아닌) 방식을 사용해 패키지 버전 변경을 더 편리하게 했습니다(한 번의 커밋으로 모두 업데이트 가능).