Outsider's Dev Story

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

기술 뉴스 #127 : 19-06-01

웹개발 관련

  • W3C AND WHATWG TO WORK TOGETHER TO ADVANCE THE OPEN WEB PLATFORM : 웹 표준을 만드는 W3C와 벤더사들이 중심이 된 WHATWG가 단일 버전의 HTML과 DOM 명세를 협력해서 개발하기로 합의했다.(영어)
  • 18F Accessibility Guide : 미 정부의 디지털 서비스 에이전시인 18F에서 공개한 웹 접근성 가이드이다. 접근성에 이용할 수 있는 도구와 체크리스트부터 이미지, 폼, 페이지 타이틀 등 접근성을 높이기 위해 참고해야 할 내용이 잘 정리되어 있다.(영어)
  • Introducing the first Microsoft Edge preview builds for macOS : 작년 12월에 발표했던 대로 Chromium 기반의 Microsoft Edge 브라우저의 macOS용 카나리 버전이 공개되었다. 새로운 Edge의 카나리 버전은 macOS와 Windows 10에서 설치해서 사용해 볼 수 있다.(영어)
  • WebAssembly at eBay: A Real-World Use Case : eBay에서 바코드 스캐너를 WebAssembly로 만들어서 테스트한 과정을 설명한 글이다. 바코드 스캐너는 중요한 기능이지만 웹에서는 성능이 나오지 않아서 제공을 못 하다가 WebAssembly로 구현해서 성능은 50배 이상 빨라졌지만 인식률이 높지 않아서 ZBar라는 라이브러리를 같이 사용하는 방식으로 접근해서 테스트했다고 한다.(영어)
  • 구글 애널리틱스 A/B 테스트 쉽게 하기(쿠키 + dimension 활용) : 구글 애널리틱스에서 A/B 테스트 제공하고 있지만, 성격이 다른 동적 데이터를 보여줄 때는 불편해서 demension과 쿠키를 조합해서 A/B 진행한 방법을 설명하는 글이다. 간단히 얘기하면 구글 애널리틱스에서 dimension을 추가하고 이 값을 ga set으로 쿠키 설정한 다음에 서버에서 쿠키를 보고 페이지를 바꿔서 보여주는 방식이다. 간단하면서도 흥미로운 방법이다.(한국어)

