[테크야 놀쟈]야놀자 타입스크립트


야놀자가 테크 상품을 판다면

여행을 갈때: 찾아보기 - 결제하기

숙소 - 쿠폰 - 회원 - 결제

레저 액티비티 개발

야놀자는 여름이 성수기

레저 런칭 날짜가 정해진상태로 2명이서 개발

정보 - 전처리 - API (정보, 운영, 관리자용)

끝이 보일때쯤 일이 생김. 누구나 그럴싸한 계획을 가지고 있다. 맞기 전까지.

전처리기 + api 가 끝인줄. 근데 웹까지. 결제, 결제완료, 상세.. 드등의 6개 페이지.

7월 런칭을 6월에 착수함.

찾아보기에서 결제까지 한싸이클 무조건 돌아가게.

PM은 무조건 완벽하게 돌아가라고 했지만 못하니까 어쩔 수 없음.

전처리기 api 웹까지 결국 완성은 함.

근데 QA 때 문제가 생김.

그 때 한명이 빠지게 됨.

프로젝트는 성과가 아주 좋았음.

파티를 열정도.

기술부채를 많이 쌓았지만. 어떻게든 성공하니. 다해결할수있었다

야놀자는 성장하는 회사. 에릭슈미트가 성장하는 회사는 직원수보다 업무량이 많다.

야놀자에 지원해주세요.


8개월차 주니어의 회고

내가 가고자 하는 회사?

IT 중심, 다양한 경험, 즐거움, 성장 가능성

관문

서류, 코딩 테스트, 면접, 합격

서류

형식적이지만 첫 인상.

자기 소개서 = 나를 잘 표현하기 : 같이 일하고 싶은 사람

포트폴리오 = 나의 역량 나타내기 : 잠재력이 있는 사람

코딩 테스트

무작정 풀어보기

  • 많이 풀수록 좋은거야
  • 처음엔 의욕 과다
  • 1일 1문제
  • 1주일 1문제…
  • 다른사람이랑 함께해보자.
  • 알고리즘 스터디
  • 정해진 문제를 꾸준히
  • 문제를 풀때마다 풍선을 받게되는데 그거 모으는 재미가 있었음.
  • 다른 사람 앞에서 말하는 연습

면접

  • 아는 것은 다 말하기
  • 모르는것은 모른다고
  • 내가 맡은 부분에 대해서는 알아야.
  • 마지막 질문은 기회
  • 현직 재직자 분들에게 듣는 회사이야기

적응

모르는게 너무 많아요

괜찮아요. 신입이니까 모를 수 있어. 물어봐요. 라고 해줌.

하지만 기회는 한정정.

잘 질문하기

  • 내가 모르는 것을 정확하게 파악한다.
  • 다른 사람이 이해할 수 있도록 명확히 설명 가능하도록
  • 혼자 고민해보기.
  • 작은 것이라도 혼자의 힘으로 해결
  • 멤버들에게 도움을 구한다.
  • 생각해본 방식은 3가지 있는데 어떤게 좋을까요?

스스로 공부하기

  • 회의나 대화중에 모르는 단어/개념은 기록 + 공부 + 정리
  • 기초는 모든일의 기반이 된다.
  • 자료구조, 운체, 네트워크 등등…
  • 새로운 기술에 관심을 갖기

커뮤니케이션은 너무 어려워

  • 기획자와 대화하기
  • 기획자가 원하는 기능구현이 힘든 경우, 이유 설명
  • 합의점 찾기

기획자: N일 동안 최저가를 나타내고 싶어요. 개발자: N일치면 N번 요청을 보내야해서 기술 효율이 떨어져도. N을 작게 기: N이 작아지면 비즈니스 효율이 떨어져요. 개: n일동안 최저가를 표현하는 건 어떨까요?

  • 내 의견이 틀리면 어떻게 하지?
  • 근거가 있다면 우선 말하자. 틀려도 비난할 사람은 없다.(혼날수는 있다…)

실무 코드는 처음이라

팀에서 만들어놓은 규칙이 있어 초보도 어느정도는 가능함.

내부로직은 복잡해도 사용하기 쉽게 구현되어 있음.

나도 저런 코드 짜고 싶어요

  • 시니어분들의 좋은 코드를 본다.
  • 유사한 코드를 작성해본다.
  • 수정할 부분이 있다면 더 좋은방향으로 변경한다.

신입에게의 야놀자

  • 내가 기여할 수 있는 부분이 많다.
  • 내가 구현한 코드가 라이브에
  • 뿌듯함.
  • 책임도 많아짐.
  • 성장할 수 있는 최적의 환경
  • 회사의 빠른 성장.
  • 뛰어난 개발자분들이 많음.

타입스크립트와 함께한 2년

우리가 타입스크립트를 선택한 이유

RESTful API - Cache 를 만드는 것.

3 high: perfomance, security, reliability

RESTful api

