Outsider's Dev Story

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

기술 뉴스 #117 : 19-01-01

웹개발 관련

  • Next.js (SSR) vs. Create React App (CSR) : 서버 측 렌더링과 클라이언트 측 렌더링을 비교하려고 Create React App(CRA)와 Next.js를 실행해 보고 크롬 개발자 도구로 렌더링 속도의 차이가 어느 정도 나오는지 비교한 글이다. 예상 가능한 범위이기는 하지만 직접 테스트 하려면 시간이 많이 드는데 이 글을 통해서 각 렌더링 방식에 따라 렌더링의 어떤 차이가 나오는지 알 수 있고 결론적으로 고민해야 할 부분과 CRA, Next.js의 차이점도 잘 설명해 주고 있다.(영어)
  • Beyond console.log() : 디버깅 목적으로 console.log()를 사용할 때 더 편하게 이용할 수 있는 console.dir, console.table, console.assert 등을 설명하는 글이다. 종종 이런 글이 올라오긴 하는데 사용방법을 이해하기 쉽게 설명하고 있고 손에 익기 전에는 또 금방 잊어버리게 되어서 기억해 두었다가 필요할 때 적용해보기 좋다.(영어)
  • 프론트엔드 기술 조감도 : Babel : Babel 사용법 자체보다는 Babel이 어떤 개념과 구조를 가지고 동작하는지를 설명하는 글이다. 구문 분석 -> 변환 -> 출력의 단계에서 각 플러그인이 역할을 하고 이를 쉽게 사용하기 위해서 프리셋이라는 개념으로 플러그인을 모아놓은 구조를 설명하고 있어서 Babel을 잘 모를 때 전체 구조를 이해하기 좋다.(한국어)
  • 크롬 개발자 도구 101 : 크롬 개발자 도구의 탭별 기능과 주요 사용방법을 설명한 글로 크롬 개발자의 많은 기능을 사용해보지 않았다면 전체적으로 각 기능을 이해하기 좋다.(한국어)
  • Easier GraphQL wrappers for your REST API’s : apollo-datasource-rest로 기존 REST API를 GraphQL로 감싸서 제공하는 방법을 설명하는 글이다.(영어)
  • Why I no longer use D3.js : D3.js가 2011년에 나왔을 때는 좋았지만, React 등 VirtualDOM과 컴포넌트가 주류가 된 지금은 새로운 개념을 배워야 하고 관리하기도 쉽지 않을뿐더러 SVG가 Canvas나 HTML보다 안 좋을 때도 많아서 굳이 쓰지 않아도 된다고 설명하는 글이다.(영어)
  • FramerX 스터디 연재 : FramerX 스터디를 하면서 TypeScript와 React로 인한 진입장벽을 느껴서 FramerX의 사용법을 설명하는 연재글 이다.(한국어)

