Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

JSConf Korea에서 발표한 "Lessons from maintaining Mocha, an open source project" 발표자료

작년에 mocha 메인테이너에 합류해서 기여하면서 그 이전에 혼자서 만들던 사이드 프로젝트의 오픈소스 개발 경험과는 달라기에 정리해서 한번 공유를 하면 좋겠다는 생각하고 있었다. 그래서 기여하면서 틈틈이 생각나는 것들을 적어놓기는 했지만 오픈소스 개발이 회사 프로젝트처럼 특정 기간에 목표를 두고 진행하는 게 아니다 보니 내용은 다양하게 흩어지고 하나의 이야기로 이어지지 않았다. 그래도 한번은 공유하면 좋겠다고 막연히 생각하고 있었다.

그러다가 올해 초 JSConf Korea가 처음으로 열린다는 것을 알게 되고 mocha에 참여한 경험을 공유하기에 좋은 자리라는 생각이 들어서 신청했는데 다행히도 선정되었다. JavaScript를 좋아하다 보니 JSConf도 한번 참여해 보고 싶었지만 그럴 기회가 없었다. JSConf는 아무래도 JSConf EU를 가야 한다고 생각하다 보니 못 간 것 같은데 JSConf EU도 올해가 마지막이라는 소식을 들어서 안타까웠다. 대신 NodeConfNode Interactive North America만 참여했었다.

어쨌든 JSConf Korea가 올해 처음으로 열리게 되어 참여도 하고 발표도 했다.



정돈 안되어 있던 여러 가지 내용을 정리해서 발표하는 데는 시간이 좀 걸렸지만, 자꾸 다듬다 보니 어느 정도는 정리가 된 것 같다. 작년 3월에 1년 활동하면서 새로 알게 된 내용을 공유하고자 했고 얘기하는 맥락은 다르지만 큰 범주에서는 작년에 발표한 오픈소스 생태계 일원으로서의 개발자와 비슷하기도 하다. 그래도 사례를 위주로 메인테이너이기 때문에 보이던 내용이나 메인테이너들이 어떤 활동을 하고 시간을 얼마나 쓰고 있는지에 대해서 공유하고자 했다.

발표자료에는 자세한 내용보다는 큰 맥락만 적는 편이라서 자막 버전을 만들어야 하는데 만들려고 하다고 보니 너무 많은 자막을 적어야 해서 그냥 올린다. 나중에 기회가 되면 비슷한 내용을 글로 한번 더 적을지도 모르겠다. 발표 시간이 25분인데 말하고자 하는 내용이 좀 많아서 말을 빠르게 한 것 같아서 좀 신경이 쓰였지만, 영어로도 어느 정도 통역이 된 것 같아서 좀 안심했다.

발표 신청할 때는 개인으로 신청한 거였지만 지금 다니는 ODK Media가 후원사로 참여해서 발표 이후에는 부스에 있느라고(밖으로 많이 돌아다녔지만...) 다른 세션은 거의 듣지 못했다. 후원 부스 준비도 꽤 힘들긴 했는데 걱정하던 이력서 첨삭과 모의 면접이 성황리에 진행되어서 후원 부스로의 경험이 좋았다. 사실 줄 서서 기다릴 정도로 많은 분이 관심 가질 줄은 몰랐는데 앞으로 후원 부스도 비슷하게 하지 않을까 싶다.

발표자는 에프터 파티도 초대장이 나와서 참가를 했는데 좀 뻘쭘해서 조용히 밥 먹고 가려고 했는데(맥주가 없어서 그런 건 아니었다) 슬슬 가야지 생각하고 있을 때 Yosuke FURUKAWA가 다가와서 발표 잘 들었다고 아는 체를 했는데 이름을 보는 순간 누군지 알 수 있었다. 설마 했는데 트위터 계정을 보여주어서 Node.js collaborator로 활동해서 GitHub에서도 많이 본(트위터도 팔로우하고 있었지만..) Yosuke라는 걸 알 수 있었다. Yosuke는 나를 play.node 오거나이저로 알고 있긴 했지만... 둘이 오픈소스 얘기를 좀 나누고 있다가 다른 분들도 오셔서 같이 JSConf 얘기를 하다가 저쪽에 Chee Aun이 있다는 걸 알게 되었다. Chee Aun은 싱가포르에 사는 유명한 JS 개발자라서 오랫동안 트위터에서 팔로우하고 있었다.

행사 때도 외국인이 좀 있다는 건 알고 있었지만 사실 (온라인에서) 알 사람이 올 거라고는 전혀 생각하지 못했다. 그러고 보니 Mozilla에서도 오고(이건 알고 있었지만) JSConf.asia 오거나이저도 와 있었다. 일찍 알았거나 날짜가 이틀이었으면 더 재미나게 놀았을 터라는 생각이 들었다. 전에 스카리님이 다른 나라 PyCon을 가게 된 게 그 친구들이 PyCon Korea에 놀러 와서 다음번에는 놀러 가다 보니 여기저기 다니게 되었다고 했었는데 (그땐 잘 이해 못했지만) 이런 느낌인 건가 싶었다. JSConf라는 이름만으로도 이렇게 유대감 가지고 모일 수 있다고 하는 생각이 들었다. Yosuke가 JSConf JP 오거나이저라서 연말에 갔다 올까 하는 생각이 들었다.

