Outsider's Dev Story

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

GitHub Universe 2018 참석기 #1

지난 10월 16~17일에 열린 GitHub Universe에 참가하고 왔다. GitHub Universe는 처음 열렸던 2015년에 참가하고 3년 만에 다시 가게 되었다. 사실 GitHub Universe를 가려던 것은 아니었고 다른 콘퍼런스를 가는데 바로 전주에 열리길래 같이 결제를 했다.

이런저런 목적으로 매년 가고 있기는 하지만 정말 샌프란시스코 숙소는 너무 비싸다. 작년에도 먼 곳에 숙소를 잡았다가 운 좋게 시내의 좋은 곳에서 지내긴 했지만 이번에 다시 예약하려니 너무 비싸서 가지 말까도 많이 고민했다. 전에도 이렇게까지 비쌌나 싶을 정도인데 샌프란시스코 시내에서 숙소의 질을 떠나서 개인실에 화장실, 샤워실 있는 곳을 잡으려면 못해서 하루에 30만 원은 줘야 하는 느낌이었다. 오클랜드가 샌프란시스코 서부 쪽으로 가면 좀 싸지긴 하지만 그것도 충분히 싸지려면 대중교통으로 30분 이상은 나가야 했다.

결국, 개인실은 포기하고 다인실을 구하려다가 유니온스퀘어 근처에서 캡슐 호텔을 발견했다. 밤늦게까지 컴퓨터를 하는 경우가 많아서 다인실이 좀 걱정이어서 차라리 캡슐 호텔이 낫겠다 싶었다. 실제로 12일가량 여기서 머물렀는데 만족스러웠다.(호텔 홍보는 아니다.) 일단 유니온스퀘어 바로 옆에 있어서 밤늦게도 위험하지 않고 시내에서 쉽게 왔다 갔다 할 수 있고 방에 들어오려면 카드키가 있어야 해서 어느 정도 보안도 유지되고 캡슐이 잠기는 건 아니지만 캡슐 안에 콘센트랑 작은 금고도 있고 방에 잠글 수 있는 락커랑 캐리어를 묶어둘 수 있는 자물쇠도 있어서 크게 걱정 안 하고 지낼 수 있었다.

워크숍

워크숍은 콘퍼런스 전날인 15일 오후에 열렸다. 처음 살 때는 콘퍼런스 티켓만 샀는데 콘퍼런스 날짜가 다가오니 워크숍 포함한 가격이 콘퍼런스 티켓만 사는 것과 같아져서 취소하고 다시 샀다.

github-universe-day1-01


워크숍은 샌프란시스코 시내에 있는 Contemporary Jewish Museum에서 열렸다. 이 앞은 많이 지나 가봤지만 들어가 보는 건 처음이다. 그리 큰 규모는 아니고 3개의 트랙이 있어서 트랙별로 세션이 진행되었다.

github-universe-day1-02


Probot 트랙을 듣다가(사실 Probot의 주요 커미터들이 GitHub 직원이라는 것도 이번에 알게 되었다.) 이미 Probot으로 앱을 몇 번 만들어 본 적이 있어서 중간부터는 오픈소스 쪽 세션을 들었다. 워크숍이라서 콘센트가 잘 갖춰서 있어서 맥북을 사용하면서 듣기가 좋기는 했다. 세션도 꽤 좋았는데 오픈소스 세션이라서 그런지 실습 위주는 아니라서 워크숍 느낌은 많이 나지 않았다. 후반부 세션은 다른 작업 하느라고 많이 집중하지는 못했는데 내가 들은 세션은 내용은 좋아 보이는데 영어가 너무 빨라서 힘들었다. ㅠㅠ

github-universe-day1-03


워크숍 참가자는 참가자 등록을 이날 먼저 하고 네임 태그도 다 받았다. 백은 저렇게 투명한 재질로 4가지 색이 있었는데 난 백은 별로 맘에 들진 않았다. 기본으로 주는 기념품을 별것이 없었다.