그 밖의 프로그래밍 관련

  • Introducing Terraform Cloud Remote State Management : Terraform Cloud에서 제공하던 원격 상태 관리 기능을 작년 가을 무료로 공개하기로 한 뒤 이번에 공식적으로 모두가 이용할 수 있게 공개되었다. Terraform으로 협업하려면 원격 상태 관리를 위해 S3 등을 이용하는데 대신 Terraform Cloud를 이용할 수 있다.(영어)
  • Kubernetes Learning Path : Microsoft에서 만든 50일간 Kubernetes를 학습할 수 있도록 안내하는 PDF 문서이다. 날짜별로 어떤 자료를 보고 공부하면 좋은지가 정리되어 있어서 따라 하면서 공부하기 좋다.(영어)
  • 쿠버네티스 시작하기 - Kubernetes란 무엇인가? : 쿠버네티스를 설명하는 4편의 시리즈 글 중 첫 번째 글로 쿠버네티스의 개념부터 쿠버네티스의 각 구성 요소가 어떤 역할을 하고 동작하는 방식을 설명하는 글이다. 이해하기 쉽게 글을 잘 써주시는 subicura님의 글답게 복잡한 k8s의 동작 방식이 이해하기 쉽게 정리되어 있다.(한국어)
  • Telepresence로 Kubernetes 클러스터에서 실행할 애플리케이션을 로컬 환경에서 개발하기 : Kubernetes 클러스터에 서비스를 배포했을 때 특정 서비스를 디버깅하려고 매번 배포하거나 로컬에 클러스터 전체를 띄우는 게 불편한데 이때 유용한 Telepresence라는 도구를 설명하는 글이다. Telepresence를 이용하면 k8s 클러스터와 로컬에 터널을 만들어서 로컬에 띄운 서버와 클러스터를 연결해서 쉽게 디버깅을 할 수 있는데 상당히 유용해 보인다.(한국어)
  • Knative on EKS : Kubernetes에서 서버시스 워크로드를 관리할 수 있는 Knative를 아마존의 EKS 상에 배포하는 방법을 설명하는 글이다.(한국어)
  • Hello Service Mesh Interface (SMI): A specification for service mesh interoperability : Microsoft에서 Service Mesh Interface(SMI)를 공개했다. 이는 Istio, Linkerd, Consul Connect 등 여러 서비스 메시 기술 간에 상호운용성을 제공할 수 있는 API를 제공하고 Microsoft, Linkerd, HashiCorp, Solo.io, Kinvolk, Weavework가 함께 만들었다.(영어)
  • 만들면서 배우는 AWS VPC 입문 : AWS에서 리소스를 만들 때 가장 기본이 되는 개념인 VPC를 설명하는 글이다. VPC에는 많은 요소가 있어서 한 번에 다 이해하기가 어려운데 각 요소가 하는 역할을 자세히 설명하고 실제로 VPC를 만들어 보면서 각 부분을 어떻게 설정해서 사용해야 하는지 설명하고 있다.(한국어)
  • Jedis 보다 Lettuce를 쓰자 : Java에서 Redis 클라이언트로 쓰이는 Jedis와 Lettuce를 성능 비교한 글이다. 스프링 부트에서 두 가지 라이브러리를 설정해서 테스트한 환경을 설명하고 이 테스트를 실행했을 때 Lettuce가 압도적으로 좋은 성능이 나오는 것을 보여주면서 Lettuce를 추천하고 있다.(한국어)
  • MySQL을 이용한 분산락으로 여러 서버에 걸친 동시성 관리 : 우아한 형제들에서 Java 코드에서 두 테이블 간의 제약 조건을 주었지만, 멀티스레드 환경에서는 이 제약조건이 지켜지지 않아서 MySQL의 분산락을 도입한 과정을 설명하고 있다. 문제 상황부터 분산락을 사용한 코드 예시까지 잘 나와 있다.(한국어)

볼만한 링크

  • 리디 Open First Initiative : 리디북스를 운영하는 리디에서 "대부분 소프트웨어는 외부에 공개되어도 문제가 없다"는 오픈 소스 라이센스를 우선하려는 정신을 따르기 위해 앞으로 회사 서비스의 코드를 오픈소스로 공개하겠다고 밝혔다. 첫 번째로 리디 셀렉트의 프론트엔드 코드를 공개했다. 추가로 버그 바운티 프로그램을 운영해서 보안 문제를 제보해 주는 사람들에게 공식적으로 포상을 하겠다고 한다.(한국어)
  • 150일 동안 내가 배운 것들 -1 : 인턴으로 입사하고 150일 동안 프론트엔드 개발자로 일하면서 배운 내용을 정리한 글이다. 1편인 이번 글은 "Communication & Thinking"에 대해서 다루고 있는데 주로 협업에 대해 얘기를 하고 있다. 동료의 시간을 아끼기 위해서 질문도 잘 준비하고 회의의 시간을 효율적으로 하려면 어떻게 해야 하는지 말을 할 때 어투는 어때야 하는지 등 깨달은 내용이 나와 있다. 그리고 개발이 개인 작업이 아니라 팀으로 하는 일이라 코드를 작성할 때 다 같이 잘하려면 어떻게 해야 하는 지 등이 나와 있는데 처음 일해보면서 배웠다고 하기에는 놀랄 정도로 많이 배우셨다는 생각이 들었다. 신입 아니더라도 협업할 때는 꼭 염두에 두어야 할 내용이라고 생각되고 이렇게 고민하면서 일하는 분이라면 금방 좋은 개발자가 되실 거라는 생각이 든다.(한국어)
  • 스포카에서는 어떻게 리모트, 플렉서블 근무를 할까 : 오래전부터 리모트 근무를 도입했던 스포카에서 현재 유연근무제를 어떻게 사용하고 있는지를 설명한 글이다. "유연 근무제는 어디까지나 '일을 더 잘하기 위한 제도'이기 때문"이라는 말에 동의하고 슬랙봇과 커뮤니케이션 방식에서 비동기 커뮤니케이션을 위해 오랫동안 노력했다는 느낌을 받았다. "서로에 대한 신뢰가 가장 적은 비용"라는 부분이 인상적이다..(한국어)
  • RIDI Design System : 리디의 디자인 가이드 문서이다. 리디의 제품을 만들 때 내부에서 가이드라인으로 사용하는 원칙, 색상, 문구 등을 어떻게 사용해야 하는지 정리된 사이트이다.
  • Gmail 로 개인 도메인 이메일주소 만들기 : Google Domains에 등록된 도메인으로 Gmail에서 커스텀 도메인의 메일 주소를 사용하는 방법을 설명하고 있다.(한국어)
  • GAME ENGINE BLACK BOOKS UPDATE : Doom과 Wolfenstein의 개발 과정이 담긴 무료 이북 GAME ENGINE BLACK BOOK의 오류를 수정하고 300dpi DPF로 업데이트되었다.(영어)

