Covenant

성장하는 서버 개발자 되기 강의록




  1. 27(금) 19:00 원티드 Live Talk 성장하는 서버 개발자 되기 강연에 참석하여습니다. 원티드에 블로그 포스팅 허락을 받고 마크업으로 남깁니다.



서버 개발자로 성장하기 (당근마켓 변규현)


소개


  • 당근마캣 개발자
  • AWS Serverless Hero
  • Go 언어 사용
  • 커리어
    • 오기 전 CTO 하고 등등...
    • AWS Korea User Group 활동하던 중 17년 당근마켓 CTO를 만났다. 이후 19년 이야기하다가 합류하게 되었다.


커뮤니티 활동


  • 커뮤니티 활동이 이직에 도움이 될까? → 도움이 된다.
  • 왜 도움이 될까? 어떤 도움을 받았을까?
  • 커뮤니티라는 것은 기술을 좋아해서 이야기하는 사람이 많다.
  • 커뮤니티에서 어떻게 개발 지식을 쌓을까?
    • 가입하고 구독만 하는 것이다.
    • 다양한 Use Case를 본다. → 내용이 지속적으로 공유된다. → 반복 학습으로 어느 순간 그 기술을 습득한다. → 나도 따라 하게 된다 → 이 분이 쓴 것에서 조금 개선하게 된다.
    • 반복되는 내용이 지루하지 않을까? → 90% 반복되더라도 10%는 특별한 경험을 갖고 있다. → 또한, 이런 내용이 나중에 도움이 된다.
  • 커뮤니티에는 유명한 분들, 열정이 넘치는 분들, 조용히 참석하는 분들이 있다.
  • 커뮤니티에는 위계질서가 없다. 서로 아는 지식을 공유하고 모르는 게 있으면 잘 알려준다.
  • 커뮤니티는 발표자에 목마르기에 자주 참여하면 발표 제안이 온다.


커뮤니티 발표


  • 발표에 걱정하지 마라.
    • 내가 모르는 분은 다른 분들이 채워 줄 수 있다.
    • 다음에 공부해서 공유 드릴 수 있다.
    • 그저 조금 큰 규모의 스터디
  • 커뮤니티 발표의 장점
    • 발표를 연습할 수 있는 공간
    • 작은 발표 연습이 큰 공간 발표에 도움이 된다.
    • 발표하는 것은 나를 알리는 공간. 이력서를 넣지 않더라도 제안을 받을 수 있다.
  • 발표의 주제
    • 크게 두 가지. (1) 모두가 관심 있어 하고 대부분 모르는 것 (2) 내가 잘 알고 경험이 있는 것
      • 3~4년 전만 하더라도 클라우드 경험이 없으니 도입 과정에 대한 고민.
      • Go를 잘해봤고 채팅에 대한 경험, 데이터 파이프라인에 대한 경험이 있다. 이에 대해 정리하고 공유할 수 있다.
  1. 모두가 관심 있어 하고 대부분 모르는 것
    • 새로운 공부를 하는 기회, 공부한 내용을 래퍼런스로 남길 수 있는 기회
    • 혼자 공부하면 내가 이런 공부했다는 것은 알릴 수가 없지만, 회사 지원 시 발표 링크를 주면 공부한 것을 알릴 수 있다.
  2. 내가 잘 알고 경험이 있는 것
    • 나를 알릴 수 있는 기회
    • 어떤 회사에서 채팅 기능을 구현하려고 하는데 채팅 관련 발표를 보고 어필 가능
    • 내가 잘 안다고 아무리 말해도 사람들은 모른다. 발표를 통해서 드러낸다.


