igaworks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: aws 파트너...

Post on 14-Apr-2017

5.292 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DevOps on AWSIGAWorks

백정상

IGAWorks

이야기 하고 싶은 내용

DevOps

데브옵스(DevOps, 개발(Development)과 운영(Operations)의 합성어), 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발방법론. 데브옵스는 소프트웨어 개발조직과 운영조직간의 상호 의존적 대응이며 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발및 배포하는 것을 목적으로 한다.

https://ko.wikipedia.org/wiki/데브옵스

개발자 혼자서

단기간

분석 서비스 패스트 프로토타이핑

AWS를 활용해 어떻게 해낼 수 있었는지

지난 5월

애드브릭스를 사용하고 싶은데

저희는 커머스 앱이거든요

딥링크 트래킹을 통해서

상품 광고에 대한 광고 효과를 알고 싶습니다

이런 기능을 제공해주실 수 있나요?

2주 안에

그런데 당시 우리 팀 상황

잉여 개발인력이 팀장밖에 안 남은 상황

주회야코 인생

하지만 광고주님이 원한다면바로 드려야지요

광고주님이 원하는 것

모바일 기기

광고 클릭 딥 링킹

이 모든 과정의 트래킹 솔루션

엑셀 형식의 리포트

SDK가 필요할 것 같고

이벤트 수집할 백엔드를 개발해서

수집한 이벤트를 저장하고

저장한 데이터를 어딘가에 올려서

데이터 분석을 해야겠군

그리고 데이터는 빅데이터일 가능성이 높네

나 혼자 다 구현???

더 이상의 멘붕은 그만

어떻게 개발해야 할까

AWS 매니지드 서비스를 최대한 활용한다

문서화를 꼭 진행한다

테스트 코드는 무조건 작성하며 진행한다

개발 -> 테스트 -> 배포가 자동화 되었으면 좋겠다

혼자 개발하니까 CI는 필요 없을 것 같다

서비스 모니터링을 잘 갖춰야겠다

개발 환경

Node.js 0.12.x + express + mocha

WebStorm

MSSQL

Github

Confluence

SDK와 WAS부터 만들자

SDK는 iOS / Android

앱에서 중요한 이벤트가 발생하면 서버로 전송

SQLite를 이용 오프라인 스토리지 구현

이벤트 유실 최소화

WAS는 Node.js + express.js로 일단 로컬에서 구현

배포 스크립트가 있었지만, EC2를 그냥 다 구성해서 쓰고 싶지 않았음

Tokyo

VPC

SDK DNS App Event Tracking API

AWS에서 사용한 솔루션

코드 관리는 그냥 GitHub 쓰자

MS Azure의 Cloud Service 같은 게 있음 좋겠다

AWS가 알아서 관리해주는 데이터베이스를 쓰고 싶다

데이터는 S3에 다 때려 넣어야지

Elastic Beanstalk

다 알아서 해줘요코드 배포EC2 인스턴스 설정오토 스케일링로드 밸런싱방화벽VPC롤링 업데이트스테이징모니터링로깅

Elastic Beanstalk에서 Node.js 지원

Eb-cli를 이용해서 커맨드라인으로 서비스 환경설정 및 배포

개발, 스테이징, 라이브 단계의 서비스들로 구성

쾌속으로 WAS를 구현

Tokyo

VPC

SDK DNS App Event Tracking API

DynamoDB

이전에는 MongoDB를 주로 사용

DynamoDB는 처음 써봄

써보니 read/write 모두 매우 빠름

한 자릿수 레이턴시

Throughput 조절 외엔 불편함을 느끼지 못함

딥링크의 컨버전 정보를 기기별로 read/write

Tokyo

VPC

SDK DNS

App Event Tracking API App ConversionStorage

S3

S3 throughput을 고려해

5분 동안 로그를 적재했다가 upload

Static website hosting 최고

실질적인 데이터레이크 역할

Tokyo

VPC

SDK DNS

App Event Tracking API

App ConversionStorage

App EventStorage

AWS Lambda

원래 구성안은Beanstalk -> S3 -> SQS -> Worker -> RedShift

어차피 데이터가 5분마다 적재되는데, 서버 돌리기 아깝다마침 람다가 Node.js만을 지원, 바로 적용코드 작성 후 업로드 하면 끝초단위 과금이라는 신개념!100만 요청은 공짜

마이크로 배치 워커 역할 담당

RedShift

PostgreSQL 호환 데이터 웨어하우스

SQL 형태의 쿼리가 가능

매우매우 빠름

S3에서 데이터 load/unload

다양한 데이터형식 지원

딥링크 성과 분석에 사용

Tokyo

vpc_adbrix_commerce

SDK DNS

App Event Tracking API

App Conversion Storage

App EventStorage

North Virginia

App Event Storage

App Event MicrobatchLoader

App Event AnalysisCross RegionReplication

내가한것코드 작성

테스트

AWS 솔루션 학습

AWS가한것코드 배포

EC2 인스턴스 관리

로드 밸런싱

오토 스케일링

보안

VPC

서비스 이벤트 통지

서비스 모니터링

로그수집 및 관리

스테이징

롤링 업데이트

데이터 적재

데이터 분석

헬스 체크

이 모든걸 구현하는데 든 시간

주말출근 포함해서10일

꿀팁

BeanStalk에서 사용하는 로드밸런서 쉽게 찾기

라이브중인 서비스 Tag 변경하는 방법

크로스 리전 리플리케이션이 더 싸다

Serverless가 과연 언제나 답인가

We’re hiring!jason@igaworks.com

top related