Outsider's Dev Story

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

기술 뉴스 #134 : 19-09-15

웹개발 관련

  • CSRF is (really) dead : CSRF(Cross-Site Request Forgery) 공격을 막으려고 폼에 임의의 랜덤 토큰을 사용하는 CSRF를 대신 SameSite 쿠키를 사용하면 된다는 글이다. 쿠키에 SameSite=Lax를 지정하면 브라우저가 CSRF 공격을 차단해 주기 때문에 서버에서 CSRF 설정을 할 필요가 없는데 Chrome 78부터는 이 값이 기본이 된다. SameSite에 대해서는 Cross-Site Request Forgery is dead!에 더 자세히 나와 있는데 SameSite=Strict로 지정하면 새로 여는 탭이나 링크를 따라갈 때도 브라우저가 모든 쿠키를 보내지 않아서 안전한 대신 로그인 등이 풀리는 문제가 있고 SameSite=Lax로 지정하면 GET, HEAD, OPTIONS, TRACE 같은 안전한 HTTP 메소드에서만 쿠키를 보내기 때문에 위험한 POST에서의 CSRF 공격을 막을 수 있다.(영어)
  • Babel, Mocha, Karma and Webpack with coverage in order : JavaScript 환경에서 번들링하는 Webpack과 트랜스파일하는 Babel에 테스트 프레임워크인 mocha와 이를 브라우저에서 실행하는 Karma의 각 역할과 연동하는 방법을 설명하는 글이다. 이를 다 조합해서 Istanbul로 커버리지를 측정하는 방법까지 설명하고 있다. JavaScript 환경이 특히 많은 도구로 처음 사용할 때 어려움을 겪는 경우가 많은데 각 도구의 목적과 연동 방법이 잘 설명된 글이다.(한국어)
  • How to learn D3.js : D3.js를 모듈별로 나누어서 어떻게 사용하는지 설명하는 글이다. 각 모듈의 크기를 시각적으로 보여주면서 중요한 부분부터 사용하는 방법을 차근차근 알려주어서 이해하기 좋다.(영어)
  • Google feedback on TypeScript 3.5 : Google에서 TypeScript로 작성된 코드를 3.5로 올리면서 겪은 문제를 정리한 이슈다. 기존에도 버전을 올릴 때 약간의 작업이 필요하다는 것을 알고 있었지만, 제너릭의 암묵적인 기본값, filter(Boolean), Set에서 특히 어려움이 있었기 때문에 차후 TypeScript 작업에 참고해 달라며 상세한 피드백을 올렸다.(영어)
  • Caniuse and MDN compatibility data collaboration : MDN의 브라우저 호환성 데이터와 Can I use의 데이터를 합쳐서 보여주기로 했다. Can I use는 10년 이상 되었고 MDN에서는 2년 전부터 브라우저 호환성 데이터를 모으기로 해서 10,000개 이상의 데이터 포인트를 가지게 되었지만 이제 둘의 데이터를 합쳐서 Can I Use에서 만개 이상의 데이터로 호환성 정보를 보여줄 수 있게 되었다.(영어)

그 밖의 개발 관련

  • 코드 리뷰 개발자 가이드 : Google에서 공개한 Code Review Developer Guide를 번역한 문서이다. 개발 조직내에서 코드리뷰를 어떻게 진행하는 게 좋고 리뷰할 때는 어떤 부분을 중점적으로 보고 리뷰의 속도는 왜 중요한지, 리뷰할 때 예의를 지키려면 어떻게 하는지 등 실용적인 얘기가 많아서 찬찬히 읽어보면 좋다.(한국어)
  • 병아리 개발자의 걸음마 한 발짝 (feat. 파일럿 프로젝트) : 우아한 형제들에 신입으로 들어가서 파일럿 프로젝트를 진행하면서 주 차별로 피드백 받은 내용을 정리한 글이다. 기능을 구현한 뒤에 리뷰를 받고 뭐가 문제였고 어떻게 수정했는지도 잘 나와 있고 팀의 다른 분들에게 피드백을 받으면서 하나씩 알아가는 과정이 잘 나와 있어서 재미있는 글이다.(한국어)
  • Running GitHub on Rails 6.0 : GitHub에서 Rails 6.0이 나오고 1.5주 만에 GitHub 내의 모든 트래픽이 Rails 6.0의 코드가 받도록 프로덕션 배포하면서 사용자에게 영향은 전혀 없었다고 한다. 6.0에서는 100개의 Pull Request를 올렸을 정도로 Rails 개발에 적극적으로 참여하고 있었고 기존 Rails 5.2 코드에서 작업하면서 6.0을 기다리는 것이 아니라 최신 Rails 코드를 매번 가져와서 5.2와 최신 코드 모두에서 빌드해서 문제를 미리 발견하고 기여할 수 있었다고 한다.(영어)
  • Announcing the Curl Cookbook : curl의 사용법을 다룬 쿡북으로 POST 요청, 쿠키 설정, UA 변경 등을 다루고 있다.(영어)
  • GitHub Pages builds now use the Checks API : GitHub에서 정적 페이지를 운영할 수 있는 Pages 기능이 Checks API를 사용하도록 개선되었다. 덕분에 이전에는 오류가 났을 때 오류가 난 이유를 찾기가 어려웠지만, 이제는 왜 오류가 났는지 상세 내용을 확인할 수 있게 되었다.(영어)

