SlideShare a Scribd company logo
1 of 34
Download to read offline
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
당근마켓의
고언어 도입기,
그리고 활용법
당근마켓 | Software Engineer | 변규현
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
발표자 소개
• 당근마켓 채팅플랫폼 개발자
• AWS Serverless Hero
• Go언어를 주로 사용함
• 개발을 잘하고 싶어함
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
1년 전 서버 상황(2019.06)
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
1년 전 서버 상황(2019.06)
Rails
Server
PostgreSQL
Redis
Memcached
LB
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
만약 Rails Server에 문제가 있다면?
Rails
Server
PostgreSQL
Redis
Memcached
LB
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
우리가 원하는 상황
PostgreSQL
Redis
Memcached
LB
Rails Server
Chatting
Feed
Image
Chatting DB
Feed DB
Image DB
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
피드는 나와야한다.
채팅을 통해 거래는 해야한다.
알림은 보내야한다.
가입은 해야한다.
…
곧, 각 서비스 도메인 별 간섭이 적어야 한다.
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
마이크로서비스 도입을 결정
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
무엇으로 개발하지?
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
Node.js는 개발자가 많아요
우린 Rails를 잘해요
역시 Java가 안정적이죠
…
근데 고언어는 어때요?
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
고언어는 빠르대요
CLI 만들기 좋대요
고루틴 좋다고 들었어요
K8s 관련된 라이브러리는 고로 개발한대요
컴파일 언어래요
…
그리고 고언어해봤는데 해볼만해요
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
그럼 작은 서비스를 개발하고 생각해보죠!
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
그렇게 나온 이미지 플랫폼 Big Picture
by Zzerjae
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
개발 및 적용기간 1개월
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
현재 CPU 및 메모리 사용량(1000만 MAU 기준)
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
그리고 고언어 플랫폼들
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
이미지
채팅
위치정보
인증
사내 CLI
미디어
알림
Audit
… 무지 많아요
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
고언어를 사용하며 느낀 장점
• 가볍다. 빌드가 빠르다.
• 빌드된 Binary 하나만 있으면 된다.(10~30MB 정도)
• 테스트 코드가 짜기 쉽다
• 프로파일링 도구가 잘 되어 있다(pprof)
• 문법이 간결하다.
• 좀 더 깊은 개발이 가능하다. 기본 io, network 라이브러리의 옵션만 보더라도
최적화에 대한 고민을 할 수 있다.
• 빠르게 개발할 수 있다. 불필요한 코드가 적다
(필요한 경우에만 Duck Typing, Interface, Type Embedding을 사용함)
• 컴퓨팅 자원을 효율적으로 관리한다. CPU, Memory의 사용량이 다른 GC
언어에 비해 현저히 적다.
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
고생한 부분도 있었어요 😊
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
고생한 점
• Golang 을 처음 배우는 분들은 적응 기간이 필요
• 익숙한 언어를 사용하지 않는 것에 대한 고통
• 초창기에는 일정한 프로젝트 구조를 가지지 않음
• 개발 할 때마다 방식이 달라짐
• 해오던 언어에 따라 패턴이 미묘하게 다름
• 심리적 압박
• 고언어라 늦게 개발되는거 아닌가?
• 레일즈나 Nodejs면 더 빨리 개발하지 않나?
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
한 번 어떻게 쓰는지 살펴볼까요?
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
빌드하기 via Github Actions
• Configure Default Authentication on Private Github Org.
• Do test
• Build
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
배포하기
• Kommands라는 사내 CLI 도구 활용
• 배포 큐에 서비스 등록
• K8s에 올라간 앱들이 Git repo를 통해 관리됨
• 여기에 컨테이너 이미지 업데이트
• ArgoCD를 통해 서비스 배포 적용
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
기여하기
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
팀이 모두 고언어를 쓰니 서로 도와가며
개발하고 있어요
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
사내 CLI로 개발환경 세팅하기
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
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
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
생각보다 큰 고생은 아니었어요 😊
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
고언어 쓸만하죠?
다들 시작해봐요 :)
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
에서
함께할 분을 찾고 있어요😊
dngn.kr/join-us-dev
2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
감사합니다!
Email: novemberde1@gmail.com
Blog: novemberde.github.io
Github: github.com/novemberde

