19. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
이미지
채팅
위치정보
인증
사내 CLI
미디어
알림
Audit
… 무지 많아요
20. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
고언어를 사용하며 느낀 장점
• 가볍다. 빌드가 빠르다.
• 빌드된 Binary 하나만 있으면 된다.(10~30MB 정도)
• 테스트 코드가 짜기 쉽다
• 프로파일링 도구가 잘 되어 있다(pprof)
• 문법이 간결하다.
• 좀 더 깊은 개발이 가능하다. 기본 io, network 라이브러리의 옵션만 보더라도
최적화에 대한 고민을 할 수 있다.
• 빠르게 개발할 수 있다. 불필요한 코드가 적다
(필요한 경우에만 Duck Typing, Interface, Type Embedding을 사용함)
• 컴퓨팅 자원을 효율적으로 관리한다. CPU, Memory의 사용량이 다른 GC
언어에 비해 현저히 적다.
22. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
고생한 점
• Golang 을 처음 배우는 분들은 적응 기간이 필요
• 익숙한 언어를 사용하지 않는 것에 대한 고통
• 초창기에는 일정한 프로젝트 구조를 가지지 않음
• 개발 할 때마다 방식이 달라짐
• 해오던 언어에 따라 패턴이 미묘하게 다름
• 심리적 압박
• 고언어라 늦게 개발되는거 아닌가?
• 레일즈나 Nodejs면 더 빨리 개발하지 않나?
24. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
빌드하기 via Github Actions
• Configure Default Authentication on Private Github Org.
• Do test
• Build
25. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
배포하기
• Kommands라는 사내 CLI 도구 활용
• 배포 큐에 서비스 등록
• K8s에 올라간 앱들이 Git repo를 통해 관리됨
• 여기에 컨테이너 이미지 업데이트
• ArgoCD를 통해 서비스 배포 적용
29. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
사내 CLI 사용하기
• PostgreSQL Dump
• 선택한 테이블만 덤프
• 기존에는 루비코드를 실행했는데, 루비를 실행하기 위한 환경 설정이 필요 없음
• DynamoDB Copy/Dump/Truncate(todo)
• Local DynamoDB 환경 설정을 위한 도구
• Read Capacity를 설정한 인덱스 만큼만 사용
• 개발환경 데이터의 Full Scan이 필요한 경우 사용
• 평균 2000 item/s의 속도로 데이터를 읽어옴
• github.com/daangn/dynamoutil
• Elasticache restore
• 캐시리스토어
• …ETC
30. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
인프라 및 코드 관점
• 배포 환경의 일원화
• 코드의 재사용
• CI via Github actions
• CI via CircleCI Orbs
• Application Profiling
• Monitoring
• Prometheus Custom Metric
• Sentry Reporting
• Datadog Tracer
• HTTP/gRPC/Memcached/Redis Client Options