본문 바로가기

개인생각/회고

2019 오픈소스 개발자 이야기 참석 후기

오픈소스 개발자 포럼 커뮤니티에서 오픈소스 참여 또는 개발에 관심 있는 개발자분들을 위해 행사를 개최하게 되었습니다.
다녀온 후 정리를 한다고 하였는 게 벌써 2주가 지나버렸네요...
못 오신 분들이나 오픈소스에 관심이 있으신 분들께 도움이 될 수 있도록 세미나 내용을 기록하였습니다.
누락된 부분이나 잘못 기록된 부분도 있을 수 있으니 양해 부탁드립니다.


이번 세미나의 연사님들과 간단한 발표내용입니다.

이번 세미나의 행사장인 한국 마이크로소프트 11층


발표 내용은 다음과 같습니다.

- -
권문범 오픈소스 보고, 응용하기

발표자소개
iOS 개발자
소속: Naver Corp. 네이버앱개발
전) 위메프모바일앱개발
전) 유엔젤모바일플랫폼개발
최영락 국제화/번역과 함꼐 하는 오픈소스에 대한 경험 및 노하우

발표자소개
Microsoft Korea Dev PMM
방진호/고병권 회사원에서 오픈소스 개발자로 거듭나기

발표자소개
방진호
Samsung Internet Developer
Chromium Owner
Chromium Committer
W3C Spec Editor
W3C Web Platform Tests Reviewer

고병권
Android Multimedia Developer
Chromium Member
KossLab Open Frontier
이경일 당신도 할 수 있는 오픈소스를 이용한 Application 완성도 높이기

발표자소개
(현) 네이버, CONOMI개발
(전) 네이버, 쇼핑데이터, BizOCR개발
(전) 카카오, 커머스 플랫폼 개발
(전) CJ오쇼핑, NHN i&s등등
권혁진 나는 어쩌다 오픈소스 프로젝트 멤버가 되었나?

발표자소개
Apache Software Foundation Commiter / PMC 멤버 (Apache Spark)
현 Databricks 개발자
전 Cloudera / Hortonworks 개발자
이희승/이서연 오픈소스 스프린트: 기획부터 실행까지

발표자소개
이희승
JVM 생태계에서 가장 인기있는 비동기 네트워크 프레임워크인 네티 프로젝트의 창시자, 라인플러스에서 Armeria와 Central Dogma와 같은 마이크로서비스 아키텍처 구현에 필요한 오픈 소스 소프트웨어를 개발중

이서연
라인플러스 오픈소스매니저

권문범 - 오픈소스 보고, 응용하기


  • 오픈소스를 사용만 하게 되면 스스로에게 제한을 거는 것이라 생각함
  • 스스로 발전하려면 어떻게, 왜 그렇게 만들어졌는지 고민해야 함
  • 맹목적 신봉보다 필요한 부분을 분석하고 비슷한 부분은 직접 만들어보기
  • 직접 주변의 많은 오픈소스를 분석해봐라(언어, os, 브라우저, 네트워크, 데이터베이스 라이브러리 등등 주변에 다양한 오픈소스가 존재함) 오픈소스 접근하기(3단계)
  1. 오픈소스의 문서
    1. 문서를 통해 모르는 점을 발견하여 자신이 공부할 것들을 찾음
  2. 소스를 통한 구조 파악
    1. 소스 내 내부 구조와 원리 파악
    2. 오픈소스는 소스가 오픈되어 열람 가능
    3. 문서상에서 획득한 키워드를 활용하여 분석
  3. 스터디와 커뮤니티
    1. 혼자 공부하는 것에 한계가 존재
    2. 오픈소스 언어 분석 스터디가 존재함
    3. 언어 & 라이브러리 관련 커뮤니티를 활용하라

최영락 - 국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우


  1. 공동작업을 위한 여러 가지 도구와 방법들이 존재
    1. MarkDown과 같은 번역만을 위한 문서 포맷들이 존재함(GNU gettext PO파일, )
    2. 다양한 번역 도구들(POEdit, Transifex, Pootle 등등)
    3. 번역 도구에 정답은 없다. 상황, 환경에 맞게 적합한 도구를 선택하여 사용하면 된다.
  2. 번역에 참여할 수 있는 프로젝트들이 존재