IT 업계 뉴스

프로젝트

  • 단디 - 한국어 맞춤법 검사기 : 부산대 맞춤법 검사기를 쉽게 사용할 수 있게 하는 단디를 fallroot님이 Visual Studio Code용 확장으로 만들어 주셨다.
  • Kustomize : Kubenetes 설정 파일을 템플릿화해서 사용할 수 있는 기능으로 현재는 kubectl에 내장되었다.
  • k3OS : Rancher Labs에서 경량 Kubernetes k3s에 이어 Kubernetes로 관리되는 경량 운영체제를 공개했다.
  • Kubernetes Presentations : CNCF에서 Kubernetes 관련 발표자료를 모아놓은 저장소.
  • OpenTelemetry : OpenTracing 프로젝트와 OpenCensus 프로젝트가 합쳐져서 원격측정을 하는 OpenTelemetry 프로젝트가 되었다.
  • Trivy : 컨테이너의 취약점을 검사해주는 도구.
  • Tornis : 브라우저의 뷰포트 상태를 추적해서 마우스 위치와 스크롤 위치 등을 추적할 수 있는 JavaScript 라이브러리. 프로젝트 페이지를 해당 라이브러리를 이용해서 패럴랙스로 만든 점이 재미있다.
  • eksctl : Amazon EKS용 CLI 도구
  • The Art of Command Line : 커맨드 라인 도구의 사용법과 팁을 모아놓은 저장소로 한국어로 번역이 되어 있다.

버전 업데이트

2019/06/01 21:07 2019/06/01 21:07

잦은 이직

불과 1여 년 전에 이직했는데 지난 4월 중순에 퇴사하고 이번에 새로운 회사로 이직을 했다. 저번 이직도 그러긴 했지만, 이번 이직도 계획하고 있지 않다가 이직을 하게 되었다.

Bye Bye, Blockchain

지난 이직 글에 단기간에 결정해서 고민이라는 얘기를 했는데 우려가 현실이 되었다. 할 말은 많지만 여기서 다 하기는 어렵고 나중에 나도 참고할 겸 간단히만 기록하면 블록체인 쪽 인더스트리가 혼란스러워도 그 가운데서 진지하게 해 볼 수 있을 거로 생각했는데 완전히 잘못 생각한 거라서 인더스트리의 혼란스러운 영향을 그대로 받았고 SRE라는 역할로 인프라를 공부하면서 블록체인의 분산 컴퓨팅 기술을 공부해 볼 수 있을거로 생각했는데 이마저도 전혀 못 했다. 일은 벌여놓고 해결되지 않고 있던 서비스만 만들다가 시간을 보내고 인프라는 별로 만져보지도 못했다. 결과적으로 지난 1년은 낭비한 시간이 되어 버렸다.

물론 전혀 몰랐던 블록체인에 대해서 약간은 알게 되었다. 어디서 블록체인에 대해서 안다고 말할 정도는 아니지만 대충 어떤 기술 흐름으로 가고 있고 블록체인이 뭘 하려고 하고 코인 경제와는 어떻게 연결되어 있는지 그리고 문제는 무엇인지는 나름의 생각을 가지게 되었다. 이 생각이 옳든 아니든 전에는 "그래서 블록체인이 뭐야?"였다면 뉴스 보면서 이해정도는 할 수 있게 되었다.

