[2018. 2] 제 2회 NAVER OpenSource Seminar

제 2회 NAVER OpenSource Seminar

지난 2월 23일에 정자동 NAVER 본사에서 열린 제 2회 NAVER OpenSource Seminar에 참석했다. 이전까지는 밋업에 다녀와서 후기라기 보다는 개인 정리용으로 포스팅을 했었는데, 오늘은 정리를 포함하여 후기까지 적어볼까 한다. 이번 세미나는 대학생과 초급 개발자를 대상으로 개최되었고, 이 이야기들을 대학교 저학년 때 들었다면 얼마나 좋았을까라는 생각과 지금이라도 듣게 되어서 다행이라는 생각을 동시에 하며 열심히 경청했다.

우선, 정자동에 있는 NAVER 본사는 우리 집에서 대중교통 기준으로 30분이면 갈 수 있는 가까운 곳이라 그 동안 갔었던 다른 밋업들보다 더 편하고 빠르게 갈 수 있어서 좋았다. 집과 가까운 덕분에 금방 도착할 수 있었던 NAVER의 세미나 장소인 2층 커넥트 홀 입구에서 네이버 오픈소스 스티커(billboard.js, egjs 등)과 각종 간식을 받았고, 개인적으로 커넥트홀을 포함한 네이버 본사는 건물 내부가 깔끔하고 세련돼서 잠깐 있는 것만으로도 좋았다.

1. 개발자의 흔한 취미 : 오픈소스 개발 - 선데이토즈 권민재님

첫 번째 세션은 선데이토즈 권민재님께서 맡아주셨는데 발표를 듣고 나서 오픈소스 개발이 대단한 것이 아니구나라는 것을 깨닫게 되었다. 가장 인상깊었던 것은 흔히 우리는 <오픈소스 개발>이라고 하면 대부분 소스코드 참여하는 것이라고 생각하는데, 소스코드 참여는 오픈소스 개발의 일부분이라는 것이다. 아래는 세션 내용을 정리한 것이다.

1) 오픈소스에 기여하는 방법

  • 오픈소스 참여라는 것이 거창한 것이 아니다.
  • 아주 간단한 오타 수정으로도 오픈소스 참여가 가능하다.
  • 라이브러리나 툴을 사용하다가 원하는 기능이 없거나 문제가 있을 때 직접 해결해서 PR(Pull Request)을 날려보자.
  • 소스코드 참여만이 오픈소스 참여가 아니다.
  • 이슈 보고 및 해결이 오픈소스 참여의 가장 큰 장점이라고 생각한다.
  • 내가 직접 해결하지 않아도 다른 사람들과 같이 이슈에 대해서 해결하면 된다.
  • 완벽한 소프트웨어는 없기 떄문에 퀄리티 유지에 있어서 중요하다.
  • 소스코드를 직접 넣지 않더라도 이슈를 리포팅하는 것 또한 굉장히 중요한 기여다.
  • 이미 보고된 이슈에 대해 코멘트를 달아서 해결책을 제시할 수 있다.(간접적 기여)
  • 번역 : 소스코드가 아닌 문서화에 대한 오픈소스 기여라고 볼 수 있다.
  • 좋은 문서의 내용을 한국어로 번역하여 오픈소스 기여할 수 있다. (단, 문서 번역의 규칙을 숙지하고 이미 진행 중인지에 대한 여부도 확인해야 한다.)

2) 요약

  • 기능/추가 개선 : PR(Pull Request) 보내기.
  • 이슈보고 및 해결 : 발견된 버그나 이슈를 프로젝트에 알리기.
  • 번역 : 문서 번역
  • 직접 운영 : 프로젝트 및 커뮤니티를 직접 운영


2. egjs-view360 개발기(오픈소스화로 기술부채 청산한 이야기) - NAVER 김희재님

두 번째 세션은 NAVER FE플랫폼 김희재님께서 맡아주셨는데, 김희재님께서 egjs-view360이라는 오픈소스를 개발하는 과정에서 기술부채가 왜 발생했고 프로젝트에 어떤 영향을 주었으며 오픈소스화로 어떻게 문제상황을 벗어날 수 있었는지에 대해 발표해주셨다.

그 동안 오픈소스로 공개하면 뭐가 좋은지, 오픈소스로 공개할 때 어떤 것을 고려하면 좋은지에 대해 궁금했기 때문에 정말 많은 것을 얻어갈 수 있었던 세션이었다.

본격적인 발표에 들어가기에 앞서 NAVER FE플랫폼에 대해서도 간단하게 소개해주셨는데, FE플랫폼에서는 네이버 FE 기술 지원을 조직하고, 사내 서비스들을 위한 WEB UI 라이브러리를 개발한다고 한다. 또한 경쟁력 있는 컴포넌트는 오픈소스로 공개하는데 예를 들어, egjs, billboard.js, jindo.js가 있다. 아래는 세션 내용을 정리한 것이다.

1) egjs 요구사항

  • 네이티브 WEBGL로 직접 구현
  • 안드로이드 등 모바일 브라우저 호환성 확보
  • 디바이스 모션 컨트롤

2) 기술부채

  • 빠르지만 지저분한 방식으로 일하면 기술부채로 압박받게 된다.
  • 기술부채를 지고 빠른 출시를 할 수 있지만 기술부채를 청산하지 않으면 이자가 계속 커진다.
  • 이자 : 유지보수와 가능 추가를 위해 드는 비용