인프라 관련

  • Announcing Maesh, a Lightweight and Simpler Service Mesh Made by the Traefik Team : Traefik 팀에서 Kubernetes 클러스터에서 사용할 수 있는 서비스 메쉬인 Maesh를 공개했다. Traefik 위에 만들어져서 Traefik의 기능을 모두 쓸 수 있고 비침투적이라 설정한 팟에만 연결할 수 있고 HTTP/TCP 두 가지 모두를 사용할 수 있다.(영어)
  • Helm 3: Fun With the New Beta : 베타버전이 나온 Helm 3에서 어떤 부분이 달라졌는지 설명하는 글이다. 일단 서버 역할을 하던 Tiller가 사라지고 정보를 네임스페이스의 Secret에 저장해서 설치나 사용이 훨씬 간단해졌고 Lua 템플릿 대신 Go 템플릿이 사용할 예정이고 나중에 하위 호환성을 위해서 Lua 템플릿도 지원할 예정이지만 3.0에서는 Lua 템플릿을 지원하지 않을 예정이다.(영어)

볼만한 링크

  • DevOps didn’t exist when I started as a developer: How this one principle changed my career : 1994년부터 개발자로 일한 자신의 경험을 바탕으로 DevOps가 무엇인지 설명하는 글이다. 아주 과거에는 릴리스 프로세스가 아주 느렸고 Agile이 도입되면서 릴리스 프로세스가 빨라지기 시작했지만, 개발팀과 운영팀의 이해 차이로 문제가 되기 시작했고 이 간극을 줄이기 위해서 노력해온 결과 두 팀이 서로 간의 프로세스를 공유하면서 이를 해결해 나갔다고 하고 있다. 나중에 DevOps라는 말을 알게 되었지만, 이 과정이 DevOps라고 생각하고 CI/CD, 직책, 자동화가 DevOps가 아니라 개념이나 마인드셋, 컬쳐, 공유 등이 DevOps라고 설명하고 있다.(영어)
  • 영국 정부의 디지털 서비스 설계 10대 원칙 : 영국 정부의 디지털 서비스 설계 원칙인데 스타트업에서 참고해도 좋을 만큼 원칙이 잘 정리되어 있는 데다가 한국 정부 디지털 서비스의 품질은 아주 안 좋기 때문에 더욱 크게 와닿는다. "사용자에게 필요한 것에서 시작하라", "정부만 할 수 있는 것에 집중하라", "다양한 사용자를 감안하여 설계하라" 등 핵심 원칙과 그에 대한 설명이 요약되어 있다.(한국어)
  • 2019 kakaomobility Report : 카카오모빌리티에서 서비스 사용 데이터를 분석한 리포트를 발행했다. 이 데이터에는 음주단속 강화로 인한 오전 시간대 대리기사의 호출 증가, T 바이크로 평균 2km 정도를 이동, 다양화된 택시 서비스의 증가, 제주도의 인기 방문지 분석 등의 내용이 담겨있다. 전문이 담긴 PDF를 154페이지 분량이다.(한국어)

IT 업계 뉴스

프로젝트

  • Can I email : Can I use처럼 이메일 클라이언트가 지원하는 HTML, CSS 속성 등을 검색할 수 있는 서비스.
  • Leon Sans : 동적으로 폰트의 웨이트를 바꿀 수 있고 애니메이션을 추가할 수 있는 폰트.
  • Recursive Mono & Sans : 코딩과 UI에 맞춰져서 나온 폰트.
  • Kuma : Kong에서 만든 Envoy에 기반을 둔 서비스 메쉬.

버전 업데이트

2019/09/15 23:49 2019/09/15 23:49

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