More Related Content

What's hot

AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
Amazon Web Services Korea
 

What's hot (20)

Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
 
[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf
 
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
AWS 고객이 주로 겪는 운영 이슈에 대한 해법-AWS Summit Seoul 2017
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기
 
클라우드 여정의 시작 - 클라우드 전문가 조직의 프랙티컬 가이드-김학민, AWS SA Manager::AWS 마이그레이션 A to Z 웨비나
클라우드 여정의 시작 - 클라우드 전문가 조직의 프랙티컬 가이드-김학민, AWS SA Manager::AWS 마이그레이션 A to Z 웨비나클라우드 여정의 시작 - 클라우드 전문가 조직의 프랙티컬 가이드-김학민, AWS SA Manager::AWS 마이그레이션 A to Z 웨비나
클라우드 여정의 시작 - 클라우드 전문가 조직의 프랙티컬 가이드-김학민, AWS SA Manager::AWS 마이그레이션 A to Z 웨비나
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
글로벌 기업들의 효과적인 데이터 분석을 위한 Data Lake 구축 및 분석 사례 - 김준형 (AWS 솔루션즈 아키텍트)
 
Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)
 
Docker & kubernetes
Docker & kubernetesDocker & kubernetes
Docker & kubernetes
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
 
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인 l 안효빈 솔루션즈 아키텍트
 
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 SeoulElastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
Elastic Stack 을 이용한 게임 서비스 통합 로깅 플랫폼 - elastic{on} 2019 Seoul
 
Platform engineering 101
Platform engineering 101Platform engineering 101
Platform engineering 101
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
데이터 분석가를 위한 신규 분석 서비스 - 김기영, AWS 분석 솔루션즈 아키텍트 / 변규현, 당근마켓 소프트웨어 엔지니어 :: AWS r...
 
Monitor Azure HDInsight with Azure Log Analytics
Monitor Azure HDInsight with Azure Log AnalyticsMonitor Azure HDInsight with Azure Log Analytics
Monitor Azure HDInsight with Azure Log Analytics
 

Similar to 당근마켓 고언어 도입기, 그리고 활용법

HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
Sang Seok Lim
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Sung-tae Ryu
 
2_Design_마이크로서비스디자인_JungInLee.pdf
2_Design_마이크로서비스디자인_JungInLee.pdf2_Design_마이크로서비스디자인_JungInLee.pdf
2_Design_마이크로서비스디자인_JungInLee.pdf
HanWoongLee2
 

Similar to 당근마켓 고언어 도입기, 그리고 활용법 (20)

HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
HTML5 관점에서 본 2014 모바일 웹 앱 개발 동향과 사례 및 발전 방향 전망
 
한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기
 
Go 도입 후 4년 간 기록
Go 도입 후 4년 간 기록Go 도입 후 4년 간 기록
Go 도입 후 4년 간 기록
 
HTML5 관점에서 2015년 웹 앱 개발 동향과 사례 및 2016년 발전 방향 저...
HTML5 관점에서 2015년 웹 앱 개발 동향과 사례 및 2016년 발전 방향 저...HTML5 관점에서 2015년 웹 앱 개발 동향과 사례 및 2016년 발전 방향 저...
HTML5 관점에서 2015년 웹 앱 개발 동향과 사례 및 2016년 발전 방향 저...
 
위젯 업계의 최근 동향과 문제들
위젯 업계의 최근 동향과 문제들위젯 업계의 최근 동향과 문제들
위젯 업계의 최근 동향과 문제들
 
위젯 업계의 최근 동향과 문제들
위젯 업계의 최근 동향과 문제들위젯 업계의 최근 동향과 문제들
위젯 업계의 최근 동향과 문제들
 