3) view360에서의 초기 기술부채

  • 테스트코드가 없었다. 하나를 고치면 어디서 부작용이 생길지 알 수가 없어서 기능 추가를 하기가 힘들어졌다.
  • 공감할 수 없는 구조 설계. 남이 공감할 수 업슨 구조라면 미래의 나도 이해할 수 없다. “여기 왜 이렇게 짰지” 코드만 봐도 구조 설계가 납득될 수 있도록 구조를 잘 짜야 한다.
  • 군더더기가 많은 API. 어떤 기능까지 필요하게 될 지 예측하면서 개발
  • 문서화, 설계 문서

4) 처음부터 다시 둘이서 만들기

  • 새로운 시니어 멤버와 다시 만들기 시작했다.
  • WEBGL과 센서신호처리관련 이론을 공부하며 출발선을 맞추고 구조설계를 함께 진행 했다.
  • 오픈소스화 기준에 맞춰 부채청산을 시작했다.

5) 구글의 사례 : 텐서플로

  • 기술을 오픈소스화하면 외부에 공개되기 때문에 문서 작성이나 작업을 체계화하는데 많은 노력을 들인다. 이런 과정에서 팀 전체가 일주일 동안 문서화 작업에 집중한다.

6) 이슈/커밋메세지/문서는 영어로 작성

  • 지나가던 개발자는 웬만하면 영어를 쓴다.
  • 작성하다보면 익숙해진다.
  • 비슷해진 표현을 스택오버플로우나 다른 깃허브 프로젝트 이슈에서 찾아보면서 응용하면 더 쉽다.

7) 커밋메세지 잘 쓰기

  • 이 코드는 왜 이렇지?를 해결한다.
  • 정해진 포멧을 준수하자.

8) Pull Request 단위 줄이기

  • 리뷰를 의미있게 하기 위한 조건
  • 되도록이면 1이슈 1PR이 좋다고 본다.

9) 테스트의 중요성

  • 기능 추가 전후 두려움이 줄어든다.
  • PR을 받을 수 있는 최소한의 준비다.
  • 테스트 없는 오픈소스의 경우 PR을 넣어도 외부 PR을 잘 안받는 경우가 있다.

10) 테스트 작성

  • 구조와 API 설계가 어느정도 안정되고 나서 테스트 작성을 시작한다.
  • 테스트 작성이 힘들면 테스트 가능성 높아지도록 리팩토링
  • WebGL 렌더링 테스트 방법 적용
  • 디바이스 모션은 테스트 헬퍼 구현

11) PR 단계에서 CI 활용

  • CI 지속적 통합
  • PR을 날렸을 때 해당 코드 품질 체크
  • 빌드가 되어야 함
  • 코드컨벤션이 맞아야 함
  • 단위 테스트를 모두 통과해야 함
  • 테스트 커버리지가 감소하지 않아야 함

12) 소개 페이지

  • 프론트엔드의 경우 소개페이지를 꼭 만들어야 한다.

13) 오픈소스화 과정을 통해 얻은 점

  • 포지셔닝 작업을 통해 존재 이유가 생김
  • 라이브러리 품질이 올라감
  • 품질이 떨어질 수 있는 여지를 최대한 줄여놓아서 외부 개바자 참여를 받기 용이함

14) 오픈소스화 과정을 통해 느낀점

  • 타인을 고려하면 할수록 가치가 더해지는 소셜코딩의 힘
  • 나, 미래의 나, 같이 일하는 동료 개발자, 타부서의 개발자/기획자, 사외 개발자/기획자, 내 오픈소스를 이용해 다른 것을 개발하는 개발자, 경쟁 오픈소스의 개발자, 스택오버플로우에서 나와 같은 문제로 질문을 올린 개발자에게 좋다.


3. 오픈소스 생태계 일원으로서의 개발자 - 변정훈 aka Outsider님

마지막 세션은 변정훈 aka Outsider님께서 맡아주셨는데, 우리가 오픈소스를 이용하는 것이 아니라, 오픈소스 안에 우리가 있다는 것을 강조해주셨다. 아래는 세션 내용을 정리한 것이다.

1) 개발자는 회사에 속해있고 회사는 오픈소스에 속해있다.

  • 오픈 소스가 없는 개발은 상상하기 어렵다.
  • 우리는 모두 오픈소스 안에 있고 개발자라면 오픈소스 생태계가 더 잘 돌아가도록 만들 책임이 있다.
  • 개발을 하면서 많은 오픈소스를 사용한다.
  • 오픈소스는 개발 시간을 단축시켜준다.
  • 우리가 오픈소스의 도움을 받은 만큼 다시 오픈소스에 기여해야 한다.


4. 마무리

이번 네이버 오픈소스 세미나에 참석한 후, 아직 대학생인데도 이미 오픈소스 참여를 활발히 하고 있고, 열정이 넘치는 학생들이 많구나라는 걸 느꼈다. 그리고 세션 발표도 정말 좋은 내용이었지만, 개인적으로 Q&A 시간 때 정말 많은 도움이 된 것 같다. 앞으로 어떤식으로 취업 준비를 해나가야 할지 방향성이 잡힌 것 같다. 너무나 좋은 시간이었고, 또 다음 3회 네이버 세미나에도 참석하고 싶다.

Share