일을 잘하기 위해서 어떤 역량이 필요할까?


  • 비즈니스 도메인에 대한 이해
    • 가고 싶은 회사가 있는데 비즈니스 도메인에 대한 이해가 없으면 안 된다.
    • 원티드에 입사하고 싶은데 채용 플랫폼에 대한 이해가 없는데 회사에 지원하는 것은 있을 수 없다.
    • 코드를 짜는 코더가 아닌 비즈니스를 이끄는 개발자가 되려고 한다면!
  • 피쳐 개발 / 아키텍처 개선 / 튜닝 / 로직 개선에 대한 고찰
    • 피처 개발: 기획자가 시키는 대로 하는 것이 아니라 좀 더 나은 방법에 대한 고민
    • 아키텍처 개선: 서비스가 커지다 보면 아키텍처가 바뀐다. 고민 등등
    • 서비스가 커지면서 생기는 as is에 대한 분석으로 to be 모델을 생각한다.
  • 커뮤니케이션 역량
    • 개발자는 개발만 하면 되는 것은 아니다.
    • 개발 용어가 아닌 타인에게 이해할 수 있는 용어를 사용해야 한다.
    • 메신저로 말할 때 간결하게 말을 해야 한다.
      • 상대가 의욕적으로 일할 수 있도록 대화하는 역량 필요


개발자로 성장하려면 어떻게 해야할까?


  • Side Project
    • 회사에서 경험할 수 있는 것은 회사에 한정
    • 내가 공부하고 싶은 것은 사이드 프로젝트로 증명
    • 컨테이너 오케스트레이션에 관심있다면 개인적으로 해보고 Github 올리면 이력서에 링크를 보고 이정도 공부했다는 것을 알게 된다.
    • 단순히 공부했다고만 쓰면 판단하기 어렵다.
  • Youtube
    • for beginner 말고 아키텍처, internal 등등의 키워드로 공부해라.
    • 내부적으로 어떻게 동작해서 이게 좋구나를 알아야 한다.
    • 회사에서 보는 것은 얼마나 관심 있고 깊게 보는지
  • 공식문서를 먼저 보는 습관
    • 한글로 된 블로그는 누군가의 생각이 들어간 내용
    • 공식문서는 누구보다 잘 이해하는 사람이 직접 적은 글이다. 정확한 지식을 공부할 수 있다.
    • Stackoverflow를 멀리하자. 인스턴스 지식. 문제 해결만을 위한 지식이다. 차라리 Stackoverflow글에서 래퍼런스한 문서를 보자.


어떻게하면 잘 취업, 이직할 수 있는가?


  • 관심 분야에 대한 발표와 정리
    • 발표 제안이 오면 여유가 있으면 다 했다.
    • 오늘 발표 자료 준비도 새벽 3시까지 했다.
  • 왜 발표하고 공개할까?
    • 면접관은 이력서 한 장을 보고 판단한다.
    • 내가 아는 지식이 많아도 A4 한 장에 소개하기 어렵다.
    • 발표했다면 발표 링크를, 사이드 프로젝트를 했다면 링크를
    • 사람을 합격시키려면 근거가 있어야 한다. Github에서 이런 프로젝트가 마음에 들었어요. 등등.. 증명 과정은 면접에서 하게 된다.
    • 화려한 스킬로 성장하는 것은 없다. 차근차근 쌓아서 눈에 띄는 사람이 되도록 하는 것이다.



트랜드와 성장 - 송주영


  • 소개: 위버스컴퍼니 DevOps

삼성시절


  • 대기업에서 일하면 부품처럼 일하고, 배우는게 적다? → 절대 아니다.
  • 세상은 내가 얼마나 보냐에따라 달라진다. 그 상황을 이용해야 하는 것
  • 삼성 Knox 프로젝트를 4년간 했다.
  • 12년 당시 서버 엔지니어라면 AWS를 반드시 했어야했다.
  • 삼성 IoT 플랫폼개발
    • 규모가 어마어마하다. 에어컨 온도가 얼마나 바뀌었는지 다 수집한다.
  • 우리는 무엇을 아냐, 모르냐로 실력을 판단한다.
  • 삼성 Account 서비스
    • 9억 5천만명 사용자가 사용한다. 온프레미스에서 클라우드로 마이그레이션했다.
  • 프로젝트를 시작할때 공부를 많이 해서 잘한다고 생각했다. 글로벌한 사람을 만나면서 내가 아는 것이 부족했다. 건방졌던 내가 정신차리게 되었다.
  • 프로젝트가 커질수록 기술 뿐만 아니라 사람문제 등등
  • 일은 다각형이다.
    • 완전히 도움되는 일
    • 나중에 도움 되는 일
    • 의미가 없는 일
    • 점점 망가져가는 일
    • 방해되는 일
    • 시간 버리는 일
    • 천천히 도움되는 일
    • 등등 ...
  • 내 선택이 올바라야 성장을 할 수 있다.
  • BTS는 왜 열광할까? 미래를 그리고 준비를 했다. → 성장을 위해서 Why의 질문을 잘 해야한다.
  • 성장은 항상 새로운 것을 하는 것. 항상 불편하다 싶은 것을 극복하고 계속 하는 것