이번에 퇴사하면서 블록체인은 다시 안 하기로 했다. 최소한 5년 정도는 안보다도 되겠다는 생각을 하고 있고 블록체인에 회의적인 입장이 되었다.(사실 원래도 회의적인 입장이었지만...) 블록체인이 현실에서 쓰이는 수준(업계에서 얘기하듯이)까지 가려면 기술적으로 해결해야 할 이슈가 아직 너무 많다고 보는 편이고 여기에 돈과 관련해서 인더스트리가 혼란해 진 게 더욱 큰 문제를 일으켰다고 생각하는 편이다. 모든 블록체인 기술들이 다 문제인 것은 아니지만, 그 많은 회사가 내세우는 가치에서 "그 문제를 해결하는데, 왜 블록체인이 필요한가?"에 대한 대답을 제대로 할 수 있는 곳은 몇 곳 되지 않는다고 생각하고 있고 그런데도 돈은 몰리다 보니 문제는 더욱 커졌다. 일반적으로 문제를 해결하기 위해서 방법(기술)을 찾아낸 것과 달리 대부분 블록체인 회사는 블록체인을 한다는 것이 기본 전제였고(그래야 돈이 모이니까) 블록체인으로 할 수 있는 아이디어를 생각해낸 것이라고 보고 있다.

실제로 블록체인이 잘 될지 아닐지는 난 잘 모르겠고 내가 예측한다고 의미 있는 것도 아니다. 어쨋든 시장을 바꾸는 건 예찬론자이지 나 같은 회의론자는 아니므로 일단 내가 할 일은 아니라는 생각이 들었고 한번 겪어봤으니 더 해볼 생각은 없어졌다. 이럴 줄 알았으면 좋은 동료들이 바로 옆에 있을 때 공부나 열심히 할 걸이라는 생각을 하고 있다.

커리어에 대한 고민

퇴사하기로 마음을 먹고 개인적으로 연락을 취한 곳도 있고 공개적으로 말은 안 했지만 내가 이직한다는 것을 알고 개인적으로 연락을 주신 곳도 있었다. 여태까지 이직하면서 동시에 여러 회사의 채용프로세스를 밟은 적은 거의 없었다. 대부분은 그냥 한 곳을 보고 이직을 하거나 많아야 2~3곳 정도와 얘기를 진행했지만 금세 내가 마음이 가는 곳이 확실해졌었다. 이번에는 꽤 여러 곳을 만나고 그중에서 채용 프로세스를 진행한 곳도 여럿 있지만, 연봉 제안을 받는 순간까지도 마음의 결정을 하지 못했다.

여러 곳을 진행하면서도 맘을 정하지 못한 것은 "난 무엇을 하고 싶은가? 뭘 해야 재밌을까?"에 대한 답이 자신도 없었기 때문이다. 이번에도 느꼈지만, 국내에서는 너무 많은 회사가 Java를 사용하고 있어서 Java를 안 하니까 갈 수 있는 조직이 많지 않았고 전전 회사인 S사에서부터 클라우드 인프라스트럭처에 관심이 있었지만, 그때는 주로 인프라스트럭처는 같은 팀의 다른 분들이 했고 이전 회사에서 인프라스트럭처를 본격적으로 하기 위해서 SRE라는 역할로 합류했었지만, 인프라는 아주 조금만 만졌고 이후에는 사업에 급한 서비스를 만들기 위해 Node.js로 백엔드를 만들고 Electron으로 데스크톱 애플리케이션을 만드느라고 시간을 대부분 사용했다.

결국, SRE니 인프라스트럭처를 하느니 하면서 떠들기는 많이 떠들었지만 실제로 인프라 쪽 경험을 많이 하지 못했고 Kubernetes를 중심으로 한 인프라스트럭처 구성도 다양하게 배워보려고 했지만, 사용만 약간 했을 뿐이었다. 커리어가 좀 망가진 느낌이고 인프라 쪽으로 대부분 입사 지원을 하긴 했지만, 그쪽 경험이 많지는 않다 보니 "제대로 하면 재미있을까?", "내가 실제로 할 수 있는가?", "백엔드 혹은 Java로 돌아가야 하나?", "앞으로의 커리어는 어떻게 쌓아가야 하나?" 등 많은 고민을 했고 방황을 하고 있었다. 입사 지원을 하기 전에도 퇴사를 맘 먹은 지는 좀 되었기 때문에 고민을 계속하고 있었고 답이 나오지 않아서 일단 입사 지원을 했지만, 마지막까지도 결정을 못 하고 있었다. 이 정도 진행하면 한쪽으로 맘이 크게 쏠렸던 이전과 달리 결정을 하지 못하는 것을 보고 최근 커리어가 좀 망가졌다는 느낌과 방향을 제대로 잡지 못하고 있다는 느낌이 컸다.

