오픈소스 Armeria의 기여자를 위한 이벤트를 진행하였습니다

들어가며

안녕하세요. LINE에서 오픈소스를 담당하고 있는 이서연입니다. 이번 글에서는 LINE에서 이번에 처음 시행한 이벤트인 ‘Armeria contributor reward’를 소개하고 그 후기를 공유드리려고 합니다. 참고로 이번 글에서는 Armeria에 대한 기술적인 설명은 하지 않습니다. 기술에 대한 자세한 설명은 공식 홈페이지에서 확인하실 수 있습니다.

Armeria 프로젝트는 LINE에서 개발하여 오픈소스로 공개한 프로젝트입니다. 비록 시작은 LINE에서 했지만, Armeria가 지금의 모습을 갖추기까지는 LINE 밖 여러 기여자(contributor)분들의 열정적인 참여가 큰 역할을 담당했습니다. 이에 저희는 기여자들에게 감사의 뜻을 전하고자 이번 이벤트를 기획하게 되었습니다. 

본 내용으로 들어가기 전에 ‘오픈소스 기여’가 무엇인지 먼저 정리해보았습니다.

오픈소스 기여란? 

회사에서 프로젝트를 진행하면 개발팀, 기획팀, 사업팀, 디자인팀 등 여러 분야의 사람들이 함께 모여 일을 합니다. 오픈소스 프로젝트도 이와 마찬가지입니다. 개발 이외에도 테스트, 홍보, 디자인, 그리고 문서화 등의 작업이 모두 모여 하나의 훌륭한 오픈소스를 만들어 냅니다. 간혹 오픈소스 기여를 좁은 의미로만 해석하여 직접 작성한 코드가 프로젝트 코드에 머지(merge)되는 것만으로 한정할 때가 있는데요. 앞서 이야기한 것처럼 오픈소스가 만들어지는 과정에는 단지 ‘코딩’만 포함되는 것은 아닙니다. 오픈소스의 성장과 유지에 도움되는 모든 활동이 오픈소스 기여에 포함된다고 볼 수 있습니다. 오픈소스 프로젝트를 주제로 발표해서 더 많은 사용자를 확보하는 활동, 문서화에 참여해 정교하고 정확한 문서 작성에 도움을 주는 활동, 새로운 아이디어를 제안해 문제 해결에 도움을 주는 활동, 버그 리포팅, 로고나 UI 디자인에 도움을 주는 활동 모두가 오픈소스 기여에 포함됩니다.

그렇다면 왜 오픈소스 세계에서는 기여자를 소중하게 생각할까요? 그냥 제작자가 마음대로 하면 안 되는 걸까요?

오픈소스 기여가 중요한 이유 – 제작자의 관점

오픈소스 만드는 사람들과 직접 이야기를 나누어보면, 그들은 항상 프로젝트가 아직 완벽하지 않으며 사용자 피드백을 중심으로 더욱 발전해야 한다고 생각하고 있습니다. 오픈소스 운동의 대표적 인물인 에릭 레이먼드가 쓴 글, ‘성당과 시장‘을 읽어보면 오픈소스 개발 방법에 대해 자세히 나오는데요. 핵심은 사용자를 포함한 많은 사람들의 참여가 소프트웨어를 더욱 발전시킨다는 것입니다.

음식점을 예로 들어볼까요? 내가 식당 주인이고 음식을 만들어 판다고 생각해봅시다. 내가 만든 음식이 어떤 사람에게는 적당하고 또 어떤 사람에게는 달거나 맵거나 싱거울 수 있습니다. 또한 내가 만든 음식과 좀 더 잘 어울리는 식기나 식탁 혹은 플레이팅 방법을 알고 있는 사람이 있을 수도 있습니다. 음식이 좀 더 돋보이는 메뉴판 레이아웃을 알고 있는 사람도 있겠죠. 이런 유용한 피드백들을 바로 전달받을 수 있다면 어떨까요? 또한 그런 유용한 피드백을 전달한 사람이 직접 적용할 수 있게 만든다면 어떨까요? 좀 더 멋진 식당이 될 가능성이 크겠죠? 아마 맛집으로 소문나지 않을까요?