그 밖의 프로그래밍 관련

  • Netflix OSS and Spring Boot — Coming Full Circle : Netflix는 수년간 내부 솔루션을 직접 개발해서 운영하고 있었지만 이번에 Spring Boot에 기반을 둔 Spring 제품군으로 갈아탄다고 한다. 그동안 내부 솔루션을 만들고 갈아탄 이유는 당시에는 요구사항에 맞는 솔루션이 없었지만, 지금의 Spring 제품군은 Netflix 내부의 솔루션보다 더 발전했고 Pivotal과 협업한 결과 충분히 도입해서 개선할 수 있다고 판단했기 때문이라고 한다.(영어)
  • Siri를 통해 AWS 이번달 청구금액 알아보기 튜토리얼 : iOS에 새로 추가된 단축어 앱을 통해서 AWS 금액을 조회하는 Lambda를 만들고 시리를 통해서 현재 요금을 조회해 보도록 설정하는 글이다.(한국어)
  • kubernetes를 이용한 서비스 무중단 배포 : Kubernets로 서비스를 운영할 때 Kakao 사내에서 무중단 배포에 대해 질문을 많이 받은 것을 바탕으로 무중단 배포 시 서비스 유실이 없도록 SIGTERM를 애플리케이션이 처리했을 때의 차이를 보여주고 무중단 배포를 위한 k8s 설정을 설명하고 있다.(한국어)
  • AWS NAT Gateway에서 NAT instance로 전환하기 : VPC에서 서브넷을 프라이빗과 퍼블릭으로 분리해서 사용하는 경우 프라이빗에서 외부 인터넷을 사용할 때 NAT Gateway를 이용하게 되는데 개인 목적으로 사용할 때 이 가격은 부담되는 가격이다. NAT Gateway가 있기 전에 EC2 인스턴스를 NAT으로 사용하던 방식대로 Bastion 서버를 NAT 인스턴스로 사용하도록 Terraform으로 구성하는 방법을 설명하고 있다.(한국어)
  • 프레임워크 공부를 멈춰라 : 유행을 타는 프레임워크를 익히기보다는 유행을 타지 않는 디자인 패턴 등의 지식을 익히는데 시간을 투자하라는 내용의 글이다. 물론 나는 이런 공부가 기반부터 공부하고 프레임워크를 사용하는 bottom-up 방식이나 프레임워크를 공부하고 사용하면서 기반을 공부하는 top-down 방식 둘 다 가능하다고 생각하지만, 기반 지식을 익혀야 한다는 데는 동의한다.(한국어)
  • Slack 프락시 서버 – slackboard 소개 : Slack에서 Hook으로 알림 등을 받을 때 프락시 서버로 이용할 수 있는 slackboard를 소개하는 글이다. slackboard를 사용하면 API 리밋에 맞게 QPS도 해주고 TOML 설정으로 태그에 따라 원하는 채널로 메시지가 가도록 설정할 수도 있다.(한국어)
  • 효과적인 코드 리뷰를 위해서 : LINE 대만에서 코드 리뷰 프로세스를 개선했던 경험을 정리한 글이다. 효과적인 코드 리뷰를 위해서 "변화를 작게 유지"하고 "리뷰는 자주 짧은 세션으로 진행"하고 "최대한 빨리 PR을 보내고" "충분한 정보를 제공"하고 "코드 분석 툴을 활용"하라고 하고 있다. 이렇게 했을 때의 효과와 LINE에서 진행했던 부분을 같이 설명해 주고 있어서 이해하기 좋다.(한국어)
  • 루비 2.6 릴리즈 및 주요 문법 변경 사항 소개 : 매년 크리스마스에 릴리스하는 Ruby 2.6에서 추가된 기능을 정리한 글이다.(한국어)
  • re:Invent 2018 - AWS 람다, 함수 간 공유 가능한 레이어 기능 지원 : Lambda에서 함수 간 파일을 공유할 수 있는 레이어 기능을 설명하는 글이다. Lambda 패키지를 압축해서 50MB까지 올릴 수 있으므로 Headless Chrome 등 용량이 크고 압축이 많이 안 되는 파일을 사용하기 어려웠는데 레이어 기능을 사용하면 이 부분을 쉽게 해결할 수 있다.(한국어)
  • Better NPM'ing, Tips and Tricks using NPM : NPM을 사용할 때 의존성 범위가 깨지지 않게 --save-exact 옵션을 사용하거나 npm ci를 사용하는 등 도움이 될 만한 팁이 정리되어 있어서 npm을 자주 사용하면 한번 읽어보면 좋다.(영어)

블록체인 관련

  • Crypto 101 : 암호화에 관해 배울 수 있는 무료 ebooK을 배포하고 있다.(영어)