방진호/고병권 - 회사원에서 오픈소스 개발자로 거듭나기


두 분께서는 어떻게 커미터(committer)가 될 수 있는지 방법에 대해 많은 말씀을 해주셨음

  1. 오픈소스에 기여하고 싶으면 일단 열심히 사용해라.
    • but... 사용해보니 버그가 잘 안 보임
  2. 무작정 코드를 들여다보기
    • but 코드 읽기만으로는 지속적인 기여를 이어나가기 쉽지 않음.
  3. FIXME, TODO 검색하기
    • but 초보자에게 쉽지 않은 어려운 문제들이 대부분이었음.
  4. 모든 Issue 들여다보기(이슈 트랙커)
    • 시간순으로 정렬해놓고 찾아보기 이를 통해 지속적인 기여를 할 수 있었음.
  5. 상호운용성(Interoperability)
    • 다른 브라우저에는 있지만 크롬에만 없는 기능(미 구현된 항목들을 구현 도전)
  • 이슈 트랙터를 모두 보는 것보다 초심자를 위한 GoodFirstBug를 검색하면 비교적 쉬운 이슈를 해결할 수 있음.
  • 웹 플랫폼 테스트
  • 커뮤니티 노출 빈도가 높아지면 구현할 기능을 리뷰어가 직접 주기도 함.
  • 개발자로서 크게 성장할 수 있다.(코드 읽는 능력, 코드 리뷰 능력, 설계 및 구현 능력 등등)
  • 주의해야 할 점도 있다(오픈소스 만능주의, 신체건강 및 정신건강)
  • 오픈소스가 모두에게 정답은 아니지만 누군가에게 모범답안이 될 수 있다.

이경일 - 당신도 할 수 있는 오픈소스를 이용한 Application 완성도 높이기


강연 시작전 이경일님

애플리케이션에서의 완성도란 무엇일까?

여러 가지 측면에서 생각해볼 수 있다.

  • 기능 명세서대로 충실히 구현되었는가?
  • 주어진 기간, 정해진 예산으로 완성되었는가?
  • 고객의 기대를 만족하며, 이를 인지할 수 있는가?

    개발자 입장에서는?
  • 잠재된 버그는 있는가?
  • 응답속도는 빠른가?
  • 쉬운 확장이 가능한 구조인가?
  • 보안 이슈는 없는가?

    버그란?
  • 개발자가 의도하지 않은 결과가 나오는 현상
    • 데이터의 불일치
    • 오류로 인한 의도하지 않은 코드 동작
      버그를 잡자!
  • 오픈소스를 이용한 테스트 케이스 작성
    • junit: 블록단위로 명확하게 시나리오대로 코딩할 수 있음
    • Spock Framework: TDD가 아닌 BDD기반의 테스트 케이스 라이브러리(시나리오 기반)
      • 개발자가 아니어도 테스트 케이스 시나리오 이해가 가능하다.
      • Groovy로 작성하는 코드로 Java에 비해 간결하다
      • 구체적으로 테스트가 어떤 이유로 실패했는지 볼 수 있다.
    • 테스트 케이스 작성으로 품질이 올라간다.(but 개발자는 본인이 의도한 대로 테스트 케이스를 작성한다.)
  • 개밥 먹기(직접 유저가 되어 써보는 테스트)
    • 위에 말한 것처럼 개발자는 본인의 의도대로 테스트를 하기 때문에 사용자가 되어 진행하는 테스트도 중요하다.
  • 코드 리뷰
    • 초기 코드 리뷰의 90%는 컨벤션 이슈
    • 더 나은 로직을 제안받을 수 있다.
    • 잠재적 버그를 발견할 가능성이 있다.
    • but 코드 리뷰로 인해 상처를 받을 수 있다.(거부감을 보이는 개발자도 있으니 배려하자)
  • 잠수함 패치

