근황 토크
09 Oct 2018근 1년 넘는 세월동안 업데이트가 없었던 이 블로그. 어떤 일들을 일어났었는지 정리해보자.
러스트 문서 번역
- 저장소 링크는 여기
- 빌드된 html 버전은 여기
- 2017년 6월경, 러스트 기본 문서가 2판으로 업데이트 된 것을 보고 읽기 시작
- Carol과 Steve 두 사람이 쓴 2판 문서는 좀 장황하긴 하지만 너무나 친절하게 쓰여져 있어서 문득 아무 프로그래밍 언어라도 좀 다뤄본 사람이면 이 정도 설명은 충분히 이해할 수 있겠디고 생각함
- 2017년 7월 9일, 원문 저장소를 포크하고 원저자에게 한국어로 번역하겠다고 이슈를 만들어 알리고 작업 시작
- 그 뒤에 페북 러스트 커뮤니티에 도와줄 사람을 모집하여, 대략 5명 정도의 개발자와 함께 틈틈이 번역 시작
- 그리고 지금 2018년 10월초, 드디어 부록을 제외한 거의 모든 챕터의 번역이 끝남…
- 논문이나 좀 읽어댔지, 프로그래밍 기술 서적을 번역해 보는 것은 처음이어서 초반에는 고민하는 시간이 타이핑하는 시간보다 훨씬 길었던거 같음
- 다 번역되고 나면 아마도 새로 나온 2018년 에디션으로 업데이트를 해야 할 거 같음;;;
- 아무튼 러스트는 역시 참 재밌는 언어라고 생각. 러스트로 뭔가 본격 프로젝트 좀 해보고 싶다;
프론트엔드 / 백엔드 겉핥기
- 2017년 8월경, 백엔드 및 인프라를 담당하던 친구들이 개인 사정으로 인해 회사를 그만두면서, 급하게 백엔드와 인프라를 땜빵하기 위한 공부를 시작
- 당시 회사는 ruby-on-rails 기반의 백엔드, 영상 스트림 서버와 이를 보조해주는 go lang 기반의 에이전트 코드를 유지하고 있었음
- 급하게 ruby와 rails를 공부해서 어떻게든 땜빵 시작
- ruby는 보면 볼수록 신기한 언어라고 생각함. 문법의 자유로움 (나쁘게 말하면 근본없음) 의 매력이 해커를 부르는 이유가 아닐까 생각
- 자동 빌드 도구인 fastlane이나, mac 개발자들의 친구 brew가 ruby를 쓰는 건, ruby의 자유로운 (혹은 근본없는) 문법 덕분에 DSL 만들기가 수월해서가 아닐까라고 생각함
- 여담으로 로드 테스터로 쓰는 jmeter의 시나리오 xml 편집을 힘들어하다가, 이걸 좀 더 편하게 쓸 방법이 없을까 하며 검색하다보니 ruby 코드로 jmeter 시나리오를 작성할 수 있는 ruby-jmeter란 놈도 있단걸 알게 됨… 역시 ruby를 자기네 언어인 마냥 DSL 처럼 쓰고 있는 예;
- 하지만 이걸 검색하다 같이 알게된 python 기반의 로드 테스트 프레임워크 locust를 보고, 이걸 써봤는데 jmeter보다 훨씬 사람같은 행동을 하는 테스트를 할 수 있었음. locust 강추함니다
- 한편 go lang은 접할 기회가 별로 없었고 그 당시까지만 해도 ‘뭐, 고랭은 가비지 콜렉터를 쓴다고? 그러면 JVM 기반인가?’ 라고 오해하고 있다가, 어쨌든 코드를 보면서 나름 재밌는 언어구나 라고 생각함. 하지만 코드 관리가 뭔가 아이튠즈 같다는 느낌을 지울수 없음
- 아무튼 허구헌날 싱글 스레드에 한 프레임당 30ms 이내에 실행이 끝나는 코드나 짜고있던 나한테 시동을 막 걸고 있는 대형 프로젝트의 백엔드 공부는 신기한 경험이었음
- 그러다가 2017년말, 프론트엔드를 담당하던 친구까지 회사를 옮기게 되면서 급하게 react-redux-saga 기반의 싱글 페이지 프론트엔드도 공부를 하게 됨
- 애초에 javascript를 딥하게 써본적도 없는데, 온갖 모던한 문법으로 작성된 redux-saga 코드는 머릿속을 엉키게 만들기에 딱 좋았음
소감
- 2018년 현재, 결국 나는 ruby-rails과 node-express 기반의 백엔드 코드도 볼 수 있게 됐고, 여전히 db와 query에 대해서는 잘 모르지만 postgres / mysql 같은 db에 연결하고 뭔가 얻어오는 것도 할 줄 알게 됐고, react-redux-saga로 된 싱글 페이지 코드도 볼줄 알게 되었고, 간편한 콘솔 툴을 작성할려고 babel 기반으로 모던한 javascript를 쓸 수 있게 되었고, aws에서 ec2를 띄우고 ami를 굽고 elb를 설정하고 s3에 뭔가 올리고 cloudfront에 연결하여 내려받고 등등 기본적인 aws 사용법도 알게 됨
- react-redux-saga의 경험은 mvc도 별로 제대로 경험하지 못한 나한테는 신선한 경험이었음. 처음에는 ui 하나를 집어넣을때도 여러 코드를 건드려야 하는 귀찮음과 쉽지 않은 제어 흐름 떄문에 골치가 아팠지만, 점점 코드를 늘려나가다 보니 로직과 뷰와 컨테이너가 확실히 분리되는 모양새를 보고 왜 사람들이 리덕리덕거리나 알게 되었음
- ruby-on-rails와 node-express를 차례로 접하고나서 풀 스택 웹앱 프레임워크와 가벼운 웹앱 프레임워크를 비교할수도 있게 되었음… rails는 ‘rails 안에 다 있음!’이 기조인건지 뭐든 찾으면 나와서 뭐든 빨리 만드는 일에는 적합하다는 생각이 들지만, 뭔짓을 하든 간에 가볍고 스무스하게 동작한다는 느낌은 영 들지 않고, 가벼운 프레임워크를 쓰면 ‘나머지는 알아서’의 느낌이 강하지만, 일단 할일은 충분히 잘 된다는 느낌이 듬
- 뭔가 많이 알게 되서 좋긴 하지만, 매우 바빠지고 피곤한건 어쩔수가 없구나;