볼만한 링크

  • 체대 출신 개발자의 2018년 회고 : 체육전공을 하고 다른 일을 하다가 올해부터 개발자로 일하기 시작했다는 분의 2018년 회고 글인데 개발자가 되려고 어떤 노력을 했고 어떤 과정을 거쳐왔는지가 잘 나와 있다. 글도 잘 쓰시고 올해 하신 일들도 대단하지만 매 순간 고민하신 내용을 보면 금세 실력이 느실 것 같아서 자극되는 글이다.(한국어)
  • 기술 업계의 독성 말투 문제, 고칩시다! : 개발자가 흔히 겪는 커뮤니케이션 문제를 지적한 글로 Tech has a Toxic Tone Problem — Let’s Fix It!의 번역 글이다. "거들먹거리는 말투", "기계적 말투", "비관적 말투"로 정리해서 문제점을 지적하고 "평화적인 대안"까지 얘기하고 있다. 나쁜 의도가 아니더라도 개발자가 많이 가진 속마음이나 의도를 잘 정리한 것 같아서 전부 다 동의하진 않지만, 꽤 날카롭게 속마음을 들킨 느낌이라서 재미있게 읽었다. 말투 등에 조심할 필요가 있을 듯하다.(한국어)
  • 파워 유저 커브(스마일 커브) : Andreessen Horowitz가 소개한 파워 유저 커브 즉, 한 달에 일자별로 방문한 사람들을 그래프로 그리면 양쪽 끝이 올라가는 스마일 모양이 나오는 커브를 설명하면서 당근마켓의 지역별 데이터로 파워 유저 커브가 어떻게 나오는지 보여주고 있다. 충성 유저를 측정하는 파워 유저 커브는 처음 들어봐서 이런 그래프가 나온다는 게 흥미롭다.(한국어)
  • [번역] UI 디자인에서 컬러를 사용하는 방법 : How to use colors in UI Design의 번역 글로 디자인을 할 때 컬러 어떻게 선택해야 하는지를 설명하고 있다. 대표 색상이 지역별로 주는 느낌과 순수한 회색을 사용하지 않는 등 몇 가지 팁을 알려주면서 색상 선택이 도움이 되는 도구를 추천해 주는데 색상 선택을 가장 어려워하는 개발자라 혹시 도움이 될까 봐 찬찬히 읽어보았다.(한국어)
  • 프리랜서 가이드라인 : OKKY에서 회원들이 연재했던 프리랜서에게 필요한 정보에 대한 칼럼을 모아서 이북으로 출간했다.(한국어)
  • 스프링러너(SpringRunner)를 소개합니다. : 박용권 님과 김지헌 님이 스프링을 배울 수 있는 트레이닝 팀을 만들었다.(한국어)

IT 업계 뉴스

프로젝트

  • Dark Patterns : 사용자가 원치 않는 구매, 가입 버튼 등을 누르게 하거나 탈퇴를 숨기거나 하는 등 좋지 않은 패턴을 모아놓은 사이트.
  • JSON Generator : 몇 가지 편의 문법을 사용해서 복잡한 랜덤 JSON 데이터를 만들 수 있는 도구.
  • AssemblyScript : TypeScript를 WebAssembly로 컴파일해주는 도구.
  • DevHub : TweetDeck처럼 칼럼 방식 UI로 GitHub의 알림과 액티비티를 볼 수 있는 웹/iOS 애플리케이션.
  • Geek's Diary : TIL(Today I Learned) 문서를 Markdown으로 적을 수 있는 Electron 앱.
  • Notable : Electron으로 만든 Markdown 기반 노트 앱.

버전 업데이트

2019/01/01 22:11 2019/01/01 22:11

2018년 회고

또 한해가 빠르게 지나갔다.

Work

작년 말에 백수가 되어 2달 정도 쉬다가 올 초에 새로운 회사에 이직을 했다. 나한테는 여러 의미로 도전적인 일이었는데 어느 정도는 만족하고 어느 정도는 만족하지 못하고 있다. 중반에는 "나 여기서 뭐 하고 있나?" 하는 생각도 했지만, 선택을 후회하는 정도는 아니고 굳이 정하자면 만족도가 좀 더 높다고 할 수 있다.