Q&A


Q. 작은 회사라 인프라를 경험할 수 있는 기회가 없을 경우 이직밖에 답이 없을까요?
A. 회사에서 배우는 것이 한정적이라면 내 개인 시간을 들여야 한다. 각종 회사 기술 블로그에서 어떻게 해결했는지를 캐치해서. 큐잉 서비스를 위해서 RabbitMQ를 쓰고 어떤 데는 Kafka를 썼다. 이에 대한 케이스 스터디를 정리할 수 있는 것이다. 유튜브에 Deep dive 키워드로 검색하면 좋은 내용이 나온다. AWS 201, 301 세미나 찾아가면서 공부했다.



Q2. 3년 차 서버개발자인데 앞으로의 개발 공부방향. 회사에서 성장하고 싶다.
A. 회사에서 성장하고 싶은지, 이직을 위해서 성장하고 싶은지. 우리 회사가 클라우드를 쓰지 않으면 회사 시스템을 공부하는 것이 우선이다. 만일 이직하는 회사에서 클라우드를 많이 쓴다면 그에 대해서 공부해야 한다.



Q3. 대용량 트래픽 분산처리의 해설과정이 궁금
A. 명확하게 분산처리가 필요한 상황에 대해서 정의를 해야한다. 특정 서비스에서 트래픽 처리가 발생하는지, 모든 서비스에서 발생하는지. 특정 서비스라면 서비스를 분리할 수 있어야 한다. 서비스에 대해서 Scale-out에 대한 패턴이 있다. 서버만 늘리는 것이 아니라 애플리케이션에서, 네트워크에서 캐싱할 수 있다. 자세히 공부하고 싶다면 유튜브에 AWS Cache me if you can 영상이 도움될 것이다.



Q4. 회사에서 요구하는 기술 스택이 제각각이라 준비하기 어렵다.
A. (변규현) 제일 가고 싶은 회사를 정해두고 이 회사만 준비한다. 이와 비슷한 회사의 경우 연습게임으로 둔다. 모의고사가 없으면 수능을 잘 보기 어렵다. 가고 싶은 회사를 위해서 면접을 보는 것이다. 이 회사를 깊게 준비하면 이와 비슷한 필드의 회사에 대해서 빠르게 이해하게 된다. 문어발식으로 준비하는 것은 좋지 않다.



Q5. 예전 코드를 보면 부끄럽다. 깃헙 코드를 지금 리팩토링하는게 좋을까요? 참고할만한 자료가 있을까요?
A. (변규현) 부끄러운 코드를 수정하지는 않는다. 옛날에는 못했는데 지금은 성장하다. 과거의 나는 이렇지만 지금은 개선되었다. 4년 전 코드를 보고 이 사람은 지금 이럴 것이다라고 생각하는 사람은 없다. 새로운 프로젝트를 하면서 개선된 코드를 보여주는 것이 좋다.
A. (송주형) 옛날 코드가 부끄러운 게 맞고, 지금 잘하는 게 좋다. 리팩토링은 계속 해야한다.