MSA API, MSA API, MSA API, MSA API, 회원 디비, ..디비, ..디비, .. 디비

모든 서버 코드와 비즈니스 로직: 온리 타입스크립트.

타입스크립트 공홈에 야놀자 추가되어 있음

자바 기반 MSA API/ PHP CI 기반 레스트풀 API를

자바 스프링부트 기반 MSA API/ 노드 기반 레스트풀 API로 바꾸려고 했음.

회사의 빠른 움직임에 맞춰 개발하려면 생상성을 높여야했다. 그래야 회사가 돈을 벌고 내가 월급을 받는다.

낮은 러닝 커브

신뢰성과 장애

장애 발생으로 인해 회사가 입는 손실: A 개발 기간 연장으로 인해 회사가 입는 손실: B

  • A<B
  • 빠르고 낮은 신뢰성: 파이썬, PHP, 루비, 자바스크립트
  • A>B
  • 느리더라도 높은 신뢰성: 타입스크립트, 자바, 고랭, 러스트

생산성과 개발 기간

높은 신뢰성, 성능, 생산성

컴파일 타임

ts-node라는게 매직임. 런타임 컴파일.

배포때만 하면 됩니다. 3만라인 넘어가는데 인스톨 등등 다 하는대도 50초정도 걸림.

레스트풀 API와 퍼포먼스를 즐겨라

AWS 빈즈토크. 300ms가 절대 넘어가면 안됨

75%의 응답이 응답 성능이 76ms 99%가 296에 응답 개선이 필요하지만. 이정도까지는 허용.

90퍼이상의 트래픽이 타입스크립트, 노드를 지나감.

장점

  • 잘정의된 타입. 의사소통에 큰 도움
  • 스태틱 아날리시스, 컴파일 스테이지: 신뢰성 향상
  • 안정된, 방대한 패키지: 노드 인프라 사용
  • 함수형 프로그래밍
  • 하이 퍼포먼스
  • AWS 빈스토크 사용가능

단점

  • 타임 정의를 하고, 쉽게 쉽게 바꾸기 어려운 것: contract
  • 배포전 1번 빌드
  • 스트릭모드 사용여부에 따른 커버리지 변화
  • 스캐폴딩의 어려움, 최근 많이 쉬워졌지만 절차가 하나 더 필요

기업의 성장과 개발자의 성장을 고려한다면 타입스크립트를 사용하세요.

Q&A

  1. 빗버킷으로 옮긴 이유?

깃헙이 엔터프라이즈로 사용하기 좀 어려웠음.

  1. 타입스크립트 버젼 이슈

프리티어랑 tslint를 빡세게 쓰고 있음. 버젼 새로 나오면 거의 바로 적용. 스트릭트를 사용하지 않으면 별 문제 없음.

  1. ORM, 등의 라이브러리 어떤거 사용하시는지

DB를 직접다루지 않음. API를 사용해서 콜하기 때문에. 사실 ORM 쓸일이 없음. Redis를 ORM 쓰느냐의 문제인데. 그냥 함. JSON 스키마로 스키마 벨리데이션을 하는 정도.

  1. MSA API가 하는일. TS API가 하는 일. 역할은?

MSA는 쿼리 콜 하는 느낌.

리얼타임으로 전체 쿠폰, 객실을 제약조건 체크해서 실시간 추천. 이런걸 TS쪽에서.

레저에서 검색엔진, 동기화, 오퍼레이션 등 을 TS에서.

야놀자는 클라도 next에 타입스크립트를 사용함.

  1. 빈즈토크를 쓰는 이유?

빈즈톸을 쓰면 대부분의 운영이슈를 해겨할 수 있어. 라는걸 다른 컨퍼런스에서 듣고, 한번 써봐야지. 하고 써봄.

데브옵스가 특별히 있지 않은 상태에서 빈즈토크가 배포와 모니터링, 오토스케일링 등등을 다해줘서 이점이 많음.

도커랑 쿠버네티스 열풍이 불어서 지금은 대부분 그걸 쓰시는데, 아직 어려워서 야놀자는 아직 대부분 빈즈톸을 씀.

단점은 모니터링이 완벽하지 않음. 약간 불편하지만 다시 돌아가도 빈즈톡을 쓸거같음.

  1. 테스트 코드

테스트 코드는 제스트를 쓰고있음. 테스트 코드를 짜는건 자율이라. 안짜는 분들도 있음. 버그만 안나게 개발해주세요.

컨피규레이션 오더.. 등등을 구매하는 등의 지원을 아끼지 않음.

  1. 해결해야할 기술 부채가 뭐가 있나?

마지막 코드 스타일이 약 70퍼 예전스타일이 약 30퍼정도 있는데, 그 정도. 하지만 이걸 다 바꾸면 코드 QA를 다시해야함.

비슷한 기능을 개선할떄 QA를 받을 수 있을때 하는 방향.




© 2017. by isme2n

Powered by aiden