일단 얘기는 많이 나오는데 정체를 알기 어려웠던 Blockchain에 대해서 어느 정도는 알게 되었다. 현재 회사를 선택한 이유 중의 하나가 "그래서 블록체인이 뭐고 어떻다는 거야?""밖에서 다른 일 하면서는 파악하지 못할 것 같아서"였는데 깊은 수준으로 이해한 것은 아니지만 대충 어떤 흐름인지 그동안 많은 블록체인 관련 글에서 왜 그런 주장 혹은 논쟁을 했는지는 이해할 수 있게 되었다. 사실 Golang도 공부하고 블록체인 구현에 대해서 더 깊게 들어가 보고 싶었지만 (이런저런 핑계로) 그러지는 못했다. 해야지 하면서 계속 안 하고 있는 모습을 보면서 그 정도까지 관심이 있거나 재미를 느끼지는 못하는 건가 하는 생각도 들었다.

그리고 인프라를 제대로 배워보려고 SRE라는 포지션으로 왔지만 사실상 제대로 못 했고 아마 내년에도 상당 기간은 제대로 못 해볼 것 같다. 어느 정도 관여는 하고 있지만 작은 조직 특성상 여러 일을 하다 보니 서비스 개발 쪽에 시간을 많이 써야 해서 인프라는 같이 일하시는 분이 다 하고 있다. 그래도 해오던 일이라 서비스 쪽 개발이 편하고 할 것도 많기는 한데 원래 세운 목표가 있으니 빨리 채용하고 인프라 쪽에 더 많은 시간을 써야겠다. 의도치 않게 제품의 진입점이 되는 클라이언트를 개발하다 보니 회사 내 여러 부서와 커뮤니케이션을 계속해야 해서 사회성이 너무 증가했다.(이제 다시 조용히 지내야지.)

기술적인 도전을 많이 해보고 배우는 게 목표였는데 별로 그러지 못했다. 한편으로는 밥값 해보려고 내가 익숙한 영역으로 자꾸 도망갔나 하는 생각도 든다. 수년간 별로 성장하지 못하고 하던 일의 관성으로만 일해오는 느낌이 있어서 스킬업을 좀 해보려고 했는데 올해도 그러지 못했다. 개발팀에 개발 잘하는 사람이 많아서 배우기 좋은 기회이므로 내년에는 안 해보던 영역도 해보면서 많이 배워야겠다. 초반에 깊게 빠져들지 못하고 원래 재밌어하던 부분만 다시 보게 되는 것 같아서 의식적으로 노력을 더 해야겠다.(그러고 보니 블록체인 관련 사이드 프로젝트도 계속 얘기만 하다가 안 했구나...)

OpenSource

GitHub 컨트리뷰션 그래프

회사 프로젝트도 오픈소스로 진행하다 보니 내 개인 작업과 섞여서 그래프가 좀 애매하다. 올 초 백수 때 나태해지지 않으려고 일일 커밋을 시작했다가 지난번과 비슷하게 잔디 심는 일에 집착하게 되는 것 같아서 다시 그만두었다. 일일 커밋은 너무 코딩을 못할 때 의지를 다지는 규칙 정도로만 써먹는 게 딱 좋은 것 같다.

오픈소스에서는 올 초에 mocha의 코어멤버로 합류하면서 mocha 프로젝트에 가장 많은 신경을 썼다. 글로벌 오픈프론티어 지원도 받고 있어서 나름으로 열심히 했다.

mocha 커밋 내역

합류할 때 35위였는데 그래도 11위까지 올라왔다. PR을 많이 올리긴 했는데 mocha의 코드 베이스가 꽤 크고 역사가 길어서 주로 자잘한 수정 위주로 했고 이마저도 처음에는 다 파악하지 못한 채 수정해서 다른 버그를 또 만들기도 했다. 기존 코어 팀 멤버들이 있으므로 이들이 코어 수정에 더 신경 쓸 수 있도록 주로 이슈에 댓글을 달거나 리뷰에 의견을 다는 일에 집중하면서 코드를 조금씩 파악했다. 내년에는 좀 더 핵심적인 코드나 기능을 기여해볼 생각이다. mocha 활동 얘기는 언제 또 정리할 기회가 있겠지만 큰 프로젝트의 코어 팀으로 활동하는 건 사이드 프로젝트에 올라온 PR을 관리하거나 다른 프로젝트에 참여하는 것과는 아주 다른 차원의 작업이었다. 영어 때문에 힘들기도 하지만 많이 배우고 있다.