오픈소스는 사용자 피드백을 바탕으로 개발해 나간다고 말할 수 있습니다. 오픈소스로 공개해 놓고 사용자 피드백을 무시한다면 그 오픈소스는 사용자를 점점 잃게 될 것입니다. 사용하는 사람이 줄어들면 제품의 가치는 같이 줄어들 수밖에 없습니다. 또한 사용자 피드백을 무시하지 않고 받아들인다고 해도 만약 혼자서 모든 것을 감당하려고 한다면 역시 문제가 발생할 수 있습니다. 사용자가 늘어나면 피드백도 함께 늘어나게 될 텐데요. 늘어난 피드백을 참여자들의 도움없이 혼자서 모두 응답하는 건 점점 어려워질 테고, 그렇게 품질이 저하되며 결국 사용자는 감소하게 될 것입니다. 결국 그 오픈소스는 죽은 오픈소스라고 불리겠죠.

사용자 피드백을 중심으로 개발할 땐 사용자와 제작자 간의 원활한 커뮤니케이션이 기본 바탕이 됩니다. 피드백이 신속하게 반영되면 그에 맞춰 사용자가 점점 늘어나고, 그 사용자가 다시 개발자가 되는 선순환의 구조가 탄탄한 커뮤니티를 형성하며 오픈소스를 지탱하게 됩니다.  

여기까지 오픈소스 제작자의 관점에서 설명을 적어보았는데요. 오픈소스 개발에 참여하는 참여자의 입장에서도 한번 생각해 보겠습니다.

오픈소스 기여가 중요한 이유 – 참여자의 관점

우선 요구 사항을 빨리 전달할 수 있습니다. 참여자들이 활발하게 활동하는 오픈소스는 질문을 남기면 다른 사용자나 메인테이너(maintainer)가 빠르게 응답해줍니다. 질문한 뒤 답을 빨리 받아볼 수 있다면 오픈소스를 더욱 쉽게 사용할 수 있겠죠? 또 고치고 싶은 부분이 있다면 다른 사람이 해줄 때까지 기다리지 않고 직접 고쳐볼 수 있습니다. 혼자 수정한 부분은 리뷰를 통해 의견을 받아볼 수 있고요. 이렇게 오픈소스에 참여한 이력은 고스란히 남아서 누구나 볼 수 있게 공개됩니다. 이런 이력들은 개발자 채용 과정에서 코딩 테스트보다 더욱 효과적으로 자신을 보여줄 수 있다는 장점이 있습니다. 

혹시 그동안 오픈소스 프로젝트는 초고수 개발자들만 참여하는 거라고 생각해서 소극적인 태도로 그저 바라만 보고 있지는 않으셨나요? 이번 기회에 관심 있게 지켜보던 프로젝트의 issue 목록에서 ‘good-first-issue’, ‘first-timers-only’ 혹은 ‘help-wanted’ 같은 label이 붙은 것들을 찾아 한번 시작해보면 어떨까요?

Armeria contributor reward 소개

이번 행사의 목표는 감사 인사를 드리며 기여자들과 교류하는 것이었습니다. 오픈소스 프로젝트다 보니 개발에 참여하고 계신 분들이 전 세계 각지에 흩어져 있어서 소통이 주로 텍스트로만 이뤄졌는데요. 늘 코멘트로 짧게 LGTM(Looks Good To Me) 혹은 :thumbsup:으로만 마음을 전하는 것이 부족하다고 생각하고 있었습니다. 그래서 이번에는 기여자분들에게 개별적으로 이메일을 보내 인사를 드리고 소정의 선물을 전달하였습니다. 

아래는 기여자들의 GitHub profile picture를 활용한 이벤트 이미지입니다. Armeria의 로고처럼 ‘핑크 핑크’한 색감이 참 예쁘죠?

기여자들의 참여

GitHub에서는 기여자들의 활동 현황을 그래프로 볼 수 있는데요. 그래프 내용을 아래와 같이 정리해봤습니다. 현재까지 60명이 넘는 기여자들이 약 1,350번의 커밋을 통해 약 457,000줄을 추가하고 약 257,500줄을 삭제해주셨습니다. 숫자로 보니 다양한 사람들의 활발한 참여가 더욱 실감나네요.

기여자들이 어떤 부분에 기여해주셨는지 조금 더 자세하게 살펴볼까요?

  • Your contribution led Armeria’s annotated service to a whole new level.
  • Your Retrofit integration module was one of the greatest additions in Armeria’s history.
  • HTTP redirection is now easier than ever with Armeria thanks to your contribution.
  • Your work on implementing the high quality circuit breaker in Armeria is considered as an all-time legend.
  • Your optimization of weighted round-robin load balancing algorithm was very clever idea that it was worth of a prize.
  • We appreciate your initial groundwork, especially on the client-side, which made today’s Armeria.
  • Thank you for promoting Armeria to the developer communities and we appreciate your contribution to the project!
  • Your documentation clean-up made us look way better than ever.
  • Your help with fixing the bug made Armeria more stable than ever.
  • Although your part was small, your dedication saved many of our days.