2013 W3C HTML5 Day Conferences:HTML5 Game App 개발 및 이슈
2013 W3C HTML5 Day Conferences:HTML5 Game App 개발 및 이슈2013 W3C HTML5 Day Conferences:HTML5 Game App 개발 및 이슈
2013 W3C HTML5 Day Conferences:HTML5 Game App 개발 및 이슈
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchain
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
2_Design_마이크로서비스디자인_JungInLee.pdf
2_Design_마이크로서비스디자인_JungInLee.pdf2_Design_마이크로서비스디자인_JungInLee.pdf
2_Design_마이크로서비스디자인_JungInLee.pdf
 
이동현 - 오픈소스 DBMS 큐브리드 (2009Y05M30D)
이동현 - 오픈소스 DBMS 큐브리드 (2009Y05M30D)이동현 - 오픈소스 DBMS 큐브리드 (2009Y05M30D)
이동현 - 오픈소스 DBMS 큐브리드 (2009Y05M30D)
 
Card battle game proposal
Card battle game proposal Card battle game proposal
Card battle game proposal
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
모바일환경과 개발방향
모바일환경과 개발방향 모바일환경과 개발방향
모바일환경과 개발방향
 
Goorm소개
Goorm소개Goorm소개
Goorm소개
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
 

More from Kyuhyun Byun

More from Kyuhyun Byun (14)

성장하는 엔지니어가 되는 법- 주니어편.pptx
성장하는 엔지니어가 되는 법- 주니어편.pptx성장하는 엔지니어가 되는 법- 주니어편.pptx
성장하는 엔지니어가 되는 법- 주니어편.pptx
 
성장하는 서버 개발자 되기 - Wanted Livetalk
성장하는 서버 개발자 되기 - Wanted Livetalk성장하는 서버 개발자 되기 - Wanted Livetalk
성장하는 서버 개발자 되기 - Wanted Livetalk
 
RDS에서 Aurora PostgreSQL Migration한 후기
RDS에서 Aurora PostgreSQL Migration한 후기RDS에서 Aurora PostgreSQL Migration한 후기
RDS에서 Aurora PostgreSQL Migration한 후기
 
Start Serverless with Golang!
Start Serverless with Golang!Start Serverless with Golang!
Start Serverless with Golang!
 
RDS에서 Aurora PostgreSQL 마이그레이션하기
RDS에서 Aurora PostgreSQL 마이그레이션하기RDS에서 Aurora PostgreSQL 마이그레이션하기
RDS에서 Aurora PostgreSQL 마이그레이션하기
 
CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기
 
Serverless websocket 톺아보기
Serverless websocket 톺아보기Serverless websocket 톺아보기
Serverless websocket 톺아보기
 
Native addon을 포함하여 Node.js + Typescript + Serverless 빌드 및 배포하기
Native addon을 포함하여 Node.js + Typescript + Serverless 빌드 및 배포하기Native addon을 포함하여 Node.js + Typescript + Serverless 빌드 및 배포하기
Native addon을 포함하여 Node.js + Typescript + Serverless 빌드 및 배포하기
 
0원으로 시작하는 서버리스 데이터 수집 및 분석
0원으로 시작하는 서버리스 데이터 수집 및 분석0원으로 시작하는 서버리스 데이터 수집 및 분석
0원으로 시작하는 서버리스 데이터 수집 및 분석
 
포털 검색어 순위 수집 및 분석 후기
포털 검색어 순위 수집 및 분석 후기포털 검색어 순위 수집 및 분석 후기
포털 검색어 순위 수집 및 분석 후기
 
ALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + Lambda
 
Serverless framework와 CircleCI를 통한 NoOps 맛보기
Serverless framework와 CircleCI를 통한 NoOps 맛보기Serverless framework와 CircleCI를 통한 NoOps 맛보기
Serverless framework와 CircleCI를 통한 NoOps 맛보기
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정
 
Ec2 docker docker-compose
Ec2 docker docker-composeEc2 docker docker-compose
Ec2 docker docker-compose
 