mocha 외에는 nodejs-ko에서 계속 번역 작업을 하고 있고 prism.js, debug, Terraform에도 기여를 약간 했다.

개인 프로젝트로 Terraform 레지스트리인 Citizen를 만들었는데 아주 소수가 관심을 가지는 것으로 만족하고 있고 Terraform 레시피를 모아두려고 Terraform Recipes에 정리하다가 만들었는데 이건 저번에 seapy님 얘기대로 좀 서비스로 개선하는 방법을 생각해 봐야겠다. probot을 공부해 볼 생각으로 review-reminder도 작업을 했는데 만들다가 말았다.

하반기에는 바빠서 사이드 프로젝트를 할 생각은 못 한 것 같다. 요즘 아이디어가 별로 없는데 내년에는 사이드 프로젝트와 오픈소스 기여도 더 많이 해야겠다.

Study & Book

책은 총 10권을 읽었다. 책을 거의 못 봤다고 생각했는데 그래도 좀 읽기는 했다. 놀고 있던 전반기에 책을 많이 읽고 후반기에는 거의 책을 보지 못했는데 지금 읽고 있는 책도 빨리 봐야겠다.

발표는 총 4번 했는데 오픈소스 생태계 일원으로서의 개발자를 주제로 3번이나 발표해서 효율이 나온 발표였다.

스터디는 Kubernetes 스터디에 참여했고 후반기에는 Ethereum 스터디에 참여했는데 뒤로 가면서 Ethereum 스터디는 별로 참가하지 못했다. 여러 가지 공부는 계속했지만 다양하게 훑어만 보고 깊게 보진 못한 느낌이다.

Blog

블로그에는 이 글을 포함해서 올해 80개의 글을 작성했다. 올해는 연초에 글도 많이 쓰고 해서 100개 목표했는데 역시 80개에서 멈췄다. 그래도 최근 4년 사이에 글을 제일 많이 작성했다.

월별 블로그 글 수

GA 기분으로 올해 가장 많이 읽힌 글은 다 예전에 쓴 글이다. 너무 오래된 글은 내용이 부실(?)해서 좀 부담되는데 이런 간단한 내용이 찾는 사람은 더 많은 것 같다. 사실 이제 Stackoverflow를 찾아서 발견할 수 있는 간단한 내용은 잘 안 쓰긴 한다.

아랫글은 올해 적은 글 중에 페이지뷰가 가장 많은 10개의 글이다. 의외로 Go 관련 글을 사람들이 꽤 많이 보고 있고 [번역] Microsoft Edge와 Chromium 오픈소스: 우리의 의도는 쓴지 얼마 되지도 않았는데 벌써 많이 읽혔다.

GA 기준 2017년과 2018년의 수치 비교

올해 수치를 작년과 비교해 보면 매년 수치는 조금씩 늘고 있다. 이번에 블로그도 좀 더 빠르게 마이그레이션 했으니 내년 수치가 궁금하긴 하다.

이전에 일하던 사람들과 TV플루토라는 Youtube 방송도 시작했는데 후반기에는 거의 방송을 하지 못했다. 일이 바빠진 이유도 있지만, 블로그와 콘텐츠의 내용이 겹치지 않고 지속해서 할 수 있는 콘텐츠를 찾지 못했기 때문이다. 뭔가 설명하는 건 블로그에서 이미 하고 있어서 방송에서 다르게 설명하는 법을 찾거나 해야 하는데 아직 잘 모르겠다. 지속해서 하는 방법으로 내가 하는 코딩을 그냥 방송으로 하면 좋겠다 싶어서 몇 번 진행했는데 막상 방송하면 편하게 코딩하면서 방송하는 게 아니라 막히면 당황스럽고 코딩하고 생각하면서 말하기도 어렵고 해서 결국은 방송 내용을 준비하고 방송하게 되면서 안 하게 된 것 같다. 아직 아이디어는 없는데 내년에도 좋은 콘텐츠를 고민해 보려고 한다.

한해 블로그를 방문해 주셔서 감사합니다.

2018/12/31 19:46 2018/12/31 19:46