github-universe-day1-04


워크숍 참가자에게는 특별하게 금색 Mona Lisa Octocat 피규어를 줬다. 참가 전에 인스타그램으로 홍보를 해서 알고 있었는데 레어탬이라 특히 더 맘에 들었다.

Day 1

github-universe-day1-05


GitHub Universe는 금문교 앞에 있는Palace of Fine Arts Theatre에서 열렸다. 건물이 특이하게 생겨서 그 앞을 지나가면서 무슨 건물 인가 했는데 이번에 처음 들어가 봤다. 시내에서는 약간 멀어서 Uber를 타고 이동했다.

github-universe-day1-06


앞의 저 사진 말고 뒤에 넓은 건물이 있는데 실제 행사는 이 안에서 진행되었다. 밖에서 볼 때보다 생각보다 엄청 넓었다.

github-universe-day1-07






Opening keynote

키노트는 특이하게 원형 무대 위에서 진행이 되었다. 모니터가 3면으로 설치되어 있고 이 가운데서 키노트 발표자가 발표했다. 키노트 이후에는 3개의 모니터를 기준으로 커튼을 치고 3개의 트랙이 진행되는 방식이었다. 원형 무대에서 발표를 하니 발표자가 일정 주기로 돌면서 발표해야 해서 힘들겠다는 생각을 했다.

github-universe-day1-08


대부분의 키노트가 그렇듯이 지난 10년간의 GitHub을 자랑(?)하고(의외로 Microsoft 얘기는 거의 없었다) GitHub의 다양한 수치를 보여주었는데 이는 이번에 공개한 Octoverse에서 대부분 볼 수 있다. 그리고 Pull Request 리뷰어가 직접 코드를 제안하고 바로 적용할 수 있는 Suggested change를 공개하고 GitHub Enterprise에서 github.com까지 같이 검색하고 연동할 수 있는 GitHub Connect도 발표했다. 그리고 GitHub 서비스는 40,000개의 CPU와 5.4 Petabytes의 스토리지로 운영되고 있고 일간 피크타임에는 초당 100기가비트의 트래픽이 발생한다고 한다.

github-universe-day1-09


그래도 이번 GitHub Universe의 가장 큰 발표는 GitHub Actions였다. 키노트에서 처음 공개하고 아직 베타라 사이트에서 신청을 하고 승인되어야 사용할 수 있지만, 일부 세션과 키노트의 상당 부분을 Actions에 대한 홍보에 사용했다. GitHub 액션은 간단히 말하면 어떤 작업의 Workflow를 GitHub 내에서 사용할 수 있는 기능이다. 예를 들어 소스가 올라오면 AWS나 GCP에 배포한다거나 배포용 바이너리를 빌드한다거나 새로운 기여자가 오면 댓글을 남기는 등의 자동화 작업을 할 수 있다. 워크플로우는 HCL로 작성하는데 기본적으로 GitHub에서 GUI를 제공하고 있다.

이 기능은 꽤 놀라운데 느낌으로는 CI의 상당 기능을 커버할 수 있을 것으로 보여서 맘에 들면서도 사실 GitHub을 중심으로 한 생태계가 무너지는 것은 아닌지 걱정될 정도였다. 개발 콘퍼런스면서도 새로운 기능 소개와 발표가 많아서 아주 즐거운 키노트였다. 전체 영상은 아직 안 올라왔지만 키노트는 Youtube에서 볼 수 있다.

Connecting your software lifecycle with GitHub’s platform

이 세션은 GitHub Actions를 설명하는 세션이었다. 제목을 저렇게 지은 것은 키노트에서 공개하기 전에 Actions을 언급할 수는 없기 때문으로 보인다. .github/main.workflow파일에서 워크플로우를 정의하고 HashiCorp의 HCL로 정의할 수 있는데 GUI로 제공되기 때문에 실제 사용할 때 GUI를 많이 쓸지 코드로 직접 작업하게 될지는 잘 모르겠다. 더 자세한 설정을 보려면 actions 저장소를 참고하면 되고 현재 26가지 이벤트를 지원한다고 한다.