이 외에도 많은 기여자들이 다양하게 참여해 주셨는데요. 기여자 각각에게 개별적으로 감사 메시지를 전달하였습니다.

수상 소감

프로젝트 기여도를 보여주는 그래프에 나타나듯 프로젝트 오너(owner)를 제외하고 가장 많이 기여해준 기여자는 @anuraaga 님입니다. 이번 행사를 진행하면서 @anuraaga 님에게 짧게나마 소감을 여쭤볼 수 있었습니다.

Q. 짧게 자기 소개 부탁드릴께요.

A. 안녕하세요. 다들 ‘Rag’라고 불러주시는 Anuraag입니다. 저는 여러 대규모 서버 사이드 프로젝트를 수행해 온 소프트웨어 엔지니어입니다. 처음 Armeria를 알게 된 건 LINE Shop 팀에서 근무할 때인데요. 정말 엄청난 우연이었습니다. 제가 팀에 합류한 뒤 기존 Thrift 라이브러리를 대체할 완전한 기능이 갖춰진(full-featured) RPC 프레임워크가 필요했거든요. 그런데 그때 마침 @trustin(Trustin, 프로젝트 오너)이 바로 그걸 목적으로 Armeria 프로젝트를 시작했더라고요. 그래서 그 이후로, 심지어 LINE을 떠난 후에도 저는 모든 프로젝트에서 Armeria를 사용하고 있으며 제가 기여할 수 있는 부분이 있다면 꾸준히 기여도 하고 있습니다.  

Q. Armeria를 어떻게 사용하고 계신가요?

A. 저는 업무에서나 개인적으로나 모든 서버 사이드 니즈(needs)에 Armeria를 사용합니다. 저희 회사 Infostellar는 위성 통신을 위한 글로벌 네트워크 인프라스트럭처를 구축하고 있는데요. 일반적인 API 요구사항을 만족해야 하는 것은 물론 아주 많은 양의 데이터도 전송해야 합니다. 저희 아키텍처는 표준 서비스 기반 아키텍처를 따르는데요. 많은 서버가 Kubernetes에서 실행되면서 Armeria를 사용해서 gRPC API를 열어 놓고 있습니다. 또한 Armeria의 정적 파일 서비스 기능과 gRPC-Web 지원을 통해 제공되는 웹 프론트엔드도 있습니다.

업무에서 뿐만 아니라 주말에 개인적으로 진행하는 프로젝트에서도 Armeria를 사용합니다. 제게 필요한 유스케이스에 따라 다양한 크기의 프로젝트에서 Armeria를 효과적으로 사용할 수 있어 기쁘네요. 🙂

Q. Armeria에서 가장 좋은 점을 꼽아본다면?

A. 제 생각에 Armeria의 가장 큰 장점은 개발자의 생산성에 초점을 맞췄다는 점입니다. Trustin은 모든 개발자의 요구 사항을 만족시킬 만한 프로젝트를 만들어냈습니다. Armeria는 굉장히 유연하고, 모범 사례를 보여주며, 개발자들이 ‘비동기(asynchronous) 프로그래밍’과 같은 최신 트렌드를 접하게 해줍니다. 저는 메인테이너가 굉장히 이론적인 접근을 취하는 프레임워크나 라이브러리를 봤는데요. 그런 식으로 운영하면 종종 개발자가 아니라 메인테이너가 원하는 방향으로 초점이 맞춰지면서 정작 개발자들은 사용하기 어려운 라이브러리가 되더군요. Armeria는 Slack 채널에서 완전한 지원을 제공하는 등 개발자의 요구에 초점을 잘 맞추고 있어서 다양한 스펙트럼의 개발자들에게 유용할 거라고 생각합니다.

또한 Armeria는 제가 본 프레임워크 중 가장 유연한 서버 프레임워크입니다. 동일한 TCP 포트로 gRPC, 정적 파일(static files), metricsDocService와 기타 컨텐츠를 모두 제공할 수 있다는 점은 정말 큰 성과라고 할 수 있습니다.

Q. Armeria 개발에 참여하면서 힘들었던 적이 있으신가요?