당근마켓 고언어 도입기, 그리고 활용법

  • 1. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 당근마켓의 고언어 도입기, 그리고 활용법 당근마켓 | Software Engineer | 변규현
  • 2. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 발표자 소개 • 당근마켓 채팅플랫폼 개발자 • AWS Serverless Hero • Go언어를 주로 사용함 • 개발을 잘하고 싶어함
  • 3. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 1년 전 서버 상황(2019.06)
  • 4. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 1년 전 서버 상황(2019.06) Rails Server PostgreSQL Redis Memcached LB
  • 5. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
  • 6. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현
  • 7. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 만약 Rails Server에 문제가 있다면? Rails Server PostgreSQL Redis Memcached LB
  • 8. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 우리가 원하는 상황 PostgreSQL Redis Memcached LB Rails Server Chatting Feed Image Chatting DB Feed DB Image DB
  • 9. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 피드는 나와야한다. 채팅을 통해 거래는 해야한다. 알림은 보내야한다. 가입은 해야한다. … 곧, 각 서비스 도메인 별 간섭이 적어야 한다.
  • 10. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 마이크로서비스 도입을 결정
  • 11. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 무엇으로 개발하지?
  • 12. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 Node.js는 개발자가 많아요 우린 Rails를 잘해요 역시 Java가 안정적이죠 … 근데 고언어는 어때요?
  • 13. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 고언어는 빠르대요 CLI 만들기 좋대요 고루틴 좋다고 들었어요 K8s 관련된 라이브러리는 고로 개발한대요 컴파일 언어래요 … 그리고 고언어해봤는데 해볼만해요
  • 14. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 그럼 작은 서비스를 개발하고 생각해보죠!
  • 15. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 그렇게 나온 이미지 플랫폼 Big Picture by Zzerjae
  • 16. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 개발 및 적용기간 1개월
  • 17. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 현재 CPU 및 메모리 사용량(1000만 MAU 기준)
  • 18. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 그리고 고언어 플랫폼들
  • 19. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 이미지 채팅 위치정보 인증 사내 CLI 미디어 알림 Audit … 무지 많아요
  • 20. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 고언어를 사용하며 느낀 장점 • 가볍다. 빌드가 빠르다. • 빌드된 Binary 하나만 있으면 된다.(10~30MB 정도) • 테스트 코드가 짜기 쉽다 • 프로파일링 도구가 잘 되어 있다(pprof) • 문법이 간결하다. • 좀 더 깊은 개발이 가능하다. 기본 io, network 라이브러리의 옵션만 보더라도 최적화에 대한 고민을 할 수 있다. • 빠르게 개발할 수 있다. 불필요한 코드가 적다 (필요한 경우에만 Duck Typing, Interface, Type Embedding을 사용함) • 컴퓨팅 자원을 효율적으로 관리한다. CPU, Memory의 사용량이 다른 GC 언어에 비해 현저히 적다.
  • 21. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 고생한 부분도 있었어요 😊
  • 22. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 고생한 점 • Golang 을 처음 배우는 분들은 적응 기간이 필요 • 익숙한 언어를 사용하지 않는 것에 대한 고통 • 초창기에는 일정한 프로젝트 구조를 가지지 않음 • 개발 할 때마다 방식이 달라짐 • 해오던 언어에 따라 패턴이 미묘하게 다름 • 심리적 압박 • 고언어라 늦게 개발되는거 아닌가? • 레일즈나 Nodejs면 더 빨리 개발하지 않나?
  • 23. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 한 번 어떻게 쓰는지 살펴볼까요?
  • 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를 통해 서비스 배포 적용
  • 26. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 기여하기
  • 27. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 팀이 모두 고언어를 쓰니 서로 도와가며 개발하고 있어요
  • 28. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 사내 CLI로 개발환경 세팅하기
  • 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
  • 31. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 생각보다 큰 고생은 아니었어요 😊
  • 32. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 고언어 쓸만하죠? 다들 시작해봐요 :)
  • 33. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 에서 함께할 분을 찾고 있어요😊 dngn.kr/join-us-dev
  • 34. 2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현2020.11.24 | 당근마켓 고언어 활용법 | 어쩌다 밋업 제주 | 변규현 감사합니다! Email: novemberde1@gmail.com Blog: novemberde.github.io Github: github.com/novemberde