영어를 다 알아듣는 게 아니고 사용해본 기능이 아니라 애매하긴 한데 내부적으로 동작은 Docker로 돌아가는 것 같았다. 그래서 제공하지 않는 커스텀 기능은 Docker로 작성해서 워크플로우에 추가할 수 있는 것 같은데 정확하지는 않다. 이렇게 Docker로 할 수 있다면 대부분 기능은 가능하리라 생각하고 있다.

Infrastructure as product: Building GitHub's future

GitHub의 인프라스트럭처 팀 이야기였다. 인프라스트럭처 팀은 인프라스트럭처 팀만의 시각이 있고 장기목표에 집중하면서 그에 대한 책임을 져야 하므로 사내라고 하더라도 인프라스트럭처를 제품처럼 제공해서 사용자들이 충분히 이해할 수 있게 해야 한다는 맥락 정도를 이해했으나 영어를 알아듣기가 힘든 세션이었다. ㅠ

GitHub Learning Lab: Teaching robots to teach

github-universe-day1-10


GitHub에서 몇 달 전에 공개한 Learning Lab을 만든 과정을 설명했다. Learning Lab은 GitHub App을 만드는 프레임워크인 probot을 이용해서 만들었다고 한다. 이 Learning Lab 안내 메일은 받아봤지만 해보진 않았는데 Probot을 이용해서 인터렉티브하게 배울 수 있게 만들어져 있는 것 같다. Probot을 만든 사람이 GitHub 직원인데 이날 발표한 사람은 probot으로 Learning Lab을 만든 사람이고 디자이너 출신이라고 한다. 전날 워크숍이 이 사람이 진행했다. Learning Lab이 어떻게 동작하는지를 설명하고 보여주었는데 "중요한 부분은 일단 제대로 동작하게 만든 뒤 잊으라"라는 말이 인상적이었다.

From millions of OAuth tokens to GitHub Apps

GitHub이 서드파티가 사용할 수 있는 기존의 Service를 폐기하고 Apps로 옮겨갔기 때문에 이미 사용 중인 OAuth 토큰을 Apps로 마이그레이션 한 과정에 관한 얘기로 Code ClimateTravis CI가 번갈아 가면서 설명했다. 여러 가지 이슈가 있는데 GitHub 이벤트에는 인증 모델이 포함되어 있지 않고 Authorization은 앱이 설치된 저장소를 기반으로 하고 있어서 처음에는 OAuth App을 만들어서 대응했고 Travis CI는 아직도 OAuth 문제를 완전히 해결하지 못했는데 OAuth 사용자 토큰과 조직에 설치된 것 사이에서 어려움을 겪고 있다고 한다. Rate Limit 문제도 있는데 복잡한 GraphQL 쿼리의 경우 Rate Limit을 계산하기가 어려워서 GraphQL Rate Limit을 기록하는 메트릭을 추가해서 사용하고 있다고 한다.

GitHub Universe Party

저녁 파티는 Sentry와 Travis CI의 후원으로 진행되었다. 해외 콘퍼런스를 가면 꼭 이런 네트워킹 파티가 있는데 국내에는 없는 문화라서 항상 흥미롭긴 하다.

github-universe-day1-11


파티는 샌프란시스코 시내에서 진행되었는데 숙소에서 걸어갈 수 있는 거리라 좋았다. 지하에 있는 Pub이면서 옆에는 볼링장이 있었다. 이렇게 시끄러운 곳에서는 거의 대화를 할 수 없으므로 나는 조용히 앉아서 폰으로 놀면서 칵테일을 계속 주문해서 먹었다. ㅎㅎ

github-universe-day1-12


이 글은 GitHub Universe 2018 참석기 #2로 이어진다.