A. Armeria 개발하면서 특별히 힘들었던 적은 없습니다. Armeria는 문서화가 잘 되어 있고, IDE(통합 개발 환경, Integrated Development Environment) 설정도 따라하기 쉽게 되어 있으며, 상냥한 리뷰어들 덕분에 PR(Pull Request)도 원활히 진행됩니다. 아주 잠시지만 릴리스가 좀 느리게 진행되는 것 같다고 느낀 적은 있습니다. 버그수정(bugfix)이 머지(merge)는 되었는데 릴리스는 되지 않아서 버그수정이 포함된 스냅샷(snapshot)을 배포한 적이 있거든요. 하지만 최근에는 자주 릴리스되고 있어서 그런 기분을 느끼지 않고 있습니다. 🙂

사소한 것 하나 언급하자면, 제 생각엔 바꾸기 어려울 것 같은데요. 저는 import한 코드 설정을 사용하는데도 공백 포맷을 제대로 적용하는 데 어려움을 겪습니다. Trustin이 제가 놓친 몇몇 공백 이슈를 발견하고 나중에 다른 PR을 통해 수정하는 것을 지켜볼 때 특히 당혹스럽네요. 😉 자동 포맷터(formatter)를 사용하면 개발 중 걱정거리를 하나 줄일 수 있을 것 같습니다.

Q. 프로젝트와 관련해 앞으로 계획하고 있거나 기대하는 것이 있나요?

A. 저는 개인적으로 유용할 것 같은 기능을 발견하면 코드에 기여하는 등 계속 Armeria를 사용할 계획입니다. 사실 이건 좋은 질문이에요. 비록 저는 프로젝트에 대한 기대가 무엇인지 명확하게 알진 못하지만요. Armeria엔 기능 요청이 많이 들어옵니다. 그 중엔 종종 제한된 범위의 기술을 사용하는 요청도 있습니다. 지금 머리에 떠오르는 사례는 더 많은 service discovery 메커니즘을 위한 지원을 추가하는 건이네요. 또한 Spring Security를 기본적으로 지원할 지 여부도 있습니다. 저는 전 세계의 모든 기술을 지원하는 것이 Armeria의 범위는 아니라고 생각하는데요. 선을 어떻게 그어야 할지 모르겠습니다.

Q. 오픈소스(또는 오픈소스 기여에 대해) 하실 말씀이 있다면?

A. 저는 오픈소스가 너무 좋습니다! 제 생각에 오픈소스는 개발자들에게 유용한 기술을 만들어내기도 하면서, 또한 강력한 커뮤니티를 만들어주는 일도 하고 있습니다. 오픈소스를 통해 많은 친구들을 만나게 되어 정말 놀랍고 행복합니다. 저는 앞으로도 꾸준히 오픈소스 활동을 하며 더 많은 사람들을 만나게 되길 바라고 있고요. 주위에 시간 여유가 되시는 분들에겐 본인이 좋아하는 저장소에 PR 한번 보내보라고 독려할 거에요.

Q. 마지막으로 더 하고 싶은 이야기가 있으실까요?

A. 이런 이벤트가 열려서 정말 즐겁네요. LINE과 같은 선도 기업에서 오픈소스 확장에 중점을 두는 건 굉장한 일입니다. 기업들이 소스코드 몇 개 내놓는 것은 쉬울 수 있는데요. 이렇게 실제로 생태계 자체를 지원하는 건 절대 쉽지 않거든요. 오픈소스 커뮤니티를 구축하는데 도움을 주셔서 정말 고맙습니다.

마치며

저는 이번에 ‘Armeria contributor reward’를 진행하면서 이벤트를 처음 진행해 봤는데요. 여러가지 새로운 경험이 즐거운 기억으로 남았습니다. 이런 즐거운 경험이 오픈소스의 매력이 아닐까 싶습니다. 

Armeria에서 새로운 경험을 쌓아보고 싶으신가요? ‘good-first-issue‘를 한번 둘러보세요. 이미 Armeria에 익숙하신가요? 현재 1.0.0 버전 릴리스를 위해 필요한 것들을 정리하고 있는데요. 관련하여 이곳에서 아이디어를 공유해보세요.

Armeria에서는 더욱 많은 사용자와 기여자를 확보하기 위해 다양한 프로그램을 기획하고 있습니다. 앞으로 진행할 이벤트도 이번과 마찬가지로 이곳, LINE Engineering blog와 공식 Slack에서 소식을 전해드리겠습니다. 

Related Post