Q6. 주니어에서 시니어로 넘어가는 시점. 시니어 개발자로 성장하기 위해서 무엇을 해야 하는지
A. (송주형) 혼자 일을 잘하는 것이 아니라 주니어 개발자를 성장시키는 역량이 좀 더 중요하다.
A. (변규현) 시니어는 프로젝트를 처음부터 끝까지 설계하고 일정에 차질없이 진행할 수 있어야 한다. 맨먼스를 정확하게 계산해야 한다.



Q7. 채용 과정에서 어떤 점을 중점적으로 보는지
A. (변규현) paper를 던지는 것이 아니라 한눈에 래퍼런스를(링크) 타고 들어가게 해야 한다. 개인 블로그에 정확한 제목이 있고, 목표, 상세 내용, 문제 해결내용을 정확하게 적는 것이 좋다.
A. (송주형) 빨리 배우는 사람을 뽑고 싶다. 수 없이 이력서 검토를 하는데 자신의 6, 7개월 일지를 다 기록한 사람이 있다. 커밋량이 2000개인 것도 인상적이다. 오픈소스에 오탈자 찾기, 작은 것을 기여한 것도 인상 깊다. 얼마만큼 고민을 깊게 하는지 보여야 한다.



Q8. 현재 직무와 스킬셋이 다른데 이력서에 기술하는 것이 좋은지 아니면 경험이 짧기에 안 적는 것이 좋은지.
A. (송주형) 짧은 시간이라고 하지만 그 시간 깊게 고민을 했다면 그 사람에게 남는 것이다. 수 없이 회사생활을 하지만 성장은 계단식 상승하는 경우가 많다. 경험을 ~게 쓰는 게 좋을까요? 구체적으로 질문하는 게 좋을 것이다.
A. (변규현) 어디까지 해봤어요 할때 써봤어요하면 아는 것은 아니다. 내가 정확하게 알고 할 말이 있는 것을 이력서에 쓰는 것이 좋다.



Q9. 번아웃이 왔을 때 어떻게 극복하였는지?
A. (변규현) 번아웃이 온 적이 없다. 번아웃이 아니라 힘든 시간, 일하기 싫을 때는 당연히 찾아온다. 다시 하고 싶을 때 돌아와서 본다. 번아웃이라는 것은 누적해서 발생하는 일로 보인다. 그 자리에 그만두고 놀러나간다.
A. (송주형) 번아웃을 극복하지 못했다. 지금도 번아웃이다. 규현님은 운동하고 자기관리가 엄청나다. 건강을 생각하면서 해야 한다. 20대부터 건강을 관리해야 한다. 몸이 약해지면 정신도 약해진다.



Q10. 취업에서 CKA자격증은 얼마나 도움이 되는지?
A. (송주형) 자격증에 대해 이야기를 하면 있는 것은 마이너스는 아니다. 그러나 자격증은 있는데 취득자라면 알고 있을 질문을 했는데 모르면 떨어진다. 자체만으로 당락이 결정되는 것은 아니다.



Q11. 서버개발자를 꿈꾸고 있는데 중고신입에 요구하는 역량은 무엇이며 무엇에 집중하면 좋을지
A. (변구현) 카테고리 영역에 토이프로젝트를 진행하며 지식을 깊게 쌓고 면접에 이끌어내자. 장점이 드러날 수 있도록 작전을 만들자. 면접관은 어떤 지식을 갖고있는지 모르기에 단서를 줘야 하고 그것이 토이프로젝트이다.



Q12. 인프라 모니터링에 대한 경험이 적은데 간접적으로 쌓을 수 있는 방법은?
A. (송주형) 서비스 모니터링은 무조건 경력을 쌓고 프로메테우스 등 다양한 도구가 많다. 그것은 다 봐야한다. 모니터링을 PC에 설치하는 것도 어렵지 않다.
A. (변규현) 모니터링은 필수. 인프라 레벨 모니터링, API 레벨 모니터링, 애플리케이션 로직 내에서 모니터링 하나하나 다 할 줄 알아야 한다. 어떤 지점에서 부하 지점이 발생하는지(APM) 봐야한다. 그래야 문제 지점을 빠르게 발견하고 개선할 수 있다.