2018/11/06 02:43 2018/11/06 02:43

기술 뉴스 #113 : 18-11-01

웹개발 관련

  • Introducing Hooks : React v16.7.0-alpha에 아직 제안 상태인 Hooks라는 기능이 들어갔다. 상태를 가진 로직을 컴포넌트에서 재사용할 수 없고 컴포넌트가 과도하게 복잡해지는 문제를 해결하기 위한 기능으로 어떻게 사용하는지는 velopert님이 리액트의 새로운 기능, Hooks 알아보기에서 잘 정리해 주셨고 매일 React Hook을 올리겠다는 useHooks 사이트도 생겼다.(영어)
  • Making Sense of React Hooks : Redux를 만든 Dan Abramov가 쓴 React Hooks를 지지하는 글이다. 현재 React 컴포넌트가 커지고 로직이 반복되고 복잡한 패턴을 사용하게 된 문제를 해결하기 위해서 제안된 Hooks는 로직을 컴포넌트 간에 재사용할 수 있어서 컴포넌트 코드가 훨씬 간단해지고 Hooks를 활성화하는데 필요한 코드는 1.5kB 정도뿐이라고 한다.(영어)
  • [번역] 초보 프론트엔드 개발자들을 위한 Pub-Sub(Publish-Subscribe) 패턴 알아보기 : Why every beginner front-end developer should know publish-subscribe pattern?의 번역 글인데 영어는 길어서 못 읽었다가 이번에 읽게 되었다. 비동기 호출로 인해서 UI를 만들 때 복잡해지는 문제에 관해서 설명하고 이러한 부분을 Pub-Sub으로 어떻게 해결할 수 있는지를 간단한 예제 코드를 보면서 자세하게 설명하고 있다. 글은 길지만 재밌게 구성이 되어 있다.(한국어)
  • Introducing reCAPTCHA v3: the new way to stop bots : 웹사이트에서 bot을 걸러내기 위해 사용하는 구글의 reCAPTCHA의 새 버전이 나왔다. 새 버전에서는 사용자가 더 쉽게 사용할 수 있고 정확도도 높아졌다고 한다.(영어)
  • 3 JavaScript Performance Mistakes You Should Stop Doing : ECMAScript가 계속 발전하고 있지만, 루프, 배열 복사, 객체 순회 등 자주 쓰는 기능 위주로 구현 가능한 여러 함수의 성능을 비교해 준 글이다. 새로운 기능들을 많이 추천하고 있지만, 성능도 같이 좋은 것은 아니고 성능도 엔진의 발전에 따라 달라지므로 이런 글은 종종 확인해 보는 것이 좋다.(영어)
  • How Facebook 3D Photos Work : 페이스북이 최근에 추가한 3D 사진 기능을 어떻게 구현했는지 분석한 글이다. 개발자 도구로 내용을 분석하고 Three.js의 와이어 프레임 기능을 켜서 다른 우회 방법이 아니라 Three.js로 실제 3D를 구현한 것을 보여주고 있다.(영어)

