오픈소스 개발자 포럼 커뮤니티에서 오픈소스 참여 또는 개발에 관심 있는 개발자분들을 위해 행사를 개최하게 되었습니다.
다녀온 후 정리를 한다고 하였는 게 벌써 2주가 지나버렸네요...
못 오신 분들이나 오픈소스에 관심이 있으신 분들께 도움이 될 수 있도록 세미나 내용을 기록하였습니다.
누락된 부분이나 잘못 기록된 부분도 있을 수 있으니 양해 부탁드립니다.
이번 세미나의 연사님들과 간단한 발표내용입니다.
발표 내용은 다음과 같습니다.
- | - |
---|---|
권문범 | 오픈소스 보고, 응용하기 발표자소개 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단계)
- 오픈소스의 문서
- 문서를 통해 모르는 점을 발견하여 자신이 공부할 것들을 찾음
- 소스를 통한 구조 파악
- 소스 내 내부 구조와 원리 파악
- 오픈소스는 소스가 오픈되어 열람 가능
- 문서상에서 획득한 키워드를 활용하여 분석
- 스터디와 커뮤니티
- 혼자 공부하는 것에 한계가 존재
- 오픈소스 언어 분석 스터디가 존재함
- 언어 & 라이브러리 관련 커뮤니티를 활용하라
최영락 - 국제화/번역과 함께 하는 오픈소스에 대한 경험 및 노하우
- 공동작업을 위한 여러 가지 도구와 방법들이 존재
- MarkDown과 같은 번역만을 위한 문서 포맷들이 존재함(GNU gettext PO파일, )
- 다양한 번역 도구들(POEdit, Transifex, Pootle 등등)
- 번역 도구에 정답은 없다. 상황, 환경에 맞게 적합한 도구를 선택하여 사용하면 된다.
- 번역에 참여할 수 있는 프로젝트들이 존재
방진호/고병권 - 회사원에서 오픈소스 개발자로 거듭나기
두 분께서는 어떻게 커미터(committer)가 될 수 있는지 방법에 대해 많은 말씀을 해주셨음
- 오픈소스에 기여하고 싶으면 일단 열심히 사용해라.
- but... 사용해보니 버그가 잘 안 보임
- 무작정 코드를 들여다보기
- but 코드 읽기만으로는 지속적인 기여를 이어나가기 쉽지 않음.
- FIXME, TODO 검색하기
- but 초보자에게 쉽지 않은 어려운 문제들이 대부분이었음.
- 모든 Issue 들여다보기(이슈 트랙커)
- 시간순으로 정렬해놓고 찾아보기 이를 통해 지속적인 기여를 할 수 있었음.
- 상호운용성(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 등등..
소스상으로 찾을 수 없는 문제들이 발생한다.
- 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 |