2019/09/05 03:57 2019/09/05 03:57

기술 뉴스 #133 : 19-09-02

웹개발 관련

  • Google Is Tightening Its Grip on Your Website : Google이 AMP를 통해서 웹사이트의 통제권을 강화하고 있다고 비판하는 글이다. AMP의 장점이 있고 AMP를 쓰면 구글이 검색에서 이점을 제공하므로 실제로 꽤 많은 트래픽을 얻을 수 있기 때문에 퍼블리셔 입장에서는 AMP를 단순히 선택사항이라고 말하기 어려운 부분이다. 실제로 실수로 AMP가 깨졌을 때 트래픽이 엄청나게 떨어졌다고 한다. 구글은 계속 AMP는 좋은 기술이라고 얘기하지만 "구글이 정말 신경 쓴다면 HTML의 특수한 형식 때문이 아니라 속도만으로 페이지의 순위를 정해야 한다.(If Google genuinely cared, it would rank pages based on speed alone, not whether they use some special format of HTML.)"는 부분에 동의한다. 비슷한 글을 종종 공유하는데 Google이 AMP를 통해 웹을 독점하려고 한다고 생각해서 자꾸 비슷한 내용을 공유하게 된다.(영어)
  • GraphQL is not just a network protocol : GraphQL을 단순히 RESTful API를 대체하는 방식이 아니라 프론트엔드의 상태관리까지 해주는 GraphQL의 관점을 설명하는 글이다. SDL로 스키마를 정의하고 이를 더 쉽게 사용하기 위해서 리졸버를 구현하는 과정을 설명하면서 이 리졸버를 서버뿐 아니라 클라이언트에서도 실행하는 Apollo Client를 설명하고 있다. 보통 API가 데이터베이스를 다루는 서버의 관점과 프론트엔드의 글로벌 상태관리의 관점이 어긋나는 부분을 해결하기 위해 GraphQL이 API부터 프론트엔드의 상태관리까지 한꺼번에 관리해서 신경 쓰지 않도록 하고 있다고 한다. GraphQL을 자세히 보고 있지 않았는데 이런 부분까지 확장하고 있는 점이 흥미롭다.(한국어)
  • Building a more private web : 프라이버시 침해를 걱정할 정도로 웹사이트들이 사용자 정보를 가져갈 수 있는 시대에서 Google이 더 프라이버시가 보호되는 Privacy Sandbox를 제안했다. 사용자가 제어하지 못하는 핑거프린팅 같은 기법을 차단해서 사용자 정보를 보호하면서도 광고는 여전히 타게팅해서 할 수 있도록 하기 위해 만들었으며 여러 브라우저 간에 표준으로 만들기 위해 제안으로 올리고 사용자의 피드백을 기다리고 있다. 상세 요약은 Potential uses for the Privacy Sandbox에 나와 있다.(영어)
  • 안티 패턴으로서의 CSS background-image 속성 : CSS background-image는 SEO와 접근성에도 좋지 않고 성능도 좋지 않아서 정말 배경으로 쓸 때만 사용하고 <picture>를 사용하라고 설명하는 글이다. <picture> 태그로 cover 효과를 낼 수 있고 srcset 속성을 사용하면 스크린 사이즈 별로 다른 이미지를 사용할 수 있고 브라우저가 지원하면 지연 로딩도 할 수 있다고 한다. 몇 년 전에 <picture>sreset은 못 써서 background-image를 사용할 수밖에 없는데 SEO가 되지 않아서 고민했던 기억이 나서 더 공감되었다.(한국어)
  • GitHub supports Web Authentication (WebAuthn) for security keys : GitHub이 WebAuthn을 사용해서 시큐리티 키를 등록할 수 있도록 지원하기 시작했다. WebAuthn을 사용하면 기기에서 사용할 수 있는 Touch ID 등을 통해서 지문 등을 2차 보안키로 등록해서 사용할 수 있다.(영어)

