Uber의 리모트 개발환경

컴퓨터 환경은 thin client -> fat client -> thin client와 같이 로컬환경을 터미널과 같은 용도로 메인 리소스는 서버 등의 리모트 환경을 사용하는 thin client와, 로컬환경의 (충분한) 자원을 직접 사용하는 fat client가 반복된다고 해요. 최근에는 GitHub CodeSpace와 같이 클라우드 환경의 서버 자원(환경)을 로컬의 가벼운 client를 통해서 접근해서 사용하는 방식이 많이 보이는 듯 해서, 관심을 가지고 있는데요. (최근에 ipad + GitHub CodeSpace로 개발환경을 구성해본 적이 있는데 이 이야기도 나중에 해보면 좋겠네요.) 회사 동료분이 우버의 리모트 개발환경에 대한 글을 알려주셔서, 여기에도 한번 공유해봐요. 먼저, 기존 Uber 개발환경의 문제점들을 이야기 하는데요. 10개 이상의 프로그래밍 언어, 4000개 이상의 서비스, 500개 이상의 웹앱, 9개 이상의 빌드도구 등등 다양한 환경이 혼재되어있고, 이런 다양한 환경이 코드작성 -> 빌드 -> 실행 루프를 어렵고 시간이 오래걸리는 문제를 만들게 되었다고 해요. 다양한 프로젝트를 개발하면서 일관된 로컬 개발환경을 유지할 수 없는 점을 투쟁이라고 표현할 정도로 어려웠다고 하는데요. 이런 문제 해결을 위해 리모트 개발환경을 설계하고, 도입했고 그 과정에 대해서 설명하는 글이에요. 리모트 환경을 제공하면서, 빠른 개발속도, 일관된 (패키지, 라이브러리)등의 개발환경, 로컬환경과의 격리, (개발을 위한 로컬환경의)제로설정, 늘 최신 보안환경으로 업데이트할 수 있어 안전함 등의 장점을 가질 수 있었다고 해요. DevPod이라고 표현하는 리모트 개발환경은 Go, Java, Android, Web, Machine Learning 드의 선택을 통해 클릭만으로 쉽게 프로비저닝 가능하고, DevPod Central이라는 웹 기반의 서비스를 통해 리모트 개발환경의 리소스 사용 및 소비의 가시성을 높였다고 해요. JetBrain이나 VS Code도 최근에 리모트 개발환경을 사용할 수 있는 기능들이 계속 적용/발전하고 있어서 요런 기능들을 사용해서 개발자들에게 표준 DevPod IDE 환경을 정의하고 제공한 이야기 등 참고할 부분이 많다고 생각해요.

Devpod: Improving Developer Productivity at Uber with Remote Development

Uber Blog

Devpod: Improving Developer Productivity at Uber with Remote Development

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2022년 12월 28일 오전 10:31

댓글 0