그 밖의 프로그래밍 관련

  • Microservice Architecture at Medium : Medium에서 수년간 Node.js로 만든 모노리틱 서버를 운영하다가 마이크로서비스 아키텍처로 변경한 과정을 설명한 글이다. 먼저 Medium이 생각하는 마이크로서비스의 특징을 "단일 목적", "낮은 의존성", "높은 응집성"으로 정의하고 이 설계원칙에만 집중했다. 항상 무언가 바꿀 때 "왜 지금이어야 하는가?"를 물어보는데 현재 Node.js 서버가 성능 병목 지점이 되었고 개발 속도가 느려졌으므로 마이크로서비스로 바꾸기로 했다. 진행 과정은 "명확한 가치를 가지고 새로운 서비스를 만든다", "모노리틱 스토리지는 피한다", "서비스 개발과 서비스 운영은 분리한다", "일관되고 철저한 가시성", "모든 서비스를 처음부터 만들 필요는 없다", "장애는 항상 생기므로 중요하게 생각한다", "마이크로서비스 신드롬은 피한다"의 전략을 세우고 각 단계가 어떤 의미가 있고 어떻게 진행했는지 설명하고 있다.(영어)
  • October 21 post-incident analysis : 10월 21일 GitHub에서 24시간 11분 동안 발생한 장애에 대해서 사후 분석을 통해 원인과 진행 과정을 정리한 글이다. US East와 US West 데이터 센터 사이에 정기작업을 하던 중 43초간 네트워크 단절이 발생했는데 이때 각 데이터센터가 RAFT 알고리즘으로 Primary 서버를 새로 뽑으면서 두 데이터센터 간 데이터가 달라지면서 네트워크 복구가 이뤄진 이후에도 장애로 이어졌다. 시간이 지나면서 두 데이터베이스 간에 데이터 격차가 벌어졌고 백업에서 전체 복구를 한 뒤에 백로그로 데이터를 맞추기로 했지만 실제로 전체 클러스터를 백업에서 다시 올리는 작업을 해본 적은 없고, 작업하면서 미국/유럽의 근무시간이 시작되면서 작업 시간은 더 늦어졌다. GitHub이 이렇게 긴 장애를 일으킨 건 처음이라서 궁금했는데 원인과 시간별 분석 내용 및 진행상태가 자세히 적혀있어서 흥미롭다.(영어)
  • 자바의 새로운 도약: OpenJDK(Feat. 자바 라이센스) : 오라클에서 발표한 Java의 새 라이센스 정책으로 얘기가 많은데 최근 OpenJDK를 중심으로 달라지고 있는 상황과 OracleJDK의 라이센스관련 내용을 정리한 글인데 여러 문서를 참고해서 자세히 정리되어 있다.(한국어)
  • 신규 포인트 시스템 전환기 #1 - 개발 단계, #2 - 오픈 준비 단계 : 우아한 형제들에서 레거시 포인트 시스템을 새로 개선하면서 진행한 과정을 정리한 글이다. 포인트 시스템의 구조 개선뿐 아니라 배포에 관한 기술 선택, 디비와 큐의 선택, 테스트 및 개발환경, 문서화, 성능 테스트 및 오픈 준비 등 시스템 하나를 오픈하는 전체 과정이 다 나와 있다.(한국어)
  • 깃을 위한 flight rules : Git을 사용하다가 문제가 발생했을 때 해결 방법을 정리해 놓은 문서다. 커밋메시지를 잘못 쓰거나 리베이스를 잘못했을 경우 등 문제 상황에 대한 해결책이 나와 있다.(한국어)
  • HashiCorp Learn : HashiCorp에서 자사의 제품을 따라 해 보면서 배울 수 있는 교육사이트를 공개했다. 현재는 Vault만 제공되고 Terraform, Consul, Nomad도 곧 제공할 예정이라고 한다.(영어)

블록체인 관련

볼만한 링크

  • école 42 탐방기 : 코드스쿼드에서 SW 혁신학교인 에콜42 프랑스와 샌프란시스코를 모두 방문하고 에콜 42가 어떤 시설을 가지고 있고 어떻게 가르치고 있는지를 정리한 글이다. 나도 최근에 에콜 42에 대해 알게 되었고 같이 일하는 동료가 EPITECH 출신이라서 궁금한 게 많았는데 사진과 함께 자세히 나와 있어서 재미있게 읽었다.(한국어)
  • The State of the Octoverse : GitHub에서 사용자들의 활동을 분석한 자료를 웹사이트로 만들어서 보고했다. Octoverse를 보면 GitHub 사용자들의 국가 추이, 언어별 인기도, 주요 프로젝트 등 다양한 내용이 나와 있다.(영어)

IT 업계 뉴스

프로젝트

버전 업데이트

2018/11/01 23:29 2018/11/01 23:29