그 밖의 개발 관련

  • Unit Test (단위 테스트) 에 관한 생각 : 조직에 유닛 테스트를 도입하는 과정을 설명하는 글이다. 유닛 테스트의 장점을 먼저 설명하고 테스트를 작성하도록 할 때 보통 겪게 되는 레거시 코드의 문제나 테스트로 인해 작업 시간이 증가하는 문제 등을 어떻게 해결하는 좋을지 설명하고 있다. 이후 실제로 도입할 수 있도록 초기의 속도 저하를 감수하고 테스트의 작성 원칙 등을 정하면 좋고 이렇게 작성한 유닛 테스트가 지속하도록 코드를 계속 리팩토링하면서 자동화를 도입하는 것을 권장하고 있다.(한국어)
  • Flutter, 왜 선택하지 못했나 : Line에서 Pay 앱을 따로 만들기로 하면서 Flutter를 검토했다가 결국 사용하지 못하고 네이티브 개발을 하게된 과정을 설명한 글이다. Flutter는 1.0이지만 아직 다른 플러그인은 0.x 버전으로 완성도가 부족한 플러그인이 많았고 필요한 관련 개발 정보를 많이 얻기도 힘들었다고 한다. 결국 Pay 앱에서는 Flutter의 장점을 얻을 수 없다고 판단해서 안 쓰기로 했다고 한다.(한국어)
  • The GitHub Student Developer Pack is back : 학생들에게 GitHub Pro 기능과 5천만 원 상당의 유료 서비스를 무료로 제공하는 GitHub Student Developer Pack에 20개의 새로운 파트너가 추가되어 더 강력해졌다. 회사에서도 많이 쓰는 상당수의 유료 서비스가 포함되어 있고 개발에 필요한 대부분 영역의 도구가 포함되어 있어서 개발 공부에 상당히 도움이 될 것 같다.(영어)
  • Redis 버그 – Dataset 사이즈가 200GB가 넘어가면 죽는다구요? : 얼마 전 Coupang 장애의 원인으로 알려진 Redis 버그가 어떤 내용인지 정리한 글이다. 아이템이 21억 개가 넘어가게 되면 int의 범위를 초과해서 발생하는 문제로 Redis 4.0.8부터는 해결이 되었다고 한다.(한국어)
  • Introducing Cloud Run Button: Click-to-deploy your git repos to Google Cloud : GCP의 서버리스 서비스인 Cloud Run에 바로 배포할 수 있는 버튼을 공개했다. 이런 버튼은 보통 GitHub의 README 등에 연결해 놓고 사용자들이 바로 배포할 수 있게 하는 용도로 쓰인다.(영어)

인프라 관련

  • Boosting your kubectl productivity : Kubernetes의 CLI인 kubectl의 편리한 팁을 정리한 글이다. 초반에는 Kubernetes와 kubectl이 어떻게 동작하는지 설명하고 이후 자동완성, 출력 시 커스텀 칼럼 지정, 컨텍스트와 네임스페이스를 쉽게 변경하는 플러그인, 플러그인을 직접 만드는 방법 등이 설명되어 있다.(영어)
  • Kubernetes Failure Stories : Kubernetes에서 실패한 이야기를 모아놓은 사이트다.(영어)
  • CNCF Archives the rkt Project : CNCF에서 CoreOS가 만든 컨테이너 엔진인 rkt를 아카이빙하기로 결정했다.(영어)
  • AWS 도쿄 리전 운영장애 복구…냉각장치 오작동이 원인 : 지난 24일 AWS 도쿄리전에서 6시간 동안 발생했던 장애는 냉각장치의 오작동 때문에 발생했다고 한다.(한국어)

볼만한 링크

  • I Visited 47 Sites. Hundreds of Trackers Followed Me. : 웹사이트를 방문할 때 얼마나 많은 정보가 추적되고 있는지 정리한 기획 기사이다. 온종일 검색과 뉴스 사이트들을 돌아다니면서 각 사이트에서 Facebook, Google, Amazon 등에 얼마나 정보가 추적되고 있고 사이트 간에 공유되는지를 시각화해서 잘 보여주고 있다. 개인 식별 코드와 핑거프린트, 위도/경도 등이 모두 추적되고 있는 것을 알 수 있다.(영어)
  • Twitter CEO Jack Dorsey’s account was hacked : Twitter의 CEO인 Jack Dorsey의 계정이 Chuckle Squad라는 그룹에 해킹당해서 문제의 소지가 있는 트윗이 여러 차례 올라왔고 트위터의 조치로 곧 삭제되었다. 이후 트위터에 따르면 트위터 자체가 뚫린 것은 아니고 계정에 폰을 연결해서 폰으로 문자를 보내서 트윗을 올리는 기능이 있는데 통신사 쪽 보안이 뚫리면서 잭의 계정으로 트윗을 올릴 수 있게 되었다고 한다.(영어)
  • WEWORK S-1 요약 정리 : WeWork이 상장을 위해 제출한 S-1 문서의 내용을 분석한 글이다. 직접 S-1 문서를 보고 이해하기는 힘든데 비슷한 공용오피스 패스트파이브와 비교하면서 WeWork의 수익 구조와 성장, 비용지출 비중 등이 정리되어 있어서 대략적인 구조를 이해할 수 있다.(한국어)

IT 업계 뉴스

프로젝트

  • Element : Vue 2.0 기반 컴포넌트 라이브러리.
  • Chart.xkcd : xkcd 스타일로 차트를 그려주는 라이브러리.
  • Memento : HTTP 요청을 캐시했다가 반복할 수 있게 해주는 개발용 도구.
  • npkill : node_moudles 폴더를 찾아서 용량을 확인하고 쉽게 삭제 할 수 있는 도구.

버전 업데이트

2019/09/02 01:59 2019/09/02 01:59