APM(Application Performance Management)

Pinpoint, Scouter, Jenniper 등등..

  • 애플리케이션의 상태를 한눈에 볼 수 있다.
  • 실시간 응답속도를 볼 수 있다.
  • 요청에 관한 상세한 정보 확인이 가능하다.
  • 자세한 call stack을 볼 수 있다.

성능 테스트와 오픈소스

성능 테스트를 하기 위해 필요한 것은?

  • 운영환경과 동일한(비슷한) 사양의 서버
  • APM 환경설정
  • 부하를 발생시키는 매개체(Stress Test Tool)가 필요하다.
    • nGrinder, Jmeter, ab 등등..
      소스상으로 찾을 수 없는 문제들이 발생한다.
  • 아무런 로그 없이 FullGC 발생 후 Application 사망 -> OOM Killer 의심
  • 오픈 소스를 만들고 본인이 서비스하는 프로젝트에 직접 적용을 해보는 것은 정말 좋은 경험이 된다.
  • 오픈소스에 직접 기여할 수 있으면 좋겠지만 적재적소에 잘 쓰는 것도 Application의 완성도를 올릴 수 있는 중요한 포인트라고 생각한다

권혁진 - 나는 어쩌다 오픈소스 프로젝트 멤버가 되었나


개인적으로 가장 재미있었던 분이며 자신의 이야기를 풀어가며 강연을 해주셨음

유쾌한 화법을 자랑하시던 권혁진님

  • 나의 능력치는 평범 혹은 그 이하이다.
  • 로직 작성 10% 쉽게 다시 작성 40% 테스트 50%
  • 구글 해서 열어본 페이지 끝까지 정독하기
  • 프로젝트별 규칙 및 방법론 준수하기
  • 익숙해질 때까지, 코드 한 줄 한 줄을 구글, 일반적으로 받아들여지는 최선의 코드를 손에 익혀놓는다.
  • 오픈소스 활동은 영구적 자기소개서와 실력 증명서가 될 수 있다.
  • 강약 중강 약(오픈소스 활동이 업무시간 일부를 사용하거나 개인 시간에 기여를 하다 보니 늦은 시간까지 작업하게 되는 경우가 많아 건강을 해칠 수 있으니 쉬어가는 시간을 가질 필요가 있음)

이희승/이서연 - 오픈소스 스프린트: 기획부터 실행까지


이 두 분은 Line+에서 사내에서 진행하였던 Sprint의 경험을 준비과정부터 전 과정을 생생하게 전달해 주셨습니다.

  • sprint란?
  • 오픈소스 분야에서는 스프린트를 “같은 장소에 관심 있는 사람들이 모여 집중적으로 배우고 개발하여 프로젝트에 기여하는 모임” 정도로 생각하시면 될 것 같습니다.

후기

일정이 빠듯해서인지 중간에 쉬는 시간도 조금씩 있었지만 시간에 쫓기듯 발표를 진행하시는 분들도 계셔서 아쉬웠지만, 개인적으로 오픈소스에 대해 좀 더 알게 되고 다가갈 수 있게 된 것 같습니다.
이런 세미나에 참여하게 된 게 처음이었던 것 같은데 많은 분들이 오픈소스와 개발자로서의 역량을 위해 노력하시는 모습을 보고 분발해야겠다는 생각을 하게 되는 좋은 경험이었던 것 같습니다.
아직 기여하고싶은 오픈소스를 찾지 못했지만 자주 사용하고 있는 오픈소스에 기여할 수 있도록 해야겠습니다.
세미나를 준비해주신 OSS개발자포럼 운영진분들과 연사님들께 감사의 말씀을 드립니다.    

'개인생각 > 회고' 카테고리의 다른 글

코드숨 4주차 주간 회고  (0) 2021.02.21
코드숨 3주차 주간 회고  (0) 2021.02.07
코드숨 2주차 주간 회고  (0) 2021.01.31
코드숨 1주차 주간 회고  (0) 2021.01.24
알고리즘 공부시작  (0) 2019.04.25