이번에 주변에서도 이직하는 사람들이 좀 있었던 터라 비슷한 고민 얘기도 많이 나누고 이직할 때 뭘 기준으로 결정하는가? 에 대한 질문을 받으면서 나도 진지하게 고민을 많이 했다. 항상 비슷하게 생각하고 결정했었는데 크게 보면...

재밌을 것인가?

재미의 요소가 아주 다양하지만 크게 보면 재미있어야 나도 더 몰입할 수 있고 여러 가지 스트레스도 견딜 수 있다. 재밌다는 것에는 회사의 분위기, 사업, 동료, 프로젝트 등 다양한 요소가 있어서 딱히 뭐가 재밌는가는 정확한 답은 없다. 그때그때 다르긴 한데 결국은 내가 전에 주로 재밌어했던 것들을 기준으로 삼을 수밖에 없다.

나한테 기대되는 명확한 역할이 있고 그 역할을 내가 해낼 수 있는(혹은 하고 싶은) 역할인가?

요즘은 이직할 때 그 조직에서 내가 해야 하는 명확한 역할이 있는 것을 선호하는 편이다. 그래야 가서 일할 때의 내 모습을 상상해 볼 수 있고 다른 상황과 비교도 해볼 수 있어서 그런 것 같다. 이 역할이라는 게 큰 직책이라거나 뭔가 해결사 같은 느낌이 아니라 간단히는 "A 프로젝트 백엔드 개발"일수도 있고 "기획팀과 커뮤니케이션 역할"같은 일일 수도 있다. 내가 관심 없거나 내가 전혀 할 수 없는 일이면 그 조직 내에서 내가 일하는 모습이 잘 그려지지 않아서 쉽게 선택이 안 되는 것 같다. 그러다 보니 그 조직에서 어떤 이슈들이 있고 무엇을 같이 했으면 좋겠는지를 많이 얘기해 보는 편인 것 같다.

2~3년 뒤에 내 경력에 도움이 되는가?

한 회사에서 평생 있을 것도 아니고 회사는 보통 다음 회사로 가는 중간 지점이라고 생각하고 있어서 그 회사에서 하는 일이 내 경력에 도움이 되어야 한다. 물론 이런 건 특정 기술 스택일 수도 있고 더 큰 규모의 개발 경험일 수도 있는데 어쨌든 2~3년 뒤 내가 이직을 할 때 도움이 될 일이어야 된다. 물론 예상은 틀릴 수 있지만 그건 내 예측이 잘못된 거로 어쩔 수 없는 일이다.

ODK Media

다양한 고민을 했지만 ODK Media라는 곳으로 왔다. 사실 국내에서는 많이 알려지진 않았지만, 국내의 동영상 콘텐츠를 해외(주로 미국)에 있는 한인들에게 스트리밍하는 회사이다. 일단 국내에서는 대부분 모르는데 해외에 있는 한인들을 물어보면 쓰진 않더라도 서비스 이름은 다 알고 있었다.

앞에서 여러 고민을 했다고 했지만 일단 지원한 모든 회사에서의 역할이 인프라스트럭처 관련이었고 지금까지 이쪽을 제대로 못 했지만, 아직도 관심 있다는 것은 확실했기 때문에 SRE(Site Reliability Engineer)로 가기로 했다.(직책명은 회사마다 다르긴 하다.) 지원한 회사 중 큰 회사도 있고 작은 회사도 있었는데 앞에서 얘기한 조건과 나하고 핏이 잘 맞을 것 같은 곳이면서 도전적인 곳을 고민하다가 ODK Media로 결정했다. 여러 요소가 작용했지만 난 아직은 좀 더 작은 조직이 내가 더 일을 잘할 수 있다는 느낌이 있다. 대기업을 다니다가 스타트업으로 넘어와서 다양한 일을 겪어서 대기업을 가야 하나라는 생각을 잠시 했지만, 대기업의 조직 체계로 인해 답답함(혹은 재미없음)을 내가 견딜 수 있을지 잘 모르겠다.

전에는 이어폰 꼽고 코딩만 하면서 개발팀하고만 얘기했으면 이제는 타 직군과도 이견 조율하면서 프로덕트를 만들어가는 재미도 좀 느낀 터라 그런 부분을 같이 할 수 있는 조직이라고 생각한 것도 있다. 그리고 전에 같이 일했던 분들이 ODK Media에 많이 있어서 같이 일할 때의 느낌을 많이 예상할 수 있고 전의 협업 느낌이 좋았던 점도 큰 영향을 준 것 같다. 그리고 최근 퇴사할 때마다 영어 공부 열심히 할 걸 왜 안 했지라는 생각을 계속하고 있는데 이번에 영어 공부에 대한 자극도 커진 상태고 해외 취업이 아니더라도 오픈소스에서도 영어의 한계를 많이 느끼고 있어서 그 부분의 영향을 받은 것도 있다. 업무를 수행할 때는 한국어로 다 업무를 하지만 본사는 미국에 있으므로 일을 하면서 계속 자극도 받고 내가 하는 일의 영역이 커지면 어느 정도는 영어도 해야 하는 상황이 올 수도 있다는 기대감이 있다.

일단 SRE로 입사를 하고 10일 정도 지난 시점에서 업무를 파악 중인데 내 머릿속에 있는 이상적인 인프라와 현재의 인프라 사이에서 점진적으로 바꿔나가는 방법을 고민 중이다. 원래 관심사가 많아서 이것저것 보는 편이라서 앞으로도 그럴 것 같지만 인프라스트럭처 관련 기술을 깊게 공부해야 할 목적성이 명확해졌고 아직(10일 되어놓고!!) 재미있어 보여서 다양하게 공부도 하고 시도도 해보려고 한다. SRE(Site Reliability Engineer)라는 용어가 아직 국내에는 제대로 자리 잡지 않은 느낌이고 SRE에 대해서 좀 공부해본 느낌으로는 SRE가 넘어온 해외의 경우는 서비스 개발팀, 운영팀, 인프라팀 등이 다 나누어져 있는 상태에서도 SRE팀이 존재하고 있어서 업무의 경계가 비교적 명확한 데 비해 국내에서는 SRE가 인프라 구축/운영, 배포/모니터링 시스템 구축, 개발팀 지원 등 다하는 느낌이 있어서 SRE의 업무 경계는 어디까지 인가에 대한 고민도 재미있는 고민이 될 것 같다.

이번에 팀(?)이 새로 만들어진 거라서 기존에 인프라 하시던 분들의 업무를 넘겨받아서 빨리 일을 해야 하는데 아직 걱정이 많다. 뭔가 할 때 팀 내 합의를 좋아하는 편인데 지금은 1인 팀이라 내가 하고 싶은 게 생기면 팀의 합의가 이뤄진 것과 마찬가지라서 심적으로 약간 불편함이 있다. 최소 한 명만 더 있어도 기술이든 설계는 논의하고 서로 설득하는 과정이 있어서 합의했다는 느낌이 있는데 지금은 그냥 내 개인 취향으로 정해질 것 같아서 차후에 팀이 커지면 어떻게 될지 걱정이 된다. 아직 채용 공고는 쓰지 못했지만 SRE를 빨리 뽑아야 한다.(관심 있으시면 문의도 환영합니다.)

고민한 기간이 길어서 불안한 상태이다가 일단 결정을 하고 자리를 잡고 나니 지금은 맘이 편해진 상태이다. 재밌는 일을 많이 해볼 수 있기를 기대할 뿐이다.

이번 이직 때도 좋게 봐주시고 기회를 주신 분과 회사에 감사의 말씀을 드립니다.


2019/05/31 04